Saltar al contenido

¿Cómo puedo solucionar los problemas de las definiciones de tareas que están bloqueadas en el estado DELETE_IN_PROGRESS en Amazon ECS?

4 minutos de lectura
0

He eliminado una definición de tarea de Amazon Elastic Container Service (Amazon ECS), pero está bloqueada en el estado DELETE_IN_PROGRESS.

Solución

Nota: Si se muestran errores al ejecutar comandos de la Interfaz de la línea de comandos de AWS (AWS CLI), consulte Solución de problemas de AWS CLI. Además, asegúrese de utilizar la versión más reciente de la AWS CLI.

Una solicitud de eliminación de una definición de tarea no puede completarse cuando un recurso de Amazon ECS depende de la revisión de la definición de tarea. Si una tarea o servicio independiente usa la definición de tarea que ha eliminado, la definición de tarea queda bloqueada en el estado DELETE_IN_PROGRESS.

Para resolver este problema, ejecute el siguiente comando list-clusters de la AWS CLI para identificar todos los recursos que utilizan la definición de tarea:

TaskDefARN=TaskDefinitionARN
REGION=Regioncode
for cluster in $(aws ecs list-clusters --region $REGION --output text --query 'clusterArns[]'); do echo "Checking cluster: $cluster"; for task in $(aws ecs list-tasks --region $REGION --cluster $cluster --output text --query 'taskArns[]'); do task_def=$(aws ecs describe-tasks --region $REGION --cluster $cluster --tasks $task --query 'tasks[].taskDefinitionArn' --output text); if [[ "$task_def" == "$TaskDefARN" ]]; then echo "Task using this definition: $task"; fi; done; for service in $(aws ecs list-services --region $REGION --cluster $cluster --output text --query 'serviceArns[]'); do service_def=$(aws ecs describe-services --region $REGION --cluster $cluster --services $service --query 'services[].taskDefinition' --output text); if [[ "$service_def" == "$TaskDefARN" ]]; then echo "Service using this definition: $service"; fi; done; done

Nota: Sustituya TaskDefinitionARN por el ARN de la definición de tarea y Regioncode por su región de AWS.

Resultado de ejemplo:

Checking cluster: arn:aws:ecs:us-east-1:123456789012:cluster/cluster-1
Checking cluster: arn:aws:ecs:us-east-1:123456789012:cluster/cluster-2
Checking cluster: arn:aws:ecs:us-east-1:123456789012:cluster/cluster-3
Task using this definition: arn:aws:ecs:us-east-1:123456789012:task/cluster-3/abcde
Service using this definition: arn:aws:ecs:us-east-1:123456789012:service/cluster-3/service-1

En el ejemplo anterior, la tarea abcde pertenece a service-1. Para eliminar la definición de tarea de la tarea abcde, primero debe eliminar service-1.

Si su servicio mantiene tareas de forma activa, es posible que reciba el siguiente mensaje de error cuando intente eliminar el servicio:

«Se produjo un error (InvalidParameterException) al llamar a la operación DeleteService: El servicio no se puede detener mientras esté escalado por encima de 0».

Para resolver este problema, asegúrese de que el servicio no tiene tareas en ejecución y de que el recuento de tareas es 0 antes de eliminar el servicio. O bien, agregue la opción**--force** cuando ejecute el comando delete-service.

Use la consola de Amazon ECS para eliminar el servicio. O bien, ejecute el siguiente comando delete-service:

aws ecs delete-service --cluster clustername --service servicename

Nota: Sustituya clustername por el nombre del clúster y servicename por el nombre del servicio.

En el caso de las tareas de Amazon ECS, la eliminación de la definición de tarea puede tardar hasta 1 hora en completarse después de detener la tarea. En el caso de los servicios de Amazon ECS, la eliminación de la definición de tarea puede tardar hasta 24 horas en completarse después de eliminar el despliegue o el conjunto de tareas.

Puede crear una nueva definición de tarea con el mismo nombre que la definición de tarea anterior solo después de que la eliminación se complete por completo. Si aún no ha eliminado la definición de tarea, crea una nueva revisión de la misma definición de tarea en lugar de una nueva definición de tarea. Puede usar la revisión para iniciar nuevas tareas y realizar los cambios necesarios hasta que la eliminación de la definición de tarea anterior finalice por completo.

Información relacionada

Estados de definición de tareas de Amazon ECS

describe-services

describe-tasks

OFICIAL DE AWSActualizada hace un año