web-dev-qa-db-fra.com

Débogage de tâche AWS Fargate, que signifie "CannotPullContainerError ... format de référence invalide"?

J'ai un conteneur Docker stocké sur AWS ECR, à l'aide de ce conteneur, j'ai créé la tâche. Lorsque j'exécute Task sur Fargate, le service passe des états PROVISIONING> PENDING (couleur rouge)> STOPPED.

Il n'y a pas de journal dans Service Event ou CloudWatch. Absolument aucun moyen de savoir quel est le vrai problème.

Aucune idée de la manière de procéder, le document AWS n'a pas aidé.

6
RajDev

J'ai aussi vu cette erreur. Dans mon cas, le problème était que j'avais une valeur image invalide dans ma définition de conteneur. L'image est généralement un repository_url et une balise d'image conformes aux instructions image dans https://docs.aws.Amazon.com/elasticloadbalancing/latest/application/load-balancer-access-logs.html

3
Marc

AWS Fargate a une information simple mais complexe qui manque, c’est ce qui vous a conduit à votre problème. Laissez-moi vous expliquer, étape par étape.

La première étape consiste à créer une définition de tâche. Lorsque vous le faites, vous pouvez définir

 Entry point ["/bin/ls"]
Command     [">","/list.txt","|","echo","/list.txt"]

Ceci est équivalent à/bin/ls> /list.txt | echo /list.txt.

Veuillez noter que les espaces entre les deux doivent être remplacés par des virgules. L’équipe AWS Farget a oublié que, dans la section TaskDefinition> Add Container de l’assistant, ce délimiteur de virgule a un écho, helloworld est fourni dans la zone de texte [! [Entrer la description de l’image ici] [1]] [1]. Mais dans le formulaire de tâche, il n'y a pas une telle information. C'est très déroutant. 

Une dernière chose, AWS Fargate a des informations très limitées pour le débogage. Voici mes conseils

  • Vous ne pouvez obtenir qu’une erreur possible sous Groupe> Tâche> {NomTâche}> {conteneur}. Sous motif d'erreur.
  • Si l'erreur est très petite, j'ai toujours Error Code0, pas d'espace entre Code0. Rien sur Cloud ne regarde aussi.
  • Si le texte d'erreur est trop gros (environ 20 caractères ou>), vous l'obtiendrez dans le journal # 1 et dans le journal CloudWatch.

J'espère que ça aide

2
rajesk

Est-ce que cette question a déjà répondu? D'après mon expérience, vous devez ajouter des autorisations dans votre caisse enregistreuse électronique. Dans votre référentiel, il y a un onglet appelé leurs autorisations. Ajoutez les autorisations dont vous pensez avoir besoin.

1

Comme Marc le mentionne, il s'agit généralement d'un nom d'image DockerHub/repo erroné.

Dans mon cas, c'est parce que le nom de l'image a été calculé par une variable d'environnement, dans mon fichier Docker Compose:

services:
  web:
    image: scipilot/my-web-app:$MY_VERSION_TAG

Et j'avais manqué de définir la variable d'environnement en utilisant ecs-cli compose service up. Donc, Fargate essayait probablement d'extraire "scipilot/my-web-app:" de Docker Hub, d'où une erreur de format non valide.

0
scipilot