You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 13:55:41