GitHub Action调用AWS CodePipeline报sts:AssumeRole无权限如何解决?
修复步骤
- 第一步:核对权限动作拼写
你提到添加的sts:AssumRole为拼写错误,AWS官方正确的STS权限动作是sts:AssumeRole,请先修改你绑定给lms-test用户的IAM策略中的动作名称,确保拼写完全匹配。 - 第二步:核对权限策略的资源配置
你为lms-test用户配置的sts:AssumeRole权限的Resource字段,必须和报错中提示的目标资源ARN完全匹配,参考正确的策略配置片段:
注意:{ "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "替换为你需要Assume的IAM角色完整ARN" }sts:AssumeRole的操作对象只能是IAM角色ARN,如果你误将CodePipeline的ARN填入该权限的资源字段,也会触发权限报错。如果你是需要直接触发CodePipeline执行,对应权限动作为codepipeline:StartPipelineExecution,资源为CodePipeline的ARN。 - 第三步:核对目标角色的信任策略
你需要Assume的IAM角色,必须在自身的信任策略中允许lms-test用户执行AssumeRole操作,参考信任策略配置片段:{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::替换为你的AWS账号ID:user/lms-test" }, "Action": "sts:AssumeRole" } ] } - 第四步:核对附加配置一致性
- 如果你要Assume的角色设置了外部ID校验,请确保你在GitHub Actions配置中传入了正确的外部ID参数
- 核对你使用的AWS账号ID、区域配置,确保和角色、CodePipeline所属的账号、区域完全匹配
- 配置修改后最长可能有2分钟的缓存延迟,建议修改后等待2分钟再重新测试
内容的提问来源于stack exchange,提问作者Guowang
相关产品推荐
相关产品推荐

