[英]GetAuthorizationToken permission error in AWS CodeBuild
我正在尝试使用 AWS CodeBuild 设置我的 Node 项目。
version: 0.2
phases:
pre_build:
commands:
- $(aws ecr get-login)
- TAG="$(echo $CODEBUILD_RESOLVED_SOURCE_VERSION | head -c 8)"
build:
commands:
- docker build -t "${REPOSITORY}:${TAG}" .
post_build:
commands:
- docker push "${REPOSITORY}:${TAG}"
当我触发构建时,命令$(aws ecr get-login)
失败:
调用 GetAuthorizationToken 操作时发生错误 (AccessDeniedException):用户无权执行:ecr:GetAuthorizationToken on resource: * [Container] 2018/10/26 10:04:12 Command did not exit successfully $(aws ecr get-登录)退出状态255
在 IAM 控制台中,用户附加了这些策略:
并且都包含ecr:GetAuthorizationToken
权限。
我错过了什么?
解决了。 我需要为角色而不是用户授予ecr:GetAuthorizationToken
权限。
有类似的问题,但将AmazonEC2ContainerRegistryReadOnly或AmazonEC2ContainerRegistryPowerUser或AmazonEC2ContainerRegistryFullAccess策略附加到代码构建角色没有任何作用
通过创建我自己的策略并将其附加到代码构建角色来解决:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ecr:GetAuthorizationToken"
],
"Resource": "*"
},
{
"Effect": "Allow",
"Action": [
"ecr:BatchCheckLayerAvailability",
"ecr:GetDownloadUrlForLayer",
"ecr:BatchGetImage",
"ecr:PutImage",
"ecr:InitiateLayerUpload",
"ecr:UploadLayerPart",
"ecr:CompleteLayerUpload"
],
"Resource": "%YOUR_REPOSITORY_ARN"
}
]
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.