Sei que esse é um tópico antigo, mas a solução é muito mais fácil do que a maioria das respostas aqui parece ser.
Como atualizar o contêiner em execução em duas etapas:
O abaixo pressupõe que você tenha um serviço executando uma tarefa que faz referência a um contêiner marcado latest
(ou qualquer outra tag estática que não seja alterada nas atualizações do contêiner).
- Faça o upload do seu novo contêiner para o repositório
- Mate manualmente suas tarefas
Se o objetivo é criar uma nova configuração, não precisamos realmente confiar em nosso serviço para isso (e eu diria que não devemos confiar nele). Se você matar sua tarefa, o serviço reconhecerá que não possui as Desired Count
tarefas em execução e simplesmente criará uma nova. Isso acionará uma nova solicitação do seu contêiner, com base na mesma tag.
Os serviços ECS são uma rede de segurança de alta disponibilidade, não um substituto para o seu pipeline de CD / CI.
Bônus: se o objetivo é fazer com que um serviço reconheça que um novo contêiner foi enviado (independentemente das tags), precisamos considerar as implicações disso. Realmente queremos um serviço básico controlando nosso pipeline de implantação para nós? Provavelmente não. Idealmente, você enviará seus contêineres com tags diferentes (com base nas versões de lançamento ou algo assim). Nesse caso, a barreira para a implantação é que o serviço precisa ser notificado sobre algo novo - novamente, é uma rede de segurança para o serviço e nada mais.
Como implantar novas tags em três etapas:
- Faça o upload do seu novo
container:tag
para o repositório
- Crie uma nova definição de tarefa referenciando o novo
tag
- Atualize seu serviço para referenciar a nova definição de tarefa
- Cuidado aqui! Se você
minimum healthy
definiu 0%
como algumas outras respostas sugerem, está dando à AWS total autoridade para eliminar todo o serviço para implantar a nova definição de tarefa. Se você preferir uma implantação progressiva / gradual, defina o mínimo para algo >0%
.
- Como alternativa, defina a sua
minimum healthy
para 100%
e seu maximum healthy
algo >100%
para permitir o seu serviço para implantar as novas tarefas antes de matar os velhos (minimizando o impacto para os usuários).
A partir desse ponto, seu serviço reconhecerá automaticamente que você especificou uma nova tarefa e trabalhará na implantação com base nos limites minimum
/ maximum
saudáveis configurados.