Comment puis-je résoudre l’erreur « CannotPullContainerError » dans ma tâche de type lancement Amazon EC2 ?

Lecture de 5 minute(s)
0

Lorsque je lance une tâche EC2 dans Amazon Elastic Container Service (Amazon ECS), je reçois le message d’erreur suivant : « CannotPullContainerError ».

Brève description

L’erreur CannotPullContainerError se produit en raison de l’un des problèmes suivants :

  • Une tâche de type lancement Amazon Elastic Compute Cloud (Amazon EC2) ne peut pas extraire l’image en raison d’un réseau mal configuré.
  • Votre rôle Gestion des identités et des accès AWS (AWS IAM) ne dispose pas des autorisations nécessaires pour extraire ou diffuser des images.
  • DockerHub est soumis à une limite de débit.
  • Le nom ou la balise de l’image n’existe pas.

Pour résoudre les erreurs liées aux tâches Amazon ECS qui ne démarrent pas, utilisez le runbook AWSSupport-TroubleshootECSTaskFailedToStart. Ensuite, suivez les étapes de dépannage correspondant à votre problème.

Résolution

Important :

  • utilisez le runbook AWSSupport-TroubleshootECSTaskFailedToStart dans la même région AWS que celle où se trouvent les ressources de votre cluster ECS.
  • Lorsque vous appliquez le runbook, vous devez utiliser le dernier ID de tâche ayant échoué. Si la tâche ayant échoué fait partie d’un service Amazon ECS, utilisez la dernière tâche ayant échoué dans le service. La tâche ayant échoué doit être visible dans ECS:DescribeTasks pendant l’automatisation. Par défaut, les tâches ECS arrêtées sont visibles pendant 1 heure après le passage à l’état Arrêté. L’utilisation du dernier identifiant de tâche ayant échoué permet d’éviter que le nettoyage de l’état de la tâche interrompe l’analyse pendant l’automatisation.

Pour savoir comment lancer le runbook, consultez la page AWSSupport-TroubleshootECSTaskFailedToStart. En fonction des résultats de l’automatisation, utilisez l’une des étapes de dépannage manuelles suivantes.

La configuration réseau de votre instance de conteneur Amazon ECS est incorrecte

Si votre instance de conteneur Amazon ECS ne dispose pas d’une connexion Internet, elle ne peut pas accéder au point de terminaison Amazon Elastic Container Registry (Amazon ECR). Sans connexion au point de terminaison, l’instance ne peut pas extraire l’image. Pour vérifier que votre instance de conteneur ECS a accès à Internet, passez en revue les points suivants :

Votre rôle IAM ne dispose pas des autorisations appropriées pour extraire des images

Vérifiez que le rôle IAM d’instance associé au profil d’instance est autorisé à accéder au référentiel Amazon ECR.

Remarque : la politique gérée par AWS AmazonEC2ContainerRegistryReadOnly fournit les autorisations minimales requises pour extraire des images.

La limite de taux d’extraction de DockerHub est atteinte

Si vous essayez d’extraire une image depuis DockerHub et que vous avez atteint votre limite de taux d’extraction, le message d’erreur suivant s’affiche :

« CannotPullContainerError : 5 nouvelles tentatives ont été effectuées pour l’inspection de l’image : HttpReaderSeeker : échec de l’ouverture : code d’état inattendu https://registry-1.docker.io/v2/manifests/sha256:2bb501e6429 Trop grand nombre de demandes - Message du serveur : toomanyrequests : »

Pour résoudre ce problème, suivez la procédure décrite sur la page Comment résoudre l’erreur Amazon ECS « CannotPullContainerError : Vous avez atteint votre limite de taux d’extraction » dans Amazon ECS ?

Le nom ou la balise de l’image n’existe pas

Si une image ou la balise associée hébergée dans Amazon ECR qui est spécifiée dans votre définition de tâche n’existe pas, vous recevez l’erreur suivante :

« Cannotpullcontainererror : 1 nouvelle tentative a été effectuée pour l’extraction du manifeste d’image : échec de la résolution réf 123456789.dkr.ecr.ap-southeast-2.amazonaws.com/image-name:tag: 123456789**.dkr.ecr.ap-southeast-2.amazonaws.com/image-name:tag: introuvable** »

Pour résoudre ce problème, vérifiez le champ d’image dans votre définition de tâche. Vérifiez que le référentiel correspondant et la balise définie sont présents dans le registre de conteneurs à partir duquel vous effectuez l’extraction.

Si votre tâche extrait une image d’un registre autre qu’Amazon ECR et qu’il manque des informations, une autre erreur s’affiche. L’erreur suivante se produit si l’image ou la balise n’existe pas, ou si les informations d’identification du registre ne sont pas fournies :

« Cannotpullcontainererror : une nouvelle tentative a été effectuée pour l’extraction du manifeste d’image : échec de résolution réf docker.io/library/invalid-name:non-existenttag : accès refusé pour l’extraction, le référentiel n’existe pas ou peut nécessiter une autorisation : message serveur : insufficient_scope : échec de l’autorisation »

Pour résoudre ce problème, vérifiez le champ d’image dans votre définition de tâche. Assurez-vous que l’image existe dans le registre de conteneurs correspondant. Si l’image existe, veillez à fournir les informations d’identification correctes. Pour en savoir plus, consultez la page Authentification du registre privé pour les tâches.