ECR Repo的Dockerrun.aws.json结构

时间:2015-12-29 23:11:44

标签: amazon-web-services docker amazon-elastic-beanstalk

我们正在从Docker Hub切换到ECR,我很好奇如何构建Dockerrun.aws.json文件以使用此图像。我试图将名称修改为<my_ECR_URL>/<repo_name>:<image_tag>,但这不成功。我还在S3上看到了使用身份验证文件的私有注册表的详细信息,但当aws ecr get-login是使用ECR进行身份验证的推荐方法时,这似乎不是正确的路由。

有人能指出我如何在Beanstalk Dockerrun.aws.json文件中使用ECR图像吗?

如果我查看ECS任务定义,那里有一个名为com.amazonaws.ecs.capability.ecr-auth的必需属性,但我没有在Dockerrun.aws.json文件中设置任何属性,我不确定需要在那里。也许它是一个S3桶?每次我尝试从ECS运行Elastic Beanstalk创建的任务时都需要一些东西,我得到:

Run tasks failed
Reasons : ATTRIBUTE

非常感谢任何见解。

更新我从其他一些threads看到,这曾经发生在早期版本的ECS代理上,但我目前正在运行Agent version 1.6.0Docker version 1.7.1,我认为是推荐的版本。这可能是Docker版本的一个问题吗?

4 个答案:

答案 0 :(得分:6)

事实证明,ECS代理只能使用版本1.7来提取图像,而这正是我的下降所在。更新代理可以解决我的问题,希望它可以帮助其他人。

答案 1 :(得分:2)

如果您使用的是先前为Elastic Beanstalk创建的角色,则这很可能是IAM角色的问题。确保运行Elastic Beanstalk的角色附加了 AmazonEC2ContainerRegistryReadOnly 托管策略

来源:http://docs.aws.amazon.com/AmazonECR/latest/userguide/ECR_IAM_policies.html

答案 2 :(得分:2)

在ECS代理的version 1.7.0中添加了对ECR的支持。

答案 3 :(得分:2)

使用Elasticbeanstalk和ECR时,您不需要进行身份验证。只需确保用户具有策略AmazonEC2ContainerRegistryReadOnly

  

您可以使用Amazon EC2 Container Registry(Amazon ECR)将自定义Docker镜像存储在AWS中。当您存储Docker镜像时   Amazon ECR,Elastic Beanstalk自动进行身份验证   Amazon ECR注册表与您的环境的实例配置文件,所以你   不需要生成身份验证文件并将其上传到亚马逊   简单存储服务(Amazon S3)。

     

但是,您需要向您的实例提供权限   通过添加权限访问Amazon ECR存储库中的映像   到您环境的实例配置文件。你可以附上   AmazonEC2ContainerRegistryReadOnly管理该实例的策略   配置文件,提供对所有Amazon ECR存储库的只读访问权限   您的帐户,或使用。授予对单个存储库的访问权限   按照模板创建自定义策略:

来源:http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_docker.container.console.html