Cha*_*pat 23 amazon-ecr aws-codebuild
由于以下错误,CodeBuild 项目在配置阶段失败
BUILD_CONTAINER_UNABLE_TO_PULL_IMAGE: Unable to pull customer's container image. CannotPullContainerError: Error response from daemon: pull access denied for <image-name>, repository does not exist or may require 'docker login': denied: User: arn:aws:sts::<id>
Run Code Online (Sandbox Code Playgroud)
Cha*_*pat 55
问题出在图像拉取凭证上。当 ECRAccessPolicy 附加到项目服务角色时,CodeBuild 使用默认的 AWS CodeBuild 凭证来拉取映像。
我通过更新图像拉取凭据以使用项目服务角色来修复它。
terraformfwiw 我在使用创建代码构建管道时偶然发现了这个问题。
为此更改的设置image_pull_credentials_type应该设置为which而SERVICE_ROLE不是.CODEBUILDenvironmentresource "aws_codebuild_project"
感谢 Chaitanya 的回复,它通过接受的答案为我指明了这个方向。
小智 7
为了增加清晰度(还没有足够的声誉来评论现有答案),如果尝试从私有存储库中提取,CodeBuild 项目服务角色需要具有以下权限:
{
"Action":[
"ecr:BatchCheckLayerAvailability",
"ecr:BatchGetImage",
"ecr:GetDownloadUrlForLayer"
],
"Effect":"Allow",
"Resource":[
"arn:aws:ecr:us-east-1:ACCOUNT_ID:repository/REPOSITORY_NAME*"
]
}
Run Code Online (Sandbox Code Playgroud)
此外,ECR 存储库策略也应如下所示(如果需要,范围可向下延伸):
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowAccess",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::ACCOUNT_ID:root"
},
"Action": [
"ecr:BatchCheckLayerAvailability",
"ecr:BatchGetImage",
"ecr:GetDownloadUrlForLayer"
]
}
]
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12347 次 |
| 最近记录: |