变量: ingress_ports_udp是带有逗号分隔值的字符串类型。ingress_cidr_udp是带有逗号分隔值的字符串类型。
代码:
dynamic "ingress" {
iterator = rule
for_each = zipmap(split(",", var.ingress_ports_udp),split(",", var.ingress_cidr_udp)) != "" ? zipmap(split(",", var.ingress_ports_udp),split(",", var.ingress_cidr_udp)) : ""
content {
from_port = rule.key
to_port = rule.key
protocol = "udp"
cidr_blocks = rule.value
}
}问题:获取表达式zipmap的错误(拆分( ",",var.ingress_ports_udp),拆分(“,”,var.ingress_cidr_udp)) !=“?zipmap(split(",",var.ingress_ports_udp),split(",",var.ingress_cidr_udp)):“
"msg": "Failed to validate Terraform configuration files:\r\n\u001b[31m\n\u001b[1m\u001b[31mError: \u001b[0m\u001b[0m\u001b[1mInconsistent conditional result types\u001b[0m\n\n\u001b[0m on security-group.tf line 9, in resource \"aws_security_group\" \"default-sg\":\n 9: for_each = zipmap(split(\",\", var.ingress_ports_udp),split(\",\", var.ingress_cidr_udp)) != \"\" ? \u001b[4mzipmap(split(\",\", var.ingress_ports_udp),split(\",\", var.ingress_cidr_udp)) : \"\"\u001b[0m\n\u001b[0m\nThe true and false result expressions must have consistent types. The given\nexpressions are map of string and string, respectively.\n\u001b[0m\u001b[0m\n\u001b[31m\n\u001b[1m\u001b[31mError: \u001b[0m\u001b[0m\u001b[1mInconsistent conditional result types\u001b[0m\n\n\u001b[0m on security-group.tf line 20, in resource \"aws_security_group\" \"default-sg\":\n 20: for_each = zipmap(split(\",\", var.ingress_ports_udp),split(\",\", var.ingress_cidr_udp)) != \"\" ? \u001b[4mzipmap(split(\",\", var.ingress_ports_udp),split(\",\", var.ingress_cidr_udp)) : \"\"\u001b[0m\n\u001b[0m\nThe true and false result expressions must have consistent types. The given\nexpressions are map of string and string, respectively.\n\u001b[0m\u001b[0m\n"请求:如果zipmap(拆分( ",",var.ingress_ports_udp),拆分(“,”,var.ingress_cidr_udp))为空,即如果ingress_ports_udp和ingress_cidr_udp字符串类型为空,则不希望运行动态入口块。请帮帮忙。
发布于 2021-07-27 21:07:39
不能对false使用空字符串,因为它的类型与true条件的结果不同。你可以向以下机构查询:
for_each = zipmap(split(",", var.ingress_ports_udp),split(",", var.ingress_cidr_udp)) != "" ? zipmap(split(",", var.ingress_ports_udp),split(",", var.ingress_cidr_udp)) : {}https://stackoverflow.com/questions/68545598
复制相似问题