Terraform 根据变量创建 AWS 标签和值

问题描述 投票:0回答:1

我们的 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,
)

一切都按预期进行。所以我的问题是:我可以这样做吗?我的语法是错误的,还是不可能。

amazon-web-services terraform tags
1个回答
0
投票

我终于想通了,在Mark B的一些提示下,以及由MarcinKyle Gibson提供的“terraform中的条件标签”的答案,我能够编写解决方案。

这是我想出的解决方案:

tags = merge(
data.aws_cloudformation_export.envshort.value == "dev" ? {
"eng-scheduler-policy" = ""
} :
{
"eng-scheduler-policy" = "weekdays" 
},
local.tags,
)
© www.soinside.com 2019 - 2024. All rights reserved.