Comment résoudre l'erreur « dockertimeouterror unable transition start timeout after wait 3m0s » (dockertimeouterror : impossible de passer à l'état started (démarré) ; délai d'attente de 3m0s dépassé) dans Amazon ECS pour Fargate ?

Dernière mise à jour: 17/12/2020

J'obtiens l'erreur « dockertimeouterror unable transition start timeout after wait 3m0s » (dockertimeouterror : impossible de passer à l'état started (démarré) ; délai d'attente de 3m0s dépassé) dans mes tâches Amazon ECS (Amazon Elastic Container Service) pour AWS Fargate.

Brève description

Cette erreur se produit lorsqu'il y a un problème de configuration réseau au niveau de vos tâches Fargate. Pour Fargate, la valeur par défaut du délai de démarrage est de trois minutes. Si une tâche ne passe pas de l'état pending (en attente) à l'état running (en cours d'exécution) au bout de trois minutes, cette tâche échoue et passe à l'état stopped (arrêté).

Si vos tâches Fargate s'exécutent dans un sous-réseau privé sans qu'aucune instance NAT ni passerelle ne soit configurée, vous devez définir les points de terminaison Amazon VPC (Amazon Virtual Private Cloud) appropriés. Cela concerne les points de terminaison des produits suivants :

  • Amazon ECR (Amazon Elastic Container Registry) : Celui-ci est nécessaire pour extraire l'image du référentiel ECR.
  • Amazon S3 (Amazon Simple Storage Service) : Celui-ci est nécessaire, car Amazon ECR utilise Amazon S3 pour stocker vos couches d'image. Lorsque vos conteneurs téléchargent des images depuis Amazon ECR, ils doivent accéder à Amazon ECR pour obtenir le manifeste d'image, puis à Amazon S3 pour télécharger les couches d'image réelles.
  • AWS Secrets Manager et/ou AWS Systems Manager : Ceux-ci sont nécessaires si vous référencez des secrets Secrets Manager ou des paramètres Systems Manager Parameter Store dans vos définitions de tâches afin d'injecter des données sensibles dans vos conteneurs. Vous devez créer les points de terminaison de VPC d'interface pour Secrets Manager ou Systems Manager afin que ces tâches puissent atteindre ces services. Vous devez créer les points de terminaison uniquement à partir du service spécifique (Secrets Manager ou System Manager) dans lequel vos données sensibles sont hébergées.
  • Amazon CloudWatch : Celui-ci est nécessaire lorsque les tâches Fargate utilisent awslogs comme pilote de journalisation. En effet, les tâches qui utilisent awslogs comme pilote de journalisation exportent leurs journaux vers CloudWatch. Si vous utilisez awslogs et que le point de terminaison de VPC pour CloudWatch est créé mais pas configuré, vos tâches ne peuvent pas atteindre le point de terminaison. Vous recevez l'erreur suivante : « DockerTimeoutError: Could not transition to started; timed out after waiting 3m0s » (DockerTimeoutError : Impossible de passer à l'état started (démarré) ; le délai d'attente de 3m0s a été dépassé).

Solution

Vérifiez si votre définition de tâche utilise le pilote de journalisation awslogs

  1. Ouvrez la console Amazon ECS.
  2. Dans le volet de navigation, choisissez Task Definitions (Définitions de tâches).
  3. Choisissez la définition de tâche qu'utilise votre tâche ou service, puis choisissez le nom de votre définition de tâche.
  4. Dans la section Container Definitions (Définitions de conteneurs) de votre définition de tâche, choisissez l'icône d'extension de votre conteneur dans la colonne Container Name (Nom du conteneur).
  5. Dans la sous-section Log Configuration (Configuration du journal), vérifiez que Log driver (Pilote de journal) est défini sur awslogs.

Important : Vous devez utiliser des points de terminaison de VPC si vos tâches s'exécutent dans un sous-réseau privé dépourvu de passerelle NAT ou d'instance NAT.

Vérifiez que vous disposez d'un point de terminaison de VPC pour vos tâches Fargate

  1. Ouvrez la console Amazon VPC.
  2. Dans le volet de navigation, sélectionnez Points de terminaison.
  3. Vérifiez que com.amazonaws.region.logs figure dans le champ Nom du service.

Si le point de terminaison n'y figure pas, créez un nouveau point de terminaison.

Si le point de terminaison y figure, vérifiez que le point de terminaison est le même VPC que celui où sont exécutées les tâches Fargate. Pour ce faire, dans la console VPC, choisissez le point de terminaison, puis recherchez l'ID de VPC dans l'onglet Détails du point de terminaison.

Si le point de terminaison n'est pas utilisé par le même VPC que les tâches Fargate, créez un nouveau point de terminaison.

Si le point de terminaison est utilisé par le même VPC que les tâches Fargate, vérifiez que les conditions suivantes sont réunies pour le groupe de sécurité associé au VPC :

  • La règle d'entrée du groupe de sécurité doit autoriser le trafic du port 443 en provenance des tâches Fargate.
  • Le groupe de sécurité associé à la tâche Fargate doit avoir une règle de sortie pour envoyer le trafic du port 443 vers le point de terminaison de VPC.

Désormais, vos tâches Fargate peuvent atteindre les points de terminaison CloudWatch que vous avez créés.


Cet article vous a-t-il été utile ?


Besoin d'aide pour une question technique ou de facturation ?