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

AWS CodeBuild拉取ECR镜像权限问题求助

解决AWS CodeBuild无法拉取私有ECR镜像的权限问题

问题本质

你看到的报错里的User: CodeBuild并不是真实的IAM用户,而是CodeBuild服务扮演指定服务角色时的会话标识。当CodeBuild用你配置的arn:aws:iam::<你的账号ID>:role/service-role/codebuild-service-role角色发起请求时,AWS身份系统会生成临时会话,报错里的"CodeBuild"是这个会话的名称,实际权限校验的核心是背后的服务角色是否被ECR仓库策略允许。

正确配置ECR私有仓库权限策略

要让指定的CodeBuild服务角色拉取ECR镜像,需在ECR仓库的权限策略里直接引用该角色的ARN作为Principal,而非模糊的服务主体。以下是正确的策略示例:

{
  "Version": "2008-10-17",
  "Statement": [
    {
      "Sid": "AllowCodeBuildPullImages",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::<你的AWS账号ID>:role/service-role/codebuild-service-role"
      },
      "Action": [
        "ecr:GetDownloadUrlForLayer",
        "ecr:BatchGetImage",
        "ecr:BatchCheckLayerAvailability"
      ]
    }
  ]
}

关键注意点

  • 替换<你的AWS账号ID>为实际的12位AWS账号数字,不要保留占位符。
  • 确认CodeBuild项目配置里确实指定了这个服务角色,未误选其他角色。
  • 开放所有权限时能正常运行,是因为该策略允许所有身份访问,包括CodeBuild扮演的服务角色;缩小权限时,必须明确指定有权限的主体(即你的服务角色ARN)。

关于IAM Principal的补充说明

Principal在IAM策略中表示被授予权限的身份,可以是IAM用户、角色、AWS账号甚至服务主体。你的场景中,CodeBuild通过扮演服务角色访问ECR,因此必须将该角色的ARN作为Principal写入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.16 22:42:36