Eu tenho um script python boto3 que faz o ff:
- crie uma lista de tarefas com o status 'RUNNING' para um serviço via
ecs_client.list_tasks(cluster=mycluster,serviceName=myservice,desiredStatus='RUNNING')
- faça um loop for para a lista de tarefas acima e pare cada uma
ecs_client.stop_task(cluster=mycluster,task=mytask)
- descreva o serviço para obter o runningCount e o desejadoCount
ecs_client.describe_services(cluster=mycluster,services=[myservice])
- while loop if runningCount <desejadoCount - o que significa que uma tarefa está sendo parada no momento e ainda não foi substituída, portanto, não pare a próxima tarefa ainda!
while myservice['services'][0]['runningCount'] < myservice['services'][0]['desiredCount']:
Se o loop while não for mais verdadeiro - o que significa que as contagens de execução e desejada são iguais, pare a próxima tarefa na lista.
Esse é o fluxo real e não consigo mostrar o código real, pois ainda estou empregado no meu trabalho atual e todo o meu código pertence a eles :)