terraform:销毁期间的 lambda 调用
terraform: lambda invocation during destroy
我在我们的 terraform 构建环境中有 lambda 调用:
data "aws_lambda_invocation" "this" {
count = var.invocation == "true" ? 1 : 0
function_name = aws_lambda_function.this.function_name
input = <<JSON
{
"Name": "Invocation"
}
JSON
}
问题:该函数不仅在创建 ("apply") 期间被调用,而且在删除 ("destroy") 期间也会被调用。如何仅在创建期间调用它?我考虑过检查 lambda 中的环境变量(也许 TF 在这里添加进程名称或类似的名称),但我希望有更好的方法。
- 值得检查是否可以使用
-var 'lambda_xxx=execute'
选项,同时 运行 使用 terraform 命令检查是否需要执行 lambda 代码 terraform docs
- 使用在执行命令时通过命令行传入的变量
lambda_xxx
,您可以检查 terraform 代码是否要 运行 lambda 代码。
- 以下代码仅在计数为 1 时才创建 waf
resource "aws_waf_rule" "wafrule" {
depends_on = ["aws_waf_ipset.ipset"]
name = "${var.environment}-WAFRule"
metric_name = "${replace(var.environment, "-", "")}WAFRule"
count = "${var.is_waf_enabled == "true" ? 1 : 0}"
predicates {
data_id = "${aws_waf_ipset.ipset.id}"
negated = false
type = "IPMatch"
}
}
- 变量在
variables.tf
文件中声明
variable "is_waf_enabled" {
type = "string"
default = "false"
description = "String value to indicate if WAF/API KEY is turned on or off (true/any_value)"
}
- 当您 运行 命令时,除 true 之外的任何值都被视为 false,因为我们只是检查字符串是否为 true。
- 同样,您可以为您的 lambda 执行此操作。
我在我们的 terraform 构建环境中有 lambda 调用:
data "aws_lambda_invocation" "this" {
count = var.invocation == "true" ? 1 : 0
function_name = aws_lambda_function.this.function_name
input = <<JSON
{
"Name": "Invocation"
}
JSON
}
问题:该函数不仅在创建 ("apply") 期间被调用,而且在删除 ("destroy") 期间也会被调用。如何仅在创建期间调用它?我考虑过检查 lambda 中的环境变量(也许 TF 在这里添加进程名称或类似的名称),但我希望有更好的方法。
- 值得检查是否可以使用
-var 'lambda_xxx=execute'
选项,同时 运行 使用 terraform 命令检查是否需要执行 lambda 代码 terraform docs - 使用在执行命令时通过命令行传入的变量
lambda_xxx
,您可以检查 terraform 代码是否要 运行 lambda 代码。 - 以下代码仅在计数为 1 时才创建 waf
resource "aws_waf_rule" "wafrule" {
depends_on = ["aws_waf_ipset.ipset"]
name = "${var.environment}-WAFRule"
metric_name = "${replace(var.environment, "-", "")}WAFRule"
count = "${var.is_waf_enabled == "true" ? 1 : 0}"
predicates {
data_id = "${aws_waf_ipset.ipset.id}"
negated = false
type = "IPMatch"
}
}
- 变量在
variables.tf
文件中声明
variable "is_waf_enabled" {
type = "string"
default = "false"
description = "String value to indicate if WAF/API KEY is turned on or off (true/any_value)"
}
- 当您 运行 命令时,除 true 之外的任何值都被视为 false,因为我们只是检查字符串是否为 true。
- 同样,您可以为您的 lambda 执行此操作。