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

Terraform:在for_each循环中动态获取嵌套Map指定键值

解决方案

核心思路是建立env1键与env2键的显式映射关系,通过这个映射在遍历env1时动态关联到对应的env2键值,彻底避免硬编码。

步骤1:添加键映射本地变量

在locals块中新增一个映射,明确指定env1的每个键对应env2的哪个键:

locals {
  env1 = {
    a = {}
    b = {}
  }

  env2 = {
    x = {}
    y = {}
  }

  # 定义env1键到env2键的固定对应关系
  env_key_mapping = {
    a = "x"
    b = "y"
  }
}

步骤2:在资源块中动态关联

两个资源块保持基于local.env1的for_each遍历,通过env_key_mapping动态获取对应env2的键,进而填充id属性:

第一个资源块示例

resource "your_resource_type" "first" {
  for_each = local.env1

  # 动态匹配env2中对应的键值,若env2的x/y有具体属性,可写成local.env2[local.env_key_mapping[each.key]].target_attribute
  id = local.env2[local.env_key_mapping[each.key]]
}

第二个资源块示例

resource "another_resource_type" "second" {
  for_each = local.env1

  id = local.env2[local.env_key_mapping[each.key]]
}

可选:自动映射(适用于键数量一致且顺序固定的场景)

如果env1和env2的键数量完全相同,且默认按顺序对应(比如env1的第一个键对应env2的第一个键),可以用zipmap自动生成映射,省去手动定义的步骤:

locals {
  env_key_mapping = zipmap(keys(local.env1), keys(local.env2))
}

⚠️ 注意:自动映射依赖键的排序,若后续env1或env2的键顺序发生变化,会导致对应关系出错,因此显式映射更适合需要固定对应关系的生产场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 00:05:17