换新笔记本配置AWS EKS后执行kubectl命令遇sts:AssumeRole权限错误求助
解决IAM角色AssumeRole权限拒绝问题
核心原因
当前使用的IAM用户<AWS_USERNAME>未被授权扮演指定的IAM角色role_name,导致kubectl通过AWS CLI获取凭证时失败。
解决步骤
修改目标IAM角色的信任策略
登录AWS控制台,进入IAM服务,找到角色role_name:- 切换到「信任关系」标签页,点击「编辑信任策略」
- 在策略的
Statement数组中添加允许当前用户扮演该角色的规则,示例如下:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::xxxxxxxxxxxx:user/<AWS_USERNAME>" }, "Action": "sts:AssumeRole" } ] }保存策略后,等待1-2分钟让权限生效。
验证当前用户的IAM权限
确认当前IAM用户的权限策略中没有禁止sts:AssumeRole操作,且存在允许对arn:aws:iam::xxxxxxxxxxxx:role/role_name执行该操作的规则(如果用户有附加的权限策略)。重新生成kubeconfig配置
重新执行以下命令更新kubectl配置:aws eks update-kubeconfig \ --region us-west-2 \ --name my-app-prd \ --role-arn arn:aws:iam::xxxxxxxxxxxx:role/role_name测试权限
再次运行kubectl get svc验证是否能正常访问EKS集群资源。
额外排查点
- 检查命令中填写的角色ARN、用户ARN是否存在拼写错误(比如账号ID、角色名、用户名)
- 确认当前AWS CLI使用的是正确的用户配置(可通过
aws configure list查看当前配置的用户信息)
内容的提问来源于stack exchange,提问作者Red Virus
相关产品推荐
相关产品推荐

