在 AWS EC2 上从 AWS ECR 中提取图像,而不使用 docker login,但使用 EC2 实例角色和 ECR 存储库权限

Posted

技术标签:

【中文标题】在 AWS EC2 上从 AWS ECR 中提取图像,而不使用 docker login,但使用 EC2 实例角色和 ECR 存储库权限【英文标题】:Pull images from AWS ECR on AWS EC2 without using docker login but using EC2 Instance role and ECR repository permissions 【发布时间】:2018-03-28 03:29:29 【问题描述】:

我们能否从运行 docker 的 AWS EC2 实例上的 AWS ECR 存储库中提取图像,分配 AWS EC2 实例角色/策略和提供对 ECR 访问的 AWS ECR 存储库权限。

我目前已提供所有权限,但我得到的错误是“未经授权:需要身份验证”。

让我知道这是否可行。

【问题讨论】:

您是否能够在不登录且仅使用角色本身的情况下执行它? 我可以使用登录凭据使用它,但它们的有效期为 12 小时,所以我想知道我是否可以提供具有角色/策略组合的实例来做同样的事情。 【参考方案1】:

您实际上可以跳过 docker 登录步骤,甚至使用 ecr credential helper 仍然执行 docker 登录的 aws ecr get-token。

使用助手,只需配置 docker:


"credHelpers": 
    "aws_account_id.dkr.ecr.region.amazonaws.com": "ecr-login"

参考:https://lwpro2.wordpress.com/2019/10/30/authenticating-amazon-ecr-repositories-for-docker-cli-with-credential-helper/

【讨论】:

【参考方案2】:

在您的 cron 中运行以下命令,cron 将刷新您的登录凭据。

COMMAND=`eval aws ecr get-login --region us-west-2`
echo `eval $COMMAND`

因此您可以避免任何登录到 ecr 本身并始终无缝访问。

【讨论】:

感谢这种方法,但我的主要疑问是如何使用 AWS IAM 角色/策略来促进这一点。

以上是关于在 AWS EC2 上从 AWS ECR 中提取图像,而不使用 docker login,但使用 EC2 实例角色和 ECR 存储库权限的主要内容,如果未能解决你的问题,请参考以下文章

sh [在AWS EC2 Linux服务器上从PHP 5.X.X升级到PHP 7] #linux #aws

Docker 推送到 AWS ECR 问题

从Bitbucket管道中的Amazon ECR中提取图像

来自 AWS ECR 的 Jenkins 管道 Docker 代理

如何从 AWS ec2 实例中提取文件?

使用 AWS ECR 登录 Docker 的问题