Comment puis-je résoudre les problèmes liés aux échecs de surveillance de l'état du conteneur pour les tâches Amazon ECS ?

Lecture de 3 minute(s)
0

Ma tâche Amazon Elastic Container Service (Amazon ECS) échoue à la surveillance de l'état du conteneur.

Brève description

Si les conteneurs Amazon ECS de votre tâche utilisent des surveillances d’état que votre service ne peut pas passer avec succès, vous recevez l’erreur suivante :

« (service AWS-Service) (task ff3e71a4-d7e5-428b-9232-2345657889) failed container health checks. »

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’AWS CLI.

Testez l’instance de conteneur localement pour vous assurer qu'elle réussit la surveillance d’état du conteneur

Avant de provisionner votre instance de conteneur sur Amazon ECS, assurez-vous qu'elle fonctionne comme prévu. Testez votre conteneur avec HEALTHCHECK sur le site Web de Docker Docs. Vérifiez que le conteneur passe la surveillance de l’état définie dans le Dockerfile. Puis, spécifiez 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

Vérifiez que la commande que vous transmettez à l’instance de conteneur est correcte et que vous utilisez la syntaxe appropriée pour vos commandes. Ne séparez pas la commande de surveillance de l’état par des guillemets doubles, par exemple ["CMD-SHELL", "healthcheck.sh", "||", "exit 1"]. Utilisez plutôt la syntaxe de commande suivante :

["CMD-SHELL", "healthcheck.sh || exit 1"]

Laissez à votre instance de conteneur suffisamment de temps pour démarrer

Si le démarrage de votre instance de conteneur prend du temps, il se peut qu'elle échoue lors de la surveillance de l'état du conteneur. Définissez startPeriod dans le paramètre de définition avancée du conteneur pour répondre à vos besoins de configuration.

Pour les tâches qui s'exécutent depuis longtemps, consultez vos journaux d’application

Si votre instance de conteneur s’exécute pendant une longue période et que la surveillance de l'état du conteneur échoue, consultez vos journaux d’application. Si votre tâche utilise le pilote de journal awslogs, consultez vos journaux d’application sur Amazon CloudWatch.

Remarque : AWS Fargate est un service géré, vous ne pouvez donc pas accéder à l'infrastructure sous-jacente. Pour résoudre ce problème pour Fargate, 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 ECS Exec pour interagir directement avec vos conteneurs Amazon ECS.

Informations connexes

Comment puis-je faire en sorte que mes tâches Amazon ECS qui utilisent le type de lancement Amazon EC2 réussissent la surveillance de l’état de l'Application Load Balancer ?

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a 4 mois