根据您链接的文档,标记似乎需要提供:
tags = [
{
key = "Name"
value = "${data.aws_ssm_parameter.environment.value}-ucm-elasticache-serverless"
},
{
key = "Description"
value = "ECS security group for ${var.stack} running on ${local.environment}"
}
]
换句话说,您似乎需要明确定义关键字
key
对于标记密钥和
value
用于标记值。你必须对你想要的其他标签重复类似的内容,但它可能适用于
default_tags
也确保在运行时检查
terraform plan
.
编辑:由于所有标签都需要
钥匙
和
价值
keys,一个新的局部变量
elasticache_serverless_tags
可以定义如下:
locals {
tags = {
Application = var.stack
Owner = var.owner
CostCenter = var.cost_center
Project = var.stack
environmentCode = var.environment_code
Environment = var.environment
Cmdb = var.cmdb
}
elasticache_serverless_tags = [
{
key = "Application"
value = var.stack
},
{
key = "Owner"
value = var.owner
},
{
key = "CostCenter"
value = var.cost_center
},
{
key = "Project"
value = var.stack
},
{
key = "environmentCode"
value = var.environment_code
},
{
key = "Environment"
value = var.environment
},
{
key = "Cmdb"
value = var.cmdb
},
]
}
然后,在资源块中:
tags = toset(concat(local.elasticache_serverless_tags,
[
{
key = "Name"
value = "${data.aws_ssm_parameter.environment.value}-ucm-elasticache-serverless"
},
{
key = "Description"
value = "ECS security group for ${var.stack} running on ${local.environment}"
}
]))
旧的局部变量
tags
必须保持不变,因为它在中被引用
默认标记(_T)
这需要具有地图。
第2版:一种更简单的方法,代码重复更少,如下所示:
locals {
tags = {
Application = var.stack
Owner = var.owner
CostCenter = var.cost_center
Project = var.stack
environmentCode = var.environment_code
Environment = var.environment
Cmdb = var.cmdb
}
elasticsearch_serverless_tags = [for k, v in local.tags : {
key = k
value = v
}]
}
这个
concat
和
toset
将与前面的示例中使用的相同
标签
资源的参数。