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

从CodeBuild访问EKS集群未授权 配置权限后仍无法解决求助

排查与解决方案

核心问题点

CodeBuild执行aws eks update-kubeconfig时默认会在kubeconfig的认证参数里添加--role标记,触发STS角色代入后生成的ARN为会话格式(arn:aws:sts::账号ID:assumed-role/角色名/会话名),与aws-auth ConfigMap中配置的CodeBuild服务角色原生ARN不匹配,导致EKS鉴权失败。

验证步骤

在buildspec.yml的pre_build阶段新增如下命令,输出当前调用者身份确认ARN格式:

aws sts get-caller-identity

若返回ARN为assumed-role开头的会话格式即可确认问题匹配。

修复方案

方案1(优先推荐)

修改buildspec.yml中的kubeconfig更新命令,禁用自动添加--role参数:

aws eks --region eu-west-2 update-kubeconfig --name <你的集群名称> --role-arn ""

该方案保持aws-auth ConfigMap原有配置不变,仅调整认证逻辑,权限范围可控。

方案2

检查CodeBuild服务角色的信任策略,确认已允许codebuild.amazonaws.com服务代入角色,信任策略示例如下:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "codebuild.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

方案3(不推荐生产使用)

在aws-auth ConfigMap的mapRoles中添加对会话ARN前缀的匹配规则,该方式会放宽权限范围,仅建议测试环境临时验证使用。

效果验证

修改配置后重新运行CodeBuild任务,kubectl get svc命令正常返回集群服务列表即为修复成功。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 15:39:04