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

如何在AWS EKS Terraform模块中复用本地用户列表?

解决方案

要复用local.users列表同时满足两个配置项的需求,可以通过Terraform的for表达式和字符串处理函数,从ARN中提取用户名,自动生成aws_auth_users所需的结构,无需重复编写每个用户的配置。

修改后的完整代码

locals {
  users = tolist([
    "arn:aws:iam::xxx:user/env/test/user1",
    "arn:aws:iam::xxx:user/env/test/user2",
    "arn:aws:iam::xxx:user/user3"
  ])
}

# Module EKS
module "eks" {
  source  = "terraform-aws-modules/eks/aws"
  version = "~> 19.0"

  cluster_name    = "eks"
  cluster_version = "1.24"

  cluster_endpoint_private_access = true
  vpc_id     = module.vpc.vpc_id
  subnet_ids = module.vpc.private_subnets
  # 直接复用local.users列表
  kms_key_administrators = local.users
  enable_irsa = true
  create_kms_key = true
  create_cluster_security_group = false
  cluster_security_group_id = aws_security_group.mysg.id

  eks_managed_node_group_defaults = {
    disk_size = 100
  }
  create_aws_auth_configmap = false
  manage_aws_auth_configmap = true

  # 通过for表达式自动生成aws_auth_users结构
  aws_auth_users = [
    for arn in local.users : {
      userarn  = arn
      # 从ARN中提取最后一段作为用户名
      username = split("/", arn)[length(split("/", arn)) - 1]
      groups   = ["system:masters"]
    }
  ]

  eks_managed_node_groups = {
    general = {
      desired_size = 4
      min_size     = 2
      max_size     = 6

      labels = {
        env = "test"
      }

      instance_types = ["t3.small"]
      capacity_type  = "ON_DEMAND"
    }
  }
}

关键说明

  1. kms_key_administrators配置:直接引用local.users即可,因为该参数接受IAM ARN列表,与我们定义的格式完全匹配。
  2. aws_auth_users自动生成:
    • 使用for arn in local.users遍历所有ARN
    • 通过split("/", arn)将ARN按斜杠分割成数组,取数组最后一个元素作为用户名,适配不同路径下的IAM用户(比如带env/test/前缀的用户)
    • 统一设置groups为["system:masters"],如果需要不同用户对应不同组,可以在locals里定义更复杂的结构(比如包含ARN和组的对象列表),再调整for表达式逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 04:42:31