我们正在从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.0
和Docker version 1.7.1
,我认为是推荐的版本。这可能是Docker版本的一个问题吗?
答案 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