我们的 AWS 基础设施中有不同的环境,这些环境存储在 CloudFormation 导出中。我每天自动关闭开发环境,并且脚本检查环境中的任何 EC2 上是否存在特定标签。我想以这样的方式编写我的 TF:如果“环境”是“dev”,我们创建一个值为“whatever”的标签,否则该值为空。这是我到目前为止所拥有的:
data "aws_cloudformation_export" "envshort" {
name = "${var.mycode}—EnvShort"
}
tags = merge(
{
scheduler-policy = data.aws_cloudformation_export.envshort.value == "dev" ? "weekdays" : ""
},
local.tags,
)
当我运行我的计划时,什么也没有创建,似乎就这样消失了。
当然当我这样做时:
tags = merge(
{
scheduler-policy = "weekdays"
},
local.tags,
)
一切都按预期进行。所以我的问题是:我可以这样做吗?我的语法是错误的,还是不可能。
我终于想通了,在Mark B的一些提示下,以及由Marcin和Kyle Gibson提供的“terraform中的条件标签”的答案,我能够编写解决方案。
这是我想出的解决方案:
tags = merge(
data.aws_cloudformation_export.envshort.value == "dev" ? {
"eng-scheduler-policy" = ""
} :
{
"eng-scheduler-policy" = "weekdays"
},
local.tags,
)