在 Elastic Beanstalk 多容器中更新到最新的 Docker 镜像

Jua*_*ado 5 amazon-web-services elastic-beanstalk aws-cli docker

我正在使用多容器设置在 Elastic Beanstalk 上运行一个站点。我想知道获取最新图像的首选策略是什么。

在 CI 服务器上,成功提交到 master 后,我正在构建 Docker 镜像,将它们发送到 AWS Elastic Container Service 中的存储库,然后运行如下内容:

CURRENT_VERSION=`aws elasticbeanstalk describe-environments --environment-names $ENVIRONMENT_NAME | jq -r '.Environments[0].VersionLabel'`
aws elasticbeanstalk update-environment --environment-name $ENVIRONMENT_NAME --version-label $CURRENT_VERSION`
Run Code Online (Sandbox Code Playgroud)

这大致有效,但我想知道这是否是更新站点的最有效方式。更新环境文档说的很少。

此外,环境由 4 个不同的图像组成,每个图像都有自己的存储库,并由不同的团队独立更新。问题是,如果环境已经在执行更新,有时更新会“发生冲突”。我可以等待Status“准备好”并且AbortableOperationInProgress是假的,但我不想让 CI 服务器等待几分钟。

本来想用 Amazon SQS + Lambda 来排队,但是感觉很矫枉过正。如果 EBS 已经内置了这样一个更新队列,那将非常有帮助。我不可能是第一个遇到这个问题的人。

任何想法和指针表示赞赏。

谢谢,

胡安