我正在使用 terraform 模块管理 AWS lambda 函数。现在我想添加dead_letter_config其中一个 lambda 函数,但保持其他函数不变。
我正在尝试将dead_letter_config字段(在资源中是可选的aws_lambda_function)添加到模块中,但我找不到如何使dead_letter_config字段仅在特定的 lambda 函数中可用,并在其他调用者中忽略该字段。
我的 terraform 是 v0.12.28,所以我尝试null在变量上使用默认值。
resource "aws_lambda_function" "lambda" {
...
dead_letter_config {
target_arn = var.dead_letter_config_target
}
Run Code Online (Sandbox Code Playgroud)
variable "dead_letter_config_target" {
default = null
type = string
}
Run Code Online (Sandbox Code Playgroud)
但fieldtarget_arn下需要field dead_letter_queue,所以terraform plan失败。
Error: "dead_letter_config.0.target_arn": required field is not set
Run Code Online (Sandbox Code Playgroud)
有没有什么好方法可以有条件地忽略整个字段?
是的。您可以为此使用动态块。基本上,当dead_letter_config_target为 null 时,dead_letter_config不会创建任何内容。否则,dead_letter_config将建造一个街区。
例如,修改后的代码可以是:
resource "aws_lambda_function" "lambda_tf" {
# other attributes
dynamic "dead_letter_config" {
for_each = var.dead_letter_config_target != null ? toset([1]) : toset([])
content {
target_arn = var.dead_letter_config_target
}
}
}
Run Code Online (Sandbox Code Playgroud)
聚苯乙烯
对于 DLQ,您显然需要在 lambda 执行角色中设置权限。
| 归档时间: |
|
| 查看次数: |
1831 次 |
| 最近记录: |