我已经在AWS ECS上创建了一个NON默认集群,并且能够从docker公共存储库中提取docker映像并也对其进行运行以进行测试。
然后,我创建了一个ECS私有存储库,并构建了一个映像并将其推送到该存储库中,并成功。但是,当我尝试使用docker pull手动将其拉出时,它会抱怨以下错误:
守护程序的错误响应:获取 https://532193077341.dkr.ecr.ap-south-1.amazonaws.com/v2/12r/manifests/latest:没有基本的身份验证凭据
IAM角色和权限似乎是一个问题,但我不确定要更改哪个角色/策略。
答案 0 :(得分:1)
如果您使用的是私有 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身份验证到您的默认注册表”。