我正在尝试使用AWS ECR并将新标记推送到我们的私人存储库。
它是这样的:
<form>
登录有效,标签已创建,我用export DOCKER_REGISTRY=0123123123123.dkr.ecr.us-east-1.amazonaws.com
export TAG=0.1
docker build -t vendor/app-name .
`aws ecr get-login --region us-east-1`" # generates docker login
docker tag vendor/app-name $DOCKER_REGISTRY/vendor/app-name:$TAG
docker push $DOCKER_REGISTRY/vendor/app-name:$TAG
看到它,但推送失败了。
docker images
很可能是配置错误,但我无法弄清楚如何从中获得更多输出。该命令没有调试级别选项,没有其他日志,我无法拦截网络流量,因为它似乎已加密。
答案 0 :(得分:25)
陷入同样的问题。对我来说,确保我正在推动的IAM用户具有ecr:BatchCheckLayerAvailability
权限已经清除了这一点。
我原本打算有一个&#34;只推送&#34;政策并没有意识到这个许可是成功推动所必需的。
答案 1 :(得分:3)
除了@Ethan的答案:我试图找到将Docker映像推送到AWS注册表所需的最小权限集。截至今天,最小集合是:
{
"Sid": "PushToEcr",
"Effect": "Allow",
"Action": [
"ecr:BatchCheckLayerAvailability",
"ecr:CompleteLayerUpload",
"ecr:GetAuthorizationToken",
"ecr:InitiateLayerUpload",
"ecr:PutImage",
"ecr:UploadLayerPart"
],
"Resource": "*"
}
据我了解,Resource
必须为*
,因为其中某些操作否则无法正常工作。
欢迎改进!
答案 2 :(得分:3)
您需要的最低政策:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "",
"Effect": "Allow",
"Action": "ecr:GetAuthorizationToken",
"Resource": "*"
},
{
"Sid": "",
"Effect": "Allow",
"Action": [
"ecr:UploadLayerPart",
"ecr:PutImage",
"ecr:InitiateLayerUpload",
"ecr:CompleteLayerUpload",
"ecr:BatchCheckLayerAvailability"
],
"Resource": "arn:aws:ecr:<your region>:<your account id>:repository/<your repository name>"
}
]
}