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

Terraform中如何生成符合IAM模块要求的字符串列表映射

解决方案

把原来生成列表的for表达式改成生成map的形式,Terraform中可以通过{ for ... in ... : key => value }的语法直接构建符合要求的映射结构:

locals {
  proj_bindings = {
    for role in var.my_list_of_roles : role => [for sa in google_service_account.service_accounts : sa.member]
  }
}

说明

  • 原代码用[]包裹for表达式,生成的是列表类型,每个元素是仅含单个角色键的小map,不符合projects_iam模块要求的map(list(string))类型。
  • 修改后用{}包裹for表达式,遍历var.my_list_of_roles中的每个角色作为map的键,对应的值是所有服务账号成员组成的列表,最终生成的就是单map结构,每个角色对应一组成员列表,完全匹配模块参数要求。

生成的结果结构示例:

proj_bindings = {
  "roles/role1" = [
    "serviceAccount:xxx@xxx.iam.gserviceaccount.com",
    "serviceAccount:yyy@yyy.iam.gserviceaccount.com",
  ]
  "roles/role2" = [
    "serviceAccount:xxx@xxx.iam.gserviceaccount.com",
    "serviceAccount:yyy@yyy.iam.gserviceaccount.com",
  ]
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 05:23:39