Ma tâche Amazon Elastic Container Service (Amazon ECS) échoue au contrôle de l'état du conteneur.
Brève description
Si vous recevez l'erreur suivante, cela signifie que les conteneurs Amazon ECS de votre tâche utilisent des surveillances de l’état que votre service ne peut pas passer avec succès :
(service AWS-Service) (task ff3e71a4-d7e5-428b-9232-2345657889) failed container health checks
Résolution
Pour résoudre les problèmes liés aux échecs de surveillance de l'état des conteneurs Amazon ECS, procédez comme suit :
- Avant de procéder au provisionnement vers Amazon ECS, testez le conteneur localement pour vous assurer qu'il passe avec succès les surveillances de l’état du conteneur.
- Vérifiez que la commande que vous transmettez au conteneur est correcte et que vous utilisez la syntaxe correcte pour vos tâches Amazon ECS.
- Donnez à votre conteneur suffisamment de temps pour démarrer.
- Si votre tâche Amazon ECS continue de s'exécuter pendant une période prolongée, consultez les journaux de vos applications et les journaux Amazon CloudWatch.
Testez le conteneur localement pour vous assurer qu'il passe avec succès la surveillance de l’état du conteneur
Avant de fournir votre conteneur à Amazon ECS, assurez-vous qu'il fonctionne comme prévu et qu'il peut passer avec succès la surveillance de l’état du conteneur spécifié. Testez votre conteneur avec la configuration Dockerfile HEALTHCHECK sur le site Web de Docker. Vérifiez que le conteneur passe la surveillance de l’état défini dans le Dockerfile. Spécifiez ensuite la configuration de la surveillance de l’état dans la définition de la tâche pour permettre à l'agent de conteneur Amazon ECS de surveiller et de signaler la surveillance de l’état.
**Remarque :**Amazon ECS ne surveille pas les surveillances de l’état de Docker qui sont intégrés à une image de conteneur et qui ne sont pas spécifiés dans la définition du conteneur. Les paramètres de surveillance de l’état spécifiés dans une définition de conteneur remplacent les surveillances de l’état Docker qui existent dans l'image du conteneur.
Vérifiez que vous utilisez la syntaxe correcte pour vos tâches Amazon ECS
Remarque : si vous recevez des erreurs lors de l'exécution des commandes de l'interface de la ligne de commande AWS (AWS CLI), assurez-vous que vous utilisez la version la plus récente de l'AWS CLI.
Utilisez les commandes et la syntaxe appropriées pour vos tâches Amazon ECS. Si vous utilisez le panneau JSON de la console de gestion AWS, l'interface de ligne de commande AWS ou des API, placez la liste des commandes entre crochets.
Exemple de commande :
["CMD-SHELL", "curl -f http://localhost/ || exit 1"]
Si vous utilisez la console de gestion AWS pour modifier votre tâche ECS, vous n'avez pas besoin d'inclure les crochets :
CMD-SHELL, Curl -f http://localhost/ || exit 1
Ne séparez pas la commande de surveillance de l’état par des guillemets doubles, tels que \ [« CMD-SHELL », « healthcheck.sh », « || », « exit 1»]. Utilisez plutôt la syntaxe de commande suivante :
["CMD-SHELL", "healthcheck.sh || exit 1"]
Donnez à votre conteneur suffisamment de temps pour démarrer
Si le démarrage de votre conteneur prend beaucoup de temps, il est possible qu'il échoue à la surveillance de l’état du conteneur. Définissez le paramètre startPeriod dans le paramètre de définition avancée du conteneur. Cela donne à votre conteneur Amazon ECS le temps de démarrer avant que les échecs de surveillance de l'état ne soient inclus dans le nombre maximum de tentatives.
Pour les tâches qui s'exécutent pendant une longue période, consultez les journaux de vos applications et les journaux Amazon CloudWatch
Si votre conteneur Amazon ECS fonctionne pendant une longue période et que la surveillance de l'état du conteneur échoue, consultez les journaux de vos applications. Si votre tâche Amazon ECS utilise le pilote de journal awslogs, consultez les journaux de vos applications sur CloudWatch.
**Remarque :**AWS Fargate est un service géré. Par conséquent, vous ne pouvez pas accéder à l'infrastructure sous-jacente. Pour résoudre ce problème, lancez vos tâches Amazon ECS dans Amazon Elastic Compute Cloud (Amazon EC2). Puis, utilisez SSH pour vous connecter à vos instances Amazon EC2. Vous pouvez également utiliser Amazon ECS Exec pour interagir directement avec vos conteneurs ECS.
Informations connexes
Comment puis-je exécuter mes tâches Amazon ECS à l’aide du type de lancement Amazon EC2 pour la réussite de la surveillance de l’état d’Application Load Balancer dans Amazon ECS ?