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

Terraform如何遍历嵌套map为name数组元素批量追加固定后缀

Terraform 嵌套Map遍历为数组元素追加后缀实现方案

你可以通过Terraform的嵌套for表达式直接完成结构转换,不需要依赖额外自定义函数,实现逻辑如下:

完整实现代码

将原始数据和转换逻辑统一放在locals块中即可:

locals {
  # 原始嵌套Map数据
  school = {
    "class1" = {
      "student" = {
        "name" : ["J", "B"]
      }
    }
    "class2" = {
      "student" = {
        "name" : ["Y", "X"]
      }
    }
  }

  # 定义需要追加的统一后缀
  append_value = "appendValue"

  # 转换完成的目标结构
  school_with_suffix = {
    for class_name, class_info in local.school : class_name => {
      student = {
        name = [for stu_name in class_info.student.name : "${stu_name}-${local.append_value}"]
      }
    }
  }
}

逻辑说明

  • 外层for循环遍历最外层school下的所有班级键值对,保留原有班级key(class1、class2)不做修改
  • 内层保留student固定层级,对student.name数组做列表推导式遍历,直接通过字符串拼接给每个姓名元素追加指定后缀
  • 转换完成的local.school_with_suffix完全匹配你需要的目标结构,不会修改原始school数据

结果验证

你可以通过output块输出转换后的结果做校验:

output "final_school_structure" {
  value = local.school_with_suffix
}

执行terraform plan后即可看到输出结果和目标结构完全一致。

兼容扩展写法

如果后续student层级下除了name字段还会新增其他属性,建议用merge函数保留原有字段,只覆盖修改name数组,避免新增字段丢失:

school_with_suffix = {
  for class_name, class_info in local.school : class_name => {
    student = merge(
      class_info.student,
      {
        name = [for stu_name in class_info.student.name : "${stu_name}-${local.append_value}"]
      }
    )
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 13:06:30