Amazon web services 无法从ECS群集中运行的容器实例上的amazon ECS专用存储库中提取映像
我已经在AWS ECS上创建了一个非默认集群,我能够从docker公共存储库中提取docker映像并运行它进行测试 然后我创建了一个ECS私有repo,并构建了一个映像并将其推送到这个存储库,它成功了。但当我尝试使用docker pull手动拉取时,它会抱怨以下错误: 来自守护进程的错误响应:Get :无基本身份验证凭据Amazon web services 无法从ECS群集中运行的容器实例上的amazon ECS专用存储库中提取映像,amazon-web-services,docker,amazon-ecs,Amazon Web Services,Docker,Amazon Ecs,我已经在AWS ECS上创建了一个非默认集群,我能够从docker公共存储库中提取docker映像并运行它进行测试 然后我创建了一个ECS私有repo,并构建了一个映像并将其推送到这个存储库,它成功了。但当我尝试使用docker pull手动拉取时,它会抱怨以下错误: 来自守护进程的错误响应:Get :无基本身份验证凭据 IAM角色和权限似乎存在问题,但我不确定要更改哪个角色/策略。您需要首先针对ECR进行身份验证。本地AWS凭据本身不足以允许您从专用ECR存储库中提取。事先尝试一下这样的方法:
IAM角色和权限似乎存在问题,但我不确定要更改哪个角色/策略。您需要首先针对ECR进行身份验证。本地AWS凭据本身不足以允许您从专用ECR存储库中提取。事先尝试一下这样的方法:
$(aws ecr get-login --registry-ids <YOUR-ID> --region <YOUR-REGION>)
$(aws ecr get登录--注册表ID--区域)
它将针对ECR为您执行docker登录
,允许您提取私有映像(假设您的本地AWS凭据具有所需权限)
有关更多信息,请参阅ECS容器(任务)定义中的。中的“步骤1:将Docker验证到默认注册表”
如果您使用的是专用ECR存储库:
不要选中私有存储库身份验证选项,因为ECR不使用用户名密码身份验证,它将使用IAM角色/用户权限。然后,只需确保ECS IAM角色(默认情况下称为摇头丸执行角色)具有从ECR提取图像的权限,如果ECS IAM角色自己没有添加以下行:
"ecr:GetAuthorizationToken",
"ecr:BatchCheckLayerAvailability",
"ecr:GetDownloadUrlForLayer",
"ecr:BatchGetImage",
如果您使用的是非ECR专用存储库:
检查私有存储库身份验证选项,并使用提供您的用户名密码。如何将图像推送到ECS私有存储库?是ECR吗?@Apolozeus是的,我可以将图像推送到ECS私有repo。你能检查一下你是否有
ECR:GetDownloadUrlForLayer,ecr:BatchGetImage和ecr:BatchCheckLayerAvailability
权限?我希望在我的ec2instance上我不必登录,而且我应该能够在我的ec2instance上拉取图像而不必登录。作为创建aws_launch_配置的一部分,我指定了实例_配置文件,它将角色与配置文件_策略联系起来。配置文件策略有:“ecr:GetAuthorizationToken”、“ecr:BatchGetImage”。。。因此,我假设在一个实例上,我应该能够手动拉取映像,而不需要实际手动登录ecs注册表。当然,上述工作只是因为我承担了适当的角色,例如作为launchconfiguration的一部分启动的rolepolicy不需要手动登录。我不知道ecs代理在实例上运行任务定义时,实际上是如何从repo中提取映像的。