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

Terraform动态生成筛选DEV账号ID的list(map)变量实现方法

Terraform 过滤DEV环境账号生成指定格式列表

直接改locals块的逻辑就行,你原来的写法有三个明显问题:

  • 变量名不匹配:你定义的映射叫account_map,代码里引用的是不存在的local.account_group
  • 逻辑冗余:不需要嵌套双层for循环加flatten,单层循环加条件判断完全能满足需求
  • 取值逻辑错误:lookup取到的是账号对应的环境标签字符串,对字符串做循环会把内容拆成单个字符,根本拿不到正确的账号ID

可用配置

如果你的账号源就是account_map,直接用下面的写法:

locals {
  account_map = {
    111111111111 = "DEV"
    222222222222 = "DEV"
    333333333333 = "STG"
    444444444444 = "DEV"
    555555555555 = "PROD"
    666666666666 = "DEV"
  }

  instance_data = [
    for acc_id, acc_env in local.account_map : { id = acc_id }
    if acc_env == "DEV"
  ]
}

如果你的账号列表实际来自module.organization.organization_accounts输出,只需要把遍历对象换成这个数据源,加个标签判断即可:

locals {
  account_map = {
    111111111111 = "DEV"
    222222222222 = "DEV"
    333333333333 = "STG"
    444444444444 = "DEV"
    555555555555 = "PROD"
    666666666666 = "DEV"
  }

  instance_data = [
    for account in module.organization.organization_accounts : { id = account.id }
    if lookup(local.account_map, account.id, "") == "DEV"
  ]
}

执行后输出结果和你预期完全一致:

+ instance_data = [
      + {
          + id = "111111111111"
        },
      + {
          + id = "222222222222"
        },
      + {
          + id = "444444444444"
        },
      + {
          + id = "666666666666"
        }
    ]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 19:54:24