[英]Creating dynamic resources with Terraform for_each
我想使用 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
]
}
}
}
变量.tf
variable "params" {
default = [
{
name = "albUrl"
paramValue = "testa"
},
{
name = "rdsUrl1"
paramValue = "testb"
},
{
name = "rdsUrl2"
valparamValueue = "testc"
},
]
}
您可以使用每个,但您需要修改其语法并在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 ,因为它是for_each
所必需的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.