我的 CloudFormation 模板包含以下资源定义:
MyBuildResource:
Type: AWS::CodeBuild::Project
Properties:
Name: !Sub ${AWS::StackName}-my-build-resource
ServiceRole: !Ref MyServiceRole
Artifacts:
Type: CODEPIPELINE
Source:
Type: CODEPIPELINE
BuildSpec: subtemplate.yaml
Environment:
ComputeType: BUILD_GENERAL1_SMALL
Image: aws/codebuild/python:2.7.12
Type: LINUX_CONTAINER
EnvironmentVariables:
- Name: FOO
Value: 42
我收到错误消息“无法拉取客户的容器映像。错误代码:404,原因:拒绝对 aws/codebuild/python 进行拉取访问,存储库不存在或可能需要‘docker login’”。这对我来说毫无意义,因为图像似乎可用。资源定义中还有其他错误吗?
答案1
我认为https://stackoverflow.com/a/47465100提供正确答案。MyServiceRole
需要
Effect: Allow
Action:
- ecr:GetDownloadUrlForLayer
- ecr:BatchGetImage
- ecr:BatchCheckLayerAvailability
Resource: "*"
以前,我只允许在自己的存储库上执行这些操作,这会阻止我获取 AWS 映像。
编辑:我已确认问题及其解决方案并进行了更新。