给定设置:
- 应用程序在本地开发并推到EC2容器注册表私人注册表
- 带有码头主机的弹性豆茎环境
为了部署我的应用程序,弹性beanstalk单个容器指南说要制作一个Dockerrun.aws.json
文件。
《弹性豆键指南》还说,要使用(任何)私人存储库中的图像,需要将凭据文件(带有身份验证令牌和电子邮件地址)添加到S3桶中。
对EC2容器注册表的身份验证涉及查询docker login
命令可以使用的令牌,,但仅在12小时内有效。
因此,从理论上讲,我可以遵循弹性beanstalk指南,并使用 aws ecr get-login
, docker login ...
命令使docker创建我需要的配置文件,将其转换为 .dockercfg
文件,然后将其放在S3上。
如果然后将Dockerrun.aws.json
文件作为新的应用程序版本上传到Elastic Beanstalk,则可以将其部署,如果12个小时没有经过。
我担心的是那12个小时后会发生什么?如果Elastic Beanstalk需要自动化我的应用程序并旋转更多实例,则如果尝试使用S3存储的凭据,它将失败。或者,如果我意识到我需要回到应用程序的先前版本,那么我不能仅仅通过过去的应用程序版本的弹性beanstalk列表来完成此操作;我需要在安装AWS CLI的机器上使用aws ecr get-login
,docker login ...
,再次上传到S3 Dance?
是否有一些不太脆弱的方法来设置Elastic Beanstalk和EC2容器注册表之间的身份验证,因此12小时的超时不是问题?
仅在此处插入相关的ECR FAQ答案(添加了重点):
您需要做的就是在dockerrun.aws.json配置中指定Amazon ECR存储库,>将Amazonec2ContainerRegistryReadonly策略添加到您的容器实例。