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

Terraform循环遍历含可选键对象时属性不存在报错问题咨询

Terraform遍历可选属性对象报错解决方案

问题原因

直接访问对象不存在的属性会触发Terraform校验报错,你遇到的报错就是因为second对应的子对象没有定义specialkeys属性,直接调用v.specialkeys触发了属性不存在的校验逻辑。

解决方案

使用Terraform内置的try()函数处理可选属性,当属性不存在时返回空列表作为默认值,即可避免内层循环报错。

修正后代码如下:

data = flatten([
  for k, v in var.foobars : [
    for sk in try(v.specialkeys, []) : {
        special = sk,
        foo = k
    }
  ]
])

逻辑说明

  • try(v.specialkeys, [])会优先尝试读取当前对象的specialkeys属性,如果属性不存在、读取失败,就返回空列表[]
  • 内层循环遍历空列表时不会生成任何元素,flatten处理后也不会产生冗余条目
  • 最终生成的data结果符合预期,只会包含first对应的三个对象,不会产生second相关的无效数据

内容的提问来源于stack exchange,提问作者A Akrm

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 13:06:04