Terraform中如何获取嵌套Map指定环境首个元素的setting1值
错误原因
你用[0]数字索引的取值方式仅适用于列表/数组类型,而local.environments[var.env]返回的是Map(键值对映射)类型,Map本身没有内置的数字下标索引,因此触发报错。
解决方案
根据你的实际需求,两种实现方式可选:
- 如果你明确知道要取的实例键名,直接按键名索引即可:
# 比如要取dev环境下hello001实例的setting1值 local.environments[var.env]["hello001"].setting1 - 如果你不需要指定键名,只想取当前环境下Map的第一个元素的值,先通过
values()函数将Map的所有值提取为列表,再用下标索引:# 直接取当前环境Map的第一个元素的setting1 values(local.environments[var.env])[0].setting1
注意:Terraform 0.14之前的版本中Map是无序结构,如果你需要稳定的排序结果,可以先对Map的键做字典序排序后再提取值:
# 按Key字典序排序后取第一个元素的setting1,结果稳定可预期 values({ for k, v in sort(keys(local.environments[var.env])) : k => v })[0].setting1
内容的提问来源于stack exchange,提问作者sage
相关产品推荐
相关产品推荐

