如何将Terraform字典中的对象扩展为Map而非数组?
Terraform 转换Map对象为扩展Map而非数组的解决方案
问题核心
你当前使用列表推导式(方括号[])处理source-map,最终生成了数组结构。要得到目标Map结构,需要改用Terraform的Map推导式(大括号{})。
修改后的代码
locals { source-map = { foo = { name = "George" }, bar = { name = "Sally" } } enriched-map = { for k, v in local.source-map : k => { name = v.name, lower_name = lower(v.name) } } } output "enriched-map" { value = local.enriched-map }
关键修改说明
- 把原代码中包裹推导逻辑的方括号
[]替换为大括号{},明确声明要生成Map类型 - 使用
k => <value>的Map推导语法:指定每个键值对的键为原Map的键k,值为扩展后的对象
执行结果
修改后输出的enriched-map将符合你的期望:
enriched-map = { "bar" = { "lower_name" = "sally" "name" = "Sally" }, "foo" = { "lower_name" = "george" "name" = "George" } }
内容的提问来源于stack exchange,提问作者RQDQ
相关产品推荐
相关产品推荐

