无法从ECS集群中运行的容器实例上的Amazon ECS私有存储库中提取图像

时间:2018-09-24 19:10:27

标签: amazon-web-services docker amazon-ecs

我已经在AWS ECS上创建了一个NON默认集群,并且能够从docker公共存储库中提取docker映像并也对其进行运行以进行测试。

然后,我创建了一个ECS私有存储库,并构建了一个映像并将其推送到该存储库中,并成功。但是,当我尝试使用docker pull手动将其拉出时,它会抱怨以下错误:

  

守护程序的错误响应:获取   https://532193077341.dkr.ecr.ap-south-1.amazonaws.com/v2/12r/manifests/latest:没有基本的身份验证凭据

IAM角色和权限似乎是一个问题,但我不确定要更改哪个角色/策略。

2 个答案:

答案 0 :(得分:1)

在您的 ECS 容器(任务)定义中

如果您使用的是私有 ECR 存储库:

不要不要勾选私有存储库身份验证选项,因为 ECR 不使用用户名-密码身份验证,它将使用 IAM 角色/用户权限。然后,只需确保 ECS IAM 角色(默认称为 ecsTaskExecutionRole)有权从 ECR 中提取图像,如果它不自己添加这些行:

"ecr:GetAuthorizationToken",
"ecr:BatchCheckLayerAvailability",
"ecr:GetDownloadUrlForLayer",
"ecr:BatchGetImage",

如果您使用的是非 ECR 私有存储库:

检查 私有存储库身份验证选项并使用 Secrets Manager

提供您的用户名密码

答案 1 :(得分:0)

您需要先根据ECR进行身份验证。本身的本地AWS凭证还不足以允许您从私有ECR存储库中提取。事先尝试这样的事情:

$(aws ecr get-login --registry-ids <YOUR-ID> --region <YOUR-REGION>)

这将针对您针对ECR执行docker login,从而允许您提取私有映像(假设您的本地AWS凭证具有所需的权限)。

有关更多信息,请参阅the Amazon ECR Documentation中的“步骤1:将Docker身份验证到您的默认注册表”。