Não tenho certeza se isso é considerado uma questão abandonada - deparei com isso enquanto resolvia meu problema e agora adicionava minha solução agora que ela foi resolvida.
Para atualizar o serviço com um novo contêiner, você precisa:
- carregar novo contêiner no repositório;
- atualização da definição de tarefa do acionador;
- atualização do contêiner de acionamento;
- importante: verifique se as regras de serviço permitem o lançamento de uma nova versão da tarefa.
Se a tarefa de serviço não for atualizada para a versão mais recente, verifique a guia "events" para erros. Por exemplo, talvez o ECS não tenha conseguido iniciar uma nova versão de seu serviço: você tem apenas uma instância ec2 no cluster e a porta do aplicativo já está sendo usada no host. Neste caso, defina os limites "min health / max health" para "0%, 100%" - dessa forma, o ECS escolherá matar o contêiner antigo antes de implantar um novo. Isso também está acontecendo ao longo de alguns minutos - não se apresse se você não vir um feedback imediato.
Abaixo, há um exemplo de script de implantação para atualizar o contêiner em um cluster e serviço pré-configurados. Note que não há necessidade de especificar versões se você quer dizer apenas "use as últimas da família".
awsRegion=us-east-1
containerName=..
containerRepository=..
taskDefinitionFile=...
taskDefinitionName=...
serviceName=...
echo 'build docker image...'
docker build -t $containerName .
echo 'upload docker image...'
docker tag $containerName:latest $containerRepository:$containerName
docker push $containerRepository:$containerName
echo 'update task definition...'
aws ecs register-task-definition --cli-input-json file://$taskDefinitionFile --region $awsRegion > /dev/null
echo 'update our service with that last task..'
aws ecs update-service --service $serviceName --task-definition $taskDefinitionName --region $awsRegion > /dev/null