2

我有一个在该区域创建的Amazon ECR 公共存储库。ap-southeast-2我尝试ecr-public使用以下命令登录。

aws ecr-public get-login-password --region ap-southeast-2 | docker login --username AWS --password-stdin public.ecr.aws/<default_alias>

但我收到以下错误,

Could not connect to the endpoint URL: "https://api.ecr-public.ap-southeast-2.amazonaws.com/"
Error: Cannot perform an interactive login from a non TTY device

为什么我会收到此错误?


我已经通过 CLI 配置了 AWS 凭证,并且可以ecr使用以下命令登录到同一区域中的私有存储库。

aws ecr get-login-password --region ap-southeast-2 | docker login --username AWS --password-stdin <accound_id>.dkr.ecr.ap-southeast-2.amazonaws.com

没有收到任何错误。

WARNING! Your password will be stored unencrypted in /home/wasdkiller/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded

我尝试了以下文章中提到的大多数解决方案,但无法解决我的问题。

4

1 回答 1

4

Amazon ECR 公共存储库不是特定于区域的,您可以在许多其他区域看到相同的Amazon ECR 公共存储库,但只有您可以看到这样的公共存储库。Amazon ECR或换句话说,私有存储库是特定于区域的,仅在您的区域内可用。

但是,如果您要处理该ecr-public服务,则必须与该us-east-1地区合作。是的,我之前告诉过您,Amazon ECR 公共存储库不是特定于区域的。但是该ecr-public命令及其子命令是特定于区域的。以下是他们在快速入门中提到的内容:使用 AWS CLI入门文章发布到 Amazon ECR Public,

第 2 步:向公共注册表进行身份验证

安装并配置 AWS CLI 后,向您的公共注册表验证 Docker CLI。这样,docker 命令就可以从 Amazon ECR 公共存储库推送和拉取图像。AWS CLI 提供了一个 get-login-password 命令来简化身份验证过程。

要使用 get-login-password 向 Amazon ECR 公共注册表验证 Docker,请运行 aws ecr-public get-login-password --region us-east-1 命令。Amazon ECR 公共注册表需要在 us-east-1 区域中进行身份验证,因此您需要在每次进行身份验证时指定 --region us-east-1。收到的身份验证令牌使您可以访问您的 IAM 委托人有权访问的每个公共注册表。将身份验证令牌传递给 docker login 命令时,使用值 AWS 作为用户名并指定 public.ecr.aws,这是公共公共注册表 URI。

aws ecr-public get-login-password --region us-east-1 | docker login --username AWS --password-stdin public.ecr.aws

我希望这可以帮助您解决问题,只需将您的区域更改为us-east-1.

于 2021-09-21T20:12:02.167 回答