Amazon web services 使用Terraform为每个用户创建动态资源
我想使用Terraform创建AWS SSM参数,参数作为输入变量传入 我看到每个功能都有一个for_,但如何将其应用于地形资源中的顶级属性?从文档中可以看出,for_each的使用似乎仅限于不在资源的顶级属性上工作,我误解了吗 这就是我努力实现的目标: main.tfAmazon web services 使用Terraform为每个用户创建动态资源,amazon-web-services,terraform,Amazon Web Services,Terraform,我想使用Terraform创建AWS SSM参数,参数作为输入变量传入 我看到每个功能都有一个for_,但如何将其应用于地形资源中的顶级属性?从文档中可以看出,for_each的使用似乎仅限于不在资源的顶级属性上工作,我误解了吗 这就是我努力实现的目标: main.tf resource "aws_ssm_parameter" "ssm_parameters" { for_each = var.params content { name
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"
},
]
}
您可以使用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
}
在上述情况下,您必须将列表(映射)投影到映射,因为它是每个的所必需的