将图像从 EC2 容器注册表部署到 Elastic Beanstalk 凭据?

Deploy image from EC2 Container Registry to Elastic Beanstalk credentials?

鉴于以下设置:

为了部署我的应用程序,Elastic Beanstalk single container guide 说要创建一个 Dockerrun.aws.json 文件。

Elastic Beanstalk 指南 also says 要使用来自(任何)私有存储库的图像,需要将凭据文件(带有身份验证令牌和电子邮件地址)添加到 S3 存储桶。

身份验证to the EC2 Container Registry涉及查询docker login命令可以使用的令牌,但它的有效期仅为12小时.

所以,理论上,我可以按照 Elastic Beanstalk 指南,使用 aws ecr get-logindocker login ... 命令获取 Docker 创建我需要的配置文件,将其转换到 .dockercfg 文件并将其放在 S3 上。

如果我随后将 Dockerrun.aws.json 文件作为新应用程序版本上传到 Elastic Beanstalk,如果 12 小时还没有过去,我可以立即部署它。

我担心的是 12 小时后会发生什么?如果 Elastic Beanstalk 需要自动扩展我的应用程序并启动更多实例,如果它尝试使用 S3 存储的凭证,它将失败。或者,如果我意识到我需要回滚到我的应用程序的以前版本,我不能仅仅通过过去应用程序版本的 Elastic Beanstalk 列表来做到这一点;我需要在安装了 AWS CLI 的机器上再次执行 aws ecr get-logindocker login ...、上传到 S3 舞蹈?

是否有一种不那么脆弱的方法来设置 Elastic Beanstalk 和 EC2 容器注册表之间的身份验证,以便 12 小时超时不是问题?

只是在此处内联相关的 ECR FAQ answer(强调):

All you need to do is specify the Amazon ECR repository in your Dockerrun.aws.json configuration and attach the AmazonEC2ContainerRegistryReadOnly policy to your container instance role.