我想使用 Terraform 创建 AWS SSM 参数,并将参数作为输入变量传入。
我看到有一个 for_each 功能,但是如何将其应用于 terraform 资源中的顶级属性?从文档中,for_each 的使用似乎仅限于不能在资源的顶级属性上工作,我误解了吗?
这就是我想要完成的:
主文件
resource "aws_ssm_parameter" "ssm_parameters" {
for_each = var.params
content {
name = name.value
type = "String"
overwrite = true
value = paramValue.value
tags = var.tags
lifecycle {
ignore_changes = [
tags,
value
]
}
}
}
变量.tfvariable "params" {
default = [
{
name = "albUrl"
paramValue = "testa"
},
{
name = "rdsUrl1"
paramValue = "testb"
},
{
name = "rdsUrl2"
valparamValueue = "testc"
},
]
}
最佳答案
您可以使用 for each,但您需要修改其语法并修复 var.params
中的语法:
variable "params" {
default = [
{
name = "albUrl"
paramValue = "testa"
},
{
name = "rdsUrl1"
paramValue = "testb"
},
{
name = "rdsUrl2"
paramValue = "testc"
},
]
}
然后为每个使用,并创建 3 个 ssm 参数:resource "aws_ssm_parameter" "ssm_parameters" {
for_each = {for v in var.params: v.name => v.paramValue}
type = "String"
name = each.key
value = each.value
overwrite = true
}
在上面,您必须将列表( map )投影到 map ,因为 for_each
需要它。
关于amazon-web-services - 使用 Terraform for_each 创建动态资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63210077/