aws ecs优化AMI中的私有dockerregistryauthentication不成功

我正在编写一个用于创buildECS自动缩放集群的terraform脚本。 我已经创build了一个集群并添加了ec2容器实例。我的任务定义文件包含一个来自私有docker repository的映像。我通过aws官方文档find一个Private Registry Authentication页面,并尝试了两种方式如那里所述。

  1. 使用dockercfg
  2. docker的方式

我把我的ecs.config文件放在S3存储桶中,在实例启动的时候我传递了用户数据

#!/bin/bash yum install -y aws-cli aws s3 cp s3://<my_bucket_name>/ecs.config /etc/ecs/ecs.config 

在我的第二种方法中,我将所使用的数据作为

 echo "ECS_ENGINE_AUTH_TYPE=docker" >>/etc/ecs/ecs.config echo "ECS_ENGINE_AUTH_DATA={"https://index.docker.io/v1/":{"username":"my_name","password":"my_password","email":"email@example.com"}}" >>/etc/ecs/ecs.config 

我在我的/etc/ecs/ecs.config中find数据login到我的容器实例时,但当我尝试手动拉图像时,我显示了一个错误,没有find图像。

然后我尝试dockerlogin命令,并手动input我的凭据,并尝试再次拉那个图像,最终它是成功的。

我不确定是否有一种方法来实现ecs优化图像中的私人dockerregistry身份validation通过用户数据或不自动或如果我做错了什么。

请帮我解决这个问题。

在这里输入图像说明

当我尝试手动拉图像时,我显示一个错误,没有find图像

您所遵循的方法向ECS代理提供私有registry凭证,但不提供Docker CLI(Docker CLI将其凭据数据存储在不同的位置)。 由于您已经为代理configuration了凭据,因此您应该能够在私有registry中运行引用图像的任务定义,而无需从Docker CLI手动提取图像。

编辑:它看起来像你可能有一个错误在你的/etc/ecs/ecs.config文件的实例,由于你如何引用echo命令。 你会想改变这一行:

 echo "ECS_ENGINE_AUTH_DATA={"https://index.docker.io/v1/":{"username":"my_name","password":"my_password","email":"email@example.com"}}" >>/etc/ecs/ecs.config 

 echo 'ECS_ENGINE_AUTH_DATA={"https://index.docker.io/v1/":{"username":"my_name","password":"my_password","email":"email@example.com"}}' >>/etc/ecs/ecs.config