Amazon ECR은 리소스 기반 권한을 사용하여 리포지토리에 대한 액세스를 제어합니다. 리소스 기반 권한을 사용하면 리포지토리에 액세스할 수 있는 IAM 사용자 또는 역할과 해당 리포지토리에서 수행 가능한 작업을 지정할 수 있습니다.
저는 Codebuild와 ECR를 함께 사용하기 위해서 특정 Codebuild Project가 ECR에 접근 가능하도록 JSON Policy를 구축 한 뒤, ECR 리포지토리에 적용시켜줬습니다.
{
"Version":"2012-10-17",
"Statement":[
{
"Sid":"CodeBuildAccessPrincipal",
"Effect":"Allow",
"Principal":{
"Service":"codebuild.amazonaws.com"
},
"Action":[
"ecr:GetDownloadUrlForLayer",
"ecr:BatchGetImage",
"ecr:BatchCheckLayerAvailability"
],
"Condition":{
"StringEquals":{
"aws:SourceArn":"arn:aws:codebuild:<region>:<aws-account-id>:project/<project-name>",
"aws:SourceAccount":"<aws-account-id>"
}
}
},
{
"Sid":"CodeBuildAccessCrossAccount",
"Effect":"Allow",
"Principal":{
"AWS":"arn:aws:iam::<AWS-account-ID>:root"
},
"Action":[
"ecr:GetDownloadUrlForLayer",
"ecr:BatchGetImage",
"ecr:BatchCheckLayerAvailability"
]
}
]
}