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

CodeBuild拉取合法ECR镜像失败:权限配置问题排查

问题描述

尝试为CodeBuild配置最小权限服务角色,选择从ECR拉取自定义构建镜像而非预制镜像时,拉取失败,报错如下:

BUILD_CONTAINER_UNABLE_TO_PULL_IMAGE: Unable to pull customer's container image. CannotPullContainerError: Error response from daemon: pull access denied for .dkr.ecr.us-east-1.amazonaws.com/my-ecr, repository does not exist or may require 'docker login': denied: User: CodeBuild

当前服务角色的内联策略如下:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "ecr:DescribeImageScanFindings",
                "ecr:GetLifecyclePolicyPreview",
                "ecr:GetDownloadUrlForLayer",
                "ecr:DescribeImageReplicationStatus",
                "ecr:ListTagsForResource",
                "ecr:UploadLayerPart",
                "ecr:ListImages",
                "ecr:BatchGetRepositoryScanningConfiguration",
                "ecr:PutImage",
                "ecr:BatchGetImage",
                "ecr:CompleteLayerUpload",
                "ecr:DescribeImages",
                "ecr:DescribeRepositories",
                "ecr:InitiateLayerUpload",
                "ecr:BatchCheckLayerAvailability",
                "ecr:GetRepositoryPolicy",
                "ecr:GetLifecyclePolicy",
                "ecr:GetAuthorizationToken",
                "ecr:GetRegistryPolicy",
                "ecr:DescribeRegistry",
                "ecr:GetAuthorizationToken",
                "ecr:GetRegistryScanningConfiguration"
            ],
            "Resource": "arn:aws:ecr:us-east-1:<myacct>:repository/my-ecr"
        }
    ]
}
权限被拒的核心原因
  1. ecr:GetAuthorizationToken 资源范围不匹配
    这个操作属于ECR注册表级权限,不能绑定到单个仓库ARN。你的策略里把它和仓库级操作放在同一规则中,资源限定为单个仓库,导致CodeBuild无法获取登录ECR的授权令牌,完成不了镜像拉取的前置登录步骤。

  2. 冗余权限配置(非直接原因,但不符合最小权限原则)
    策略里包含了大量上传镜像相关的操作(如ecr:UploadLayerPart、ecr:PutImage等),拉取镜像根本不需要这些权限,属于多余配置,后续可以清理。

修正后的内联策略

拆分注册表级和仓库级权限,仅保留拉取镜像必需的操作:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "ECRRegistryAuth",
            "Effect": "Allow",
            "Action": "ecr:GetAuthorizationToken",
            "Resource": "*"
        },
        {
            "Sid": "ECRPullImagePermissions",
            "Effect": "Allow",
            "Action": [
                "ecr:GetDownloadUrlForLayer",
                "ecr:BatchGetImage",
                "ecr:BatchCheckLayerAvailability",
                "ecr:DescribeRepositories"
            ],
            "Resource": "arn:aws:ecr:us-east-1:<myacct>:repository/my-ecr"
        }
    ]
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 23:27:14