amazon-web-services - 无法从 ECS 集群中运行的容器实例上的 Amazon ECS 私有存储库中提取映像
问题描述
我在 AWS ECS 上创建了一个非默认集群,我能够从 docker 公共存储库中提取 docker 映像并运行它以进行测试。
然后,我创建了一个 ECS 私有存储库,并构建了一个映像并将其推送到该存储库,它成功了。但是当我尝试使用 docker pull 手动拉它时,它会抱怨以下错误:
来自守护程序的错误响应:获取 https://532193077341.dkr.ecr.ap-south-1.amazonaws.com/v2/12r/manifests/latest:没有基本的身份验证凭据
这似乎是 IAM 角色和权限的问题,但我不确定要更改哪个角色/策略。
解决方案
在您的 ECS 容器(任务)定义中
如果您使用的是私有 ECR 存储库:
不要选中私有存储库身份验证选项,因为 ECR 不使用用户名密码身份验证,它将使用 IAM 角色/用户权限。然后,只需确保 ECS IAM 角色(默认称为ecsTaskExecutionRole)有权从 ECR 中提取图像,如果它自己不添加这些行:
"ecr:GetAuthorizationToken",
"ecr:BatchCheckLayerAvailability",
"ecr:GetDownloadUrlForLayer",
"ecr:BatchGetImage",
如果您使用的是非 ECR 私有存储库:
检查 私有存储库身份验证选项并使用Secrets Manager提供您的用户名密码
推荐阅读
- google-chrome - Chrome 最近出现的问题,在长页面上滚动时屏幕呈现失败
- apache-kafka - 在填充行之前对数据应用 KTable 扩充
- kubeflow - kubeflow gpu 资源节点分配标准是什么?
- apache-kafka - 卡夫卡:删除密钥?
- javascript - 如何使用带有多个值的endsWith?
- clojure - Clojure 嵌套的 json 响应
- c# - 嵌套数据的序列化失败
- python - 错误pygame:参数必须是rectstyle对象的序列
- amazon-web-services - 数据不足时自动缩放
- socket.io - 通过 Socket JAVA 进行原始 ESCP 打印