首页 > 解决方案 > 无法从 ECS 集群中运行的容器实例上的 Amazon ECS 私有存储库中提取映像

问题描述

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

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

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

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

标签: amazon-web-servicesdockeramazon-ecs

解决方案


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

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

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

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

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

检查 私有存储库身份验证选项并使用Secrets Manager提供您的用户名密码


推荐阅读