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

Terraform for_each循环中.与[]访问属性的区别及正确用法

Terraform中.与[]访问属性的差异及使用规范

核心差异

两种写法在访问符合标识符规则的属性时,返回结果完全一致,区别仅在于适用场景:

  • 点访问(.):只能访问键名符合Terraform标识符规则的属性。标识符规则要求键名仅由字母、数字、下划线组成,且不能以数字开头,不能包含特殊字符、空格。如果键名不符合该规则,点访问会直接抛出语法错误。
  • 索引访问([""]):无键名格式限制,无论键名包含特殊字符、空格、以数字开头,都可以正常访问。同时支持动态传入键名,例如你可以通过变量指定要访问的键:each.value[var.target_key],这种动态取值能力是点访问不具备的。

推荐用法

  • 当访问的属性键符合标识符规则时,优先使用点访问写法,代码更简洁易读,是Terraform社区通用的编码规范,你示例中的each.value.name就是更推荐的写法。
  • 只有遇到以下两种场景时,再使用索引访问写法:
    • 属性键名不符合标识符规则,例如你Tags中如果存在created-by这类带横杠的键,只能写each.value.tags["created-by"]
    • 需要动态指定要访问的属性键

内容的提问来源于stack exchange,提问作者vivek mishra

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 08:54:00