Github Actions配置AWS权限报错:sts:AssumeRole未授权及解决需求
解决GitHub Actions中sts:AssumeRole权限报错问题
以下是针对你遇到的sts:AssumeRole权限问题的具体排查和解决步骤:
1. 检查IAM用户的AssumeRole权限
你当前使用AWS_ACCESS_KEY_ID对应的IAM用户,必须被明确允许调用sts:AssumeRole操作,且目标资源为你要扮演的角色(AWS_ROLE_TO_ASSUME的ARN)。给该IAM用户附加如下策略:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::你的AWS账号ID:role/目标角色名称" } ] }
替换其中的你的AWS账号ID和目标角色名称为实际值。
2. 配置目标角色的信任关系
你要扮演的目标角色,必须在信任策略中允许上述IAM用户来扮演它。编辑该角色的信任关系,添加如下内容:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::你的AWS账号ID:user/你的IAM用户名" }, "Action": "sts:AssumeRole" } ] }
同样替换对应的账号ID和IAM用户名。
3. 确认目标角色拥有ECR操作权限
使用role-to-assume后,GitHub Actions会切换到目标角色的身份执行ECR操作,因此需要确保目标角色拥有ECR的完整操作权限,包括但不限于:
ecr:GetAuthorizationTokenecr:BatchCheckLayerAvailabilityecr:GetDownloadUrlForLayerecr:BatchGetImageecr:InitiateLayerUploadecr:UploadLayerPartecr:CompleteLayerUploadecr:PutImage
给目标角色附加包含上述权限的策略即可。
4. 验证参数配置正确性
- 检查
AWS_ROLE_TO_ASSUME的ARN是否完全正确,避免账号ID、角色名拼写错误 - 确认
configure-aws-credentials@v2的参数中,aws-access-key-id和aws-secret-access-key确实属于有权限执行sts:AssumeRole的IAM用户
本地测试验证
可以在本地用AWS CLI验证权限是否正常:
- 用你的IAM用户密钥登录:
aws configure,输入对应的Access Key ID和Secret Access Key - 执行角色扮演命令:
aws sts assume-role --role-arn 目标角色ARN --role-session-name test-session - 如果命令成功返回临时凭证,说明权限配置无误;若失败,根据报错信息进一步排查
内容的提问来源于stack exchange,提问作者Girish Bhutiya
相关产品推荐
相关产品推荐

