Я запускаю сайт на Elastic Beanstalk, используя настройку с несколькими контейнерами. Мне интересно, как лучше всего использовать самые свежие изображения.
На сервере CI после успешной фиксации на мастере я создаю образы 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`
Это примерно работает, но мне интересно, является ли это наиболее эффективным способом обновления сайта. В документы для среды обновления сказать очень мало.
Кроме того, среда состоит из 4 разных изображений, каждое из которых имеет собственное репо и обновляется независимо разными командами. Проблема в том, что иногда обновления «конфликтуют», если среда уже выполняет обновление. Я мог подождать Status
быть «готовым» и AbortableOperationInProgress
быть ложным, но я не хочу задерживать сервер CI потенциально на несколько минут.
Я думал об использовании Amazon SQS + Lambda, чтобы поставить их в очередь, но мне кажется, что это слишком много. Было бы очень полезно, если бы в EBS уже была встроена такая очередь обновлений. Я не могу быть первым, кто столкнется с этой проблемой.
Любые идеи и указатели приветствуются.
Спасибо,
Хуан