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

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:GetAuthorizationToken
  • ecr:BatchCheckLayerAvailability
  • ecr:GetDownloadUrlForLayer
  • ecr:BatchGetImage
  • ecr:InitiateLayerUpload
  • ecr:UploadLayerPart
  • ecr:CompleteLayerUpload
  • ecr: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验证权限是否正常:

  1. 用你的IAM用户密钥登录:aws configure,输入对应的Access Key ID和Secret Access Key
  2. 执行角色扮演命令:aws sts assume-role --role-arn 目标角色ARN --role-session-name test-session
  3. 如果命令成功返回临时凭证,说明权限配置无误;若失败,根据报错信息进一步排查

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 12:28:11