Sag*_*hav 1 amazon-web-services terraform
我正在尝试使用 terraform 代码创建中转网关 VPC 附件,但是,当我执行 terraform 计划时出现以下错误;\nterraform 版本为 0.12
\n错误:-
\n\xe2\x94\x82 Error: Inconsistent conditional result types\n\xe2\x94\x82\n\xe2\x94\x82 on vpn-dynamic\\main.tf line 67, in resource "aws_ec2_transit_gateway_vpc_attachment" "tgw_vpc_attachment":\n\xe2\x94\x82 67: subnet_ids = lower(var.transit_gateway) == "enabled" ? var.tgw_subnet_ids : 0\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\n\xe2\x94\x82 \xe2\x94\x82 var.tgw_subnet_ids is a list of string, known only after apply\n\xe2\x94\x82 \xe2\x94\x82 var.transit_gateway is a string, known only after apply\n\xe2\x94\x82\n\xe2\x94\x82 The true and false result expressions must have consistent types. The given expressions are list of \n\xe2\x94\x82 string and number, respectively.\nRun Code Online (Sandbox Code Playgroud)\nmain.tf:-
\nresource "aws_ec2_transit_gateway_vpc_attachment" "tgw_vpc_attachment" {\n count = lower(var.transit_gateway) == "enabled" ? 1 : 0\n subnet_ids = lower(var.transit_gateway) == "enabled" ? var.tgw_subnet_ids : 0\n transit_gateway_id = lower(var.transit_gateway) == "enabled" ? var.tgw_id : 0\n vpc_id = lower(var.transit_gateway) == "enabled" ? var.vpc_id : 0\n}\nRun Code Online (Sandbox Code Playgroud)\n变量.tf:-
\nvariable "transit_gateway" {\n type = string\n description = "Whether to create Transit gateway or not"\n default = "ENABLED"\n}\nvariable "tgw_subnet_ids" {\n type = list(string)\n description = "Transit gateway subnet Ids"\n default = ["subnet-12345", "subnet-54321"]\n}\nvariable "vpc_id" {\n type = string\n description = "VPC Id"\n default = "vpc-abc123"\n}\nvariable "tgw_id" {\n type = string\n description = "TGW id"\n default = "tgw-12345"\n}\nRun Code Online (Sandbox Code Playgroud)\n在这里,我尝试使用变量“tgw_subnet_ids”作为列表(字符串)以及资源“tgw_vpc_attachment”中的条件,但它不起作用。
\n我相信,terraform 正在寻找的是 True 和 False 评估双方的一致类型。
因此,在您的代码中,正确的计算返回列表类型var.tgw_subnet_ids,错误的计算仅返回整数0。正如您所看到的,两者都不匹配,并且 terraform 出现错误。
如果你想传递 list 的 null 值,你可以使用nulltype https://www.terraform.io/docs/language/expressions/types.html#null
resource "aws_ec2_transit_gateway_vpc_attachment" "tgw_vpc_attachment" {
count = lower(var.transit_gateway) == "enabled" ? 1 : 0
subnet_ids = lower(var.transit_gateway) == "enabled" ? var.tgw_subnet_ids : null
transit_gateway_id = lower(var.transit_gateway) == "enabled" ? var.tgw_id : 0
vpc_id = lower(var.transit_gateway) == "enabled" ? var.vpc_id : 0
}
Run Code Online (Sandbox Code Playgroud)