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

Terraform本地变量转换:生成多资源映射的实现方案求助

解决方案

你可以通过嵌套的for表达式结合flatten函数来实现这个转换,核心思路是遍历每个分组,再遍历该分组下option2的每个元素,为每个元素生成对应的对象,最后将嵌套列表扁平化为一维列表。

实现代码

locals {    
    groups = {
        group1 = { 
            option1 = "Option1 Value Group1"
            option2 = [ "option2_item1", "option2_item2" ]
            option3 = { option3_key1 = "value1", option3_key2 = "value2" }
        }
        group2 = {
            option1 = "Option1 Value Group2"
            option2 = [ "option2_item1" ]
            option3 = { option3_key1 = "value1", option3_key2 = "value2" }
        }
    }

    # 转换后的目标结构
    transformed = flatten([
        for group_name, group_attrs in local.groups : [
            for opt2_item in group_attrs.option2 : {
                result1 = group_name
                result2 = group_attrs.option1
                result3 = opt2_item
                result4 = group_attrs.option3.option3_key1
                result5 = group_attrs.option3.option3_key2
            }
        ]
    ])
}

代码解释

  1. 外层遍历分组:for group_name, group_attrs in local.groups 遍历groups中的每个键值对,group_name是分组名(如group1),group_attrs是分组对应的属性集合。
  2. 内层遍历option2元素:针对每个分组,遍历其option2列表中的每个元素,为每个元素生成一个独立的对象。
  3. 构造目标对象:每个对象的字段直接从对应的属性中取值:
    • result1:当前分组的名称
    • result2:分组的option1值
    • result3:当前遍历的option2列表元素
    • result4/result5:直接取option3中固定键对应的值(如果option3的键不固定,可以用values(group_attrs.option3)[0]和values(group_attrs.option3)[1]按顺序取值)
  4. 扁平化为一维列表:用flatten函数将外层分组生成的嵌套列表合并为一个一维列表,与你期望的输出结构完全匹配。

验证结果

执行terraform console后,输入local.transformed会得到:

[
  {
    "result1" = "group1"
    "result2" = "Option1 Value Group1"
    "result3" = "option2_item1"
    "result4" = "value1"
    "result5" = "value2"
  },
  {
    "result1" = "group1"
    "result2" = "Option1 Value Group1"
    "result3" = "option2_item2"
    "result4" = "value1"
    "result5" = "value2"
  },
  {
    "result1" = "group2"
    "result2" = "Option1 Value Group2"
    "result3" = "option2_item1"
    "result4" = "value1"
    "result5" = "value2"
  },
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 03:15:45