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

Travis-CI部署AWS EKS遇AccessDenied:kubectl命令执行失败求助

问题排查:kubectl apply 执行失败的IAM权限问题

错误信息

"An error occurred (AccessDenied) when calling the AssumeRole operation: User: arn:aws:iam::XXXXXXXXXXXXX:user/username is not authorized to perform: sts:AssumeRole on resource: arn:aws:iam::XXXXXXXXXXXXX:user/username Unable to connect to the server: getting credentials: exec: executable aws failed with exit code 254"

当前配置的IAM策略

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "sts:AssumeRole"
            ],
            "Resource": "arn:aws:iam::XXXXXXXXXXXXX:user/username"
        }
    ]
}

核心问题分析

你当前策略里的Resource填错了——sts:AssumeRole的目标资源是要切换的IAM角色ARN,不是用户自己的ARN,这是权限报错的根本原因。

修正步骤

  1. 获取目标角色ARN:找到你要让该IAM用户切换到的IAM角色,其ARN格式为arn:aws:iam::XXXXXXXXXXXXX:role/目标角色名称。
  2. 更新用户权限策略:将策略中的Resource替换为目标角色的ARN,示例如下:
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "sts:AssumeRole",
            "Resource": "arn:aws:iam::XXXXXXXXXXXXX:role/你的目标角色名"
        }
    ]
}
  1. 配置角色信任关系:确保目标角色的信任策略允许该IAM用户扮演它,示例配置:
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::XXXXXXXXXXXXX:user/username"
            },
            "Action": "sts:AssumeRole"
        }
    ]
}
  1. 验证权限:在CI/CD环境中执行aws sts assume-role --role-arn 目标角色ARN --role-session-name test-session,确认能成功获取临时凭证后,再重新运行kubectl apply -f k8s。

额外注意事项

  • 确认CI/CD环境使用的AWS凭证确实属于该IAM用户,未混用其他账号凭证。
  • 如果目标角色有条件限制(如MFA、IP范围),需确保用户满足这些条件才能切换角色。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 14:00:47