No he podido encontrar esto en docs. ¿Puedo simplemente pausar un servicio de ECS para que deje de crear nuevas tareas? ¿O tengo que eliminarlo para detener ese comportamiento?
Solo quiero suspender temporalmente la creación de nuevas tareas en el clúster.
Es suficiente establecer la cantidad deseada de tareas para un servicio en 0. ECS eliminará automáticamente todas las tareas en ejecución.
aws ecs update-service --desired-count 0 --cluster "ecs-my-ClusterName" --service "service-my-ServiceName-117U7OHVC5NJP"Puede lograr una "pausa" ajustando la configuración de su servicio para que coincida con su número actual de tareas en ejecución. Por ejemplo, si actualmente tiene 3 tareas en ejecución en su servicio, configuraría el servicio de la siguiente manera:
Esto le dice al servicio:
[current-count][current-count][current-countEstos combinados evitan que su servicio realice cambios.
La respuesta aceptada es incorrecta. Si establece tanto el "Porcentaje mínimo saludable" como el "Porcentaje máximo saludable" en 100, AWS le dará un error similar al siguiente:
Para evitar que el servicio cree nuevas tareas, debe actualizar el servicio actualizando la definición de la tarea y configurando la cantidad deseada de tareas en 0. Después de eso, puede usar AWS CLI (opción más rápida) para detener las tareas en ejecución existentes, por ejemplo:
aws ecs list-services --cluster "ecs-my-ClusterName" aws ecs list-tasks --cluster "ecs-my-ClusterName" --service "service-my-ServiceName-117U7OHVC5NJP"Después de eso, obtendrá la lista de las tareas en ejecución para el servicio, como:
{ "taskArns": [ "arn:aws:ecs:us-east-1:XXXXXXXXXXX:task/12e13d93-1e75-4088-a7ab-08546d69dc2c", "arn:aws:ecs:us-east-1:XXXXXXXXXXX:task/35ed484a-cc8f-4b5f-8400-71e40a185806" ] }Finalmente, use lo siguiente para detener cada tarea:
aws ecs stop-task --cluster "ecs-my-ClusterName" --task 12e13d93-1e75-4088-a7ab-08546d69dc2c aws ecs stop-task --cluster "ecs-my-ClusterName" --task 35ed484a-cc8f-4b5f-8400-71e40a185806ACTUALIZACIÓN: al establecer la cantidad deseada de tareas en ejecución en 0, ECS detendrá y drenará todas las tareas en ejecución en ese servicio. No hay necesidad de detenerlos individualmente después usando los comandos CLI publicados originalmente arriba.