【发布时间】:2020-01-11 11:26:02
【问题描述】:
我正在使用 Terraform 中的 aws_cloudformation_stack 资源来收集有关 cloudformation 安全组堆栈的 ID,如下所示:
data "aws_cloudformation_stack" "vpc-prod-sg" {
name = "vpc-prod-sg"
}
我在 main.tf 文件中定义了一个列表,其名称代表这些安全组,如下所示:
sg_ingress = ["DevMyAppLinkingSecurityGroup", "DevDBLinkingSecurityGroup"]
在我的模块中,我将 Cloufformation 堆栈中的值分配给列表中的名称:
security_groups = [contains(var.sg_ingress, "DevMyAppLinkingSecurityGroup") ? "${data.aws_cloudformation_stack.vpc-prod-sg.outputs["DevMyAppLinkingSecurityGroup"]}" : 0, contains(var.sg_ingress, "DevDBLinkingSecurityGroup") ? "${data.aws_cloudformation_stack.vpc-prod-sg.outputs["DevDBLinkingSecurityGroup"]}" : 0]
但是,当我运行 terraform 计划时,列表中会填充我想要的值,但它还会向列表中添加一个附加条目,其值为 0。它看起来像这样:
+ security_groups = [
+ "0",
+ "sg-05443559898348",
+ "sg-05435345443545593"
我很困惑这个零是从哪里来的,或者我该如何处理它。有没有人遇到过类似的事情?
【问题讨论】:
-
如果第一个三元组解析为 false,那么列表的第 0 个元素将是
0。这似乎是最可能的原因。
标签: amazon-cloudformation terraform terraform-provider-aws