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

Terraform中如何将模块创建的IAM用户列表传入用户组模块?

解决Terraform批量创建IAM用户并加入用户组的问题

问题原因

通过for_each = var.finance_users批量创建IAM用户时,module.iam_finance_users会变成映射(map)结构的模块集合,而非单个模块实例。直接访问module.iam_finance_users.iam_user_name会触发错误,因为Terraform无法定位到具体的单个用户实例属性。

解决方法

使用Terraform的values()函数提取所有模块实例,再通过列表推导式获取每个实例的iam_user_name属性,生成符合group_users参数要求的用户名列表。

修改后的用户组模块代码如下:

module "iam_group_finance" {
  source  = "terraform-aws-modules/iam/aws//modules/iam-group-with-policies"
  version = "5.9.1"

  name = "finance"
  # 提取所有批量创建的IAM用户名
  group_users = values(module.iam_finance_users)[*].iam_user_name

  attach_iam_self_management_policy = true
  custom_group_policy_arns = [
    module.iam_read_write_policy.arn,
  ]
}

代码说明

  • values(module.iam_finance_users):将映射类型的模块实例集合转换为列表,包含所有创建的IAM用户模块实例
  • [*].iam_user_name:列表推导式,遍历列表中的每个模块实例,提取其iam_user_name属性,最终生成所有用户名的列表

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 14:05:23