J'ai supprimé une définition de tâche Amazon Elastic Container Service (Amazon ECS), mais elle est bloquée à l'état DELETE_IN_PROGRESS.
Résolution
Remarque : Si des erreurs surviennent lorsque vous exécutez des commandes de l'interface de la ligne de commande AWS (AWS CLI), consultez la section Résoudre des erreurs liées à l’AWS CLI. Vérifiez également que vous utilisez bien la version la plus récente de l'interface.
Une requête de suppression de définition de tâche ne peut pas être terminée lorsqu'une ressource Amazon ECS dépend de la révision de la définition de tâche. Si une tâche ou un service autonome utilise la définition de tâche que vous avez supprimée, celle-ci reste bloquée à l'état DELETE_IN_PROGRESS.
Pour résoudre ce problème, exécutez la commande list-clusters de l'AWS CLI suivante pour identifier toutes les ressources qui utilisent la définition de tâche :
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
Remarque : Remplacez TaskDefinitionARN par l'ARN de la définition de tâche et Regioncode par votre région AWS.
Exemple de sortie :
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
Dans l'exemple précédent, la tâche abcde appartient à service-1. Pour supprimer la définition de tâche pour la tâche abcde, vous devez d'abord supprimer service-1.
Si votre service gère activement des tâches, le message d'erreur suivant peut s'afficher lorsque vous tentez de supprimer le service :
« An error occurred (InvalidParameterException) when calling the DeleteService operation: The service cannot be stopped while it is scaled above 0. »
Pour résoudre ce problème, assurez-vous que le service n'a aucune tâche en cours d'exécution et que le nombre de tâches est égal à 0 avant de supprimer le service. Vous pouvez également ajouter l'option --force lorsque vous exécutez la commande delete-service.
Utilisez la console Amazon ECS pour supprimer le service. Ou exécutez la commande delete-service suivante :
aws ecs delete-service --cluster clustername --service servicename
Remarque : Remplacez clustername par le nom de votre cluster et servicename par le nom de votre service.
Pour les tâches Amazon ECS, la suppression des définitions de tâche peut prendre jusqu'à 1 heure après l'arrêt de la tâche. Pour les services Amazon ECS, la suppression des définitions de tâche peut prendre jusqu'à 24 heures après la suppression du déploiement ou de l'ensemble de tâches.
Il n’est possible de créer une nouvelle définition de tâche portant le même nom que la définition de tâche précédente qu’une fois la suppression terminée. Si vous n'avez pas encore supprimé la définition de tâche, vous créez une nouvelle révision de la même définition de tâche au lieu d'une nouvelle définition de tâche. Vous pouvez utiliser la révision pour lancer de nouvelles tâches et apporter les modifications nécessaires jusqu'à ce que la suppression de la définition de tâche précédente soit complètement terminée.
Informations connexes
États de définition de tâche Amazon ECS
describe-services
describe-tasks