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

GitHub Actions推送Docker镜像遇403错误,IAM策略排查求助

解决GitHub Actions推送ECR镜像时的403 Forbidden错误

常见问题修复方案

1. 补充必要的ECR权限

当前的IAM策略缺少部分关键权限,导致无法完成镜像推送流程。需要添加以下权限:

  • ecr:DescribeRepositories:用于验证目标仓库是否存在
  • ecr:GetRepositoryPolicy:获取仓库权限策略,部分场景下buildx会用到

更新后的IAM策略如下:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ecr:CompleteLayerUpload",
                "ecr:GetAuthorizationToken",
                "ecr:UploadLayerPart",
                "ecr:InitiateLayerUpload",
                "ecr:BatchCheckLayerAvailability",
                "ecr:PutImage",
                "ecr:DescribeRepositories",
                "ecr:GetRepositoryPolicy"
            ],
            "Resource": "*"
        }
    ]
}

如果需要自动创建ECR仓库,再额外添加ecr:CreateRepository权限,并锁定到具体仓库ARN(避免全局权限过大):

{
    "Effect": "Allow",
    "Action": "ecr:CreateRepository",
    "Resource": "arn:aws:ecr:你的AWS区域:你的AWS账号ID:repository/你的仓库名称"
}

2. 锁定资源范围(可选)

虽然用Resource: "*"能覆盖所有资源,但更安全的做法是将权限限定到目标ECR仓库的ARN,替换策略中的Resource值:

"Resource": "arn:aws:ecr:你的AWS区域:你的AWS账号ID:repository/你的仓库名称"

3. 检查GitHub Actions凭证配置

  • 确认GitHub Secrets里的AWS_ACCESS_KEY_ID和AWS_SECRET_ACCESS_KEY属于拥有上述IAM策略的用户/角色
  • 检查凭证是否过期、未被禁用
  • 如果用IAM角色,要确保角色的信任关系允许GitHub Actions的身份访问

4. 验证ECR仓库自身权限

登录AWS控制台,进入目标ECR仓库的“权限”页面,确认仓库的访问策略允许当前IAM实体执行镜像推送操作。

5. 核对buildx命令格式

确保GitHub Actions中的buildx推送命令使用正确的ECR镜像地址格式:

docker buildx build --push --tag 你的AWS账号ID.dkr.ecr.你的AWS区域.amazonaws.com/你的仓库名称:版本标签 .

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 07:27:30