Terraform条件表达式类型不一致报错排查求助
问题原因
Terraform的条件表达式强制要求?前后的两个结果必须是相同数据类型。你写的表达式里:
- 条件为真时,
local.domains[0].name返回的是单个字符串(比如"testing-1") - 条件为假时,
local.domains[*].name返回的是字符串元组(也就是列表,比如["testing-1", "testing-2", "testing-3"])
两种结果类型不匹配,所以触发了Inconsistent conditional result types错误。
解决办法
根据你的实际需求选一种调整方式:
方式1:统一返回列表类型
如果希望无论条件真假都输出列表(真时返回仅包含第一个元素的列表,假时返回所有元素的列表),把真分支改成列表格式:
local.test && local.non_test ? [local.domains[0].name] : local.domains[*].name
方式2:统一返回字符串类型
如果希望条件为假时把所有域名拼接成单个字符串输出(比如用逗号分隔),用join函数转换假分支的结果:
local.test && local.non_test ? local.domains[0].name : join(", ", local.domains[*].name)
内容的提问来源于stack exchange,提问作者Datta
相关产品推荐
相关产品推荐

