web-dev-qa-db-fra.com

STOPPED (CannotPullContainerError: erreur d'API (500): Get htt)

Je reçois cette erreur lors de l'exécution d'une tâche sur mon cluster Amazon Fargate. Est-ce que quelqu'un a déjà vu ça? Merci d'avance.

8
Austin K

L'adresse IP publique est obligatoire pour Farget. Pour plus de détails https://github.com/aws/Amazon-ecs-agent/issues/1128

5
manish

Allez à la documentation pour une réponse à celle-ci.

https://docs.aws.Amazon.com/AmazonECS/latest/developerguide/task_cannot_pull_image.html

Puisque vous rencontrez une erreur 500, je tiens compte de la description de la première erreur, "Connexion expirée":

Lorsqu'une tâche Fargate est lancée, son interface réseau élastique nécessite un routage vers Internet pour extraire les images de conteneur. Si vous recevez une erreur semblable au suivant lors du lancement d’une tâche, c’est qu’il n’existe pas de route vers Internet:

CannotPullContainerError: API error (500): Get https://111122223333.dkr.ecr.us-east-1.amazonaws.com/v2/: net/http: request canceled while waiting for connection

Pour résoudre ce problème, vous pouvez:

  • Pour les tâches des sous-réseaux publics, spécifiez ENABLED pour Attribuer automatiquement une adresse IP publique lors du lancement de la tâche ...

  • Pour les tâches des sous-réseaux privés, spécifiez DISABLED pour Attribuer automatiquement une adresse IP publique lors du lancement de la tâche, puis configurez une passerelle NAT dans votre VPC pour acheminer les demandes vers Internet ...

Si vous rencontrez d'autres problèmes liés aux tâches ECS qui ne démarrent pas ou ne présentent pas un comportement étrange au démarrage, consultez la liste complète des Sujets de dépannage ECS .

Je rencontrais une erreur similaire (404 au lieu de 500), cependant, la tâche a indiqué qu'elle fonctionnait même si le statut détaillé indiquait une erreur.

Il s'avère que le rôle associé à la tâche (dans ce cas, le même rôle que l'instance EC2 sur laquelle elle était exécutée) ne pouvait pas être assumé par ecs-tasks. L'ajout de l'instruction de relation de confiance suivante au rôle a résolu le problème:

{
  "Effect": "Allow",
  "Principal": {
    "Service": "ecs-tasks.amazonaws.com"
  },
  "Action": "sts:AssumeRole"
}

Voir la page spécifique sur le Rôles d'exécution de la tâche pour plus de détails.

2
Tim Klein

Cette erreur se produit lorsque le conteneur ne parvient pas à extraire le conteneur du registre.

  1. Vérifiez que vous attribuez une adresse IP publique à vos conteneurs. Actuellement, le registre de conteneurs AWS ne possède pas de point de terminaison internal-in-vpn.
  2. Vérifiez que vos conteneurs ont un moyen de se connecter à Internet (par exemple: instance nat ou similaire.
  3. Vérifiez que le groupe de sécurité que vous avez associé au conteneur autorise le trafic sortant. Si vous avez créé SG avec terraform ou similaire, vous constaterez peut-être que, par défaut, il n’a pas de règles sortantes.
0
oskarpearson

Vous devez affecter un IP public à votre service. Vous pouvez le faire lors de la définition du service, mais à ma connaissance, vous ne pouvez pas mettre à jour votre service à partir du menu de mise à jour.

0
gaber84