Amazon ECR 用户需要权限才能调用 ecr:GetAuthorizationToken
在他们可以向注册表进行身份验证并推送或拉取任何图像之前
来自任何 Amazon ECR 存储库。 Amazon ECR 提供了多种托管
在不同级别控制用户访问的策略;更多
信息见ecr_managed_policies
AmazonEC2ContainerRegistryPowerUser
此托管策略允许高级用户访问 Amazon ECR,它允许对存储库进行读写访问,但不允许用户删除存储库或更改应用到它们的策略文档。
{
"Version": "2012-10-17",
"Statement": [{
"Effect": "Allow",
"Action": [
"ecr:GetAuthorizationToken",
"ecr:BatchCheckLayerAvailability",
"ecr:GetDownloadUrlForLayer",
"ecr:GetRepositoryPolicy",
"ecr:DescribeRepositories",
"ecr:ListImages",
"ecr:DescribeImages",
"ecr:BatchGetImage",
"ecr:InitiateLayerUpload",
"ecr:UploadLayerPart",
"ecr:CompleteLayerUpload",
"ecr:PutImage"
],
"Resource": "*"
}]
}
因此,不要使用 ~/.docker/config.json 这个,而是将上述策略角色分配给您的 ECS 任务,您的 docker 容器服务将能够从 ECR 推送拉取图像。
任务的 IAM 角色
使用 Amazon ECS 任务的 IAM 角色,您可以指定一个 IAM 角色
可以被任务中的容器使用。申请必须签署他们的
AWS API 请求使用 AWS 凭证,此功能提供了一个
管理您的应用程序使用的凭据的策略,
类似于 Amazon EC2 实例配置文件提供的方式
EC2 实例的凭据。而不是创建和分发
您的 AWS 凭证到容器或使用 EC2 实例的
角色,您可以将 IAM 角色与 ECS 任务定义相关联,或者
RunTask API 操作。任务容器中的应用程序可以
然后使用 AWS 开发工具包或 CLI 向授权的 AWS 发出 API 请求
服务。
将 IAM 角色用于任务的好处
凭据隔离:容器只能检索以下凭据
在任务定义中定义的 IAM 角色
属于;容器永远无法访问预期的凭据
对于属于另一个任务的另一个容器。
授权:未经授权的容器无法访问 IAM 角色
为其他任务定义的凭据。
可审计性:可通过 CloudTrail 获得访问和事件日志记录
确保追溯审计。任务凭据的上下文为
taskArn 附加到会话,因此 CloudTrail 日志显示哪个
任务正在使用哪个角色。
但您必须如上所述运行此命令才能获取身份验证令牌。
eval $(aws ecr get-login --no-include-email)
你会得到类似的回应
登录成功
现在,从 ECR 获取身份验证令牌后,您将推送图像。
docker push xxxxxxxxxxx.dkr.ecr.us-west-2.amazonaws.com/nodejs:test
Automate ECR login