如何在Terraform动态块的for_each中添加条件?解决迭代类型错误
解决Terraform Dynamic块for_each数值类型报错问题
问题原因
Terraform的dynamic块要求for_each参数必须是可迭代集合类型(如列表、集合、映射),你当前用三元表达式返回数值1或0,不属于可迭代类型,因此触发报错:
错误:无法在for_each中使用数值类型,需传入可迭代集合
修复方案
将三元表达式改为返回空列表(不创建块)或包含单个元素的列表(创建块),让for_each可以迭代:
dynamic "request_uri_condition" { for_each = delivery_rule.value.request_uri_condition_operator != "" ? [1] : [] content { operator = delivery_rule.value.request_uri_condition_operator match_values = delivery_rule.value.request_uri_condition_match_values } }
补充说明
- 当
request_uri_condition_operator不为空时,[1]是一个包含单个元素的列表,for_each会迭代一次,生成对应的request_uri_condition块; - 当值为空时,
[]是空列表,for_each不会迭代,也就不会生成该块,满足你"值为空/null时不执行代码块"的需求。
另外注意:你的variable.tf定义中,对象结构里的字段是request_scheme_conditions_*,但代码中使用的是request_uri_condition_*,如果这是笔误,需要同步修正变量定义或代码中的字段名,避免后续出现未定义属性的错误。
内容的提问来源于stack exchange,提问作者hari989
相关产品推荐
相关产品推荐

