Estou executando um site no Elastic Beanstalk usando uma configuração de vários contêineres. Eu estou querendo saber qual é a estratégia preferida para puxar as últimas imagens.
No servidor de IC, após as confirmações bem-sucedidas para o mestre, estou construindo as imagens do Docker, enviando-as para os repositórios no AWS Elastic Container Service e executando algo como:
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'
Isso funciona mais ou menos, mas estou me perguntando se essa é a maneira mais eficiente de atualizar o site. Os documentos do ambiente de atualização dizem muito pouco.
Além disso, o ambiente é composto de 4 imagens diferentes, cada uma com seu próprio repositório e atualizada independentemente por equipes diferentes. O problema é que, às vezes, as atualizações "colidem" se o ambiente já estiver executando uma atualização. Eu poderia esperar que Status
fosse "Pronto" e AbortableOperationInProgress
fosse falso, mas não quero segurar o servidor de IC por vários minutos.
Eu estava pensando em usar o Amazon SQS + Lambda para colocá-los em fila, mas é muito exagerado. Seria extremamente útil se o EBS já tivesse essa fila de atualizações embutidas. Eu não posso ser a primeira pessoa a se deparar com esse problema.
Todas as ideias e ponteiros são apreciados.
Obrigado,
Juan