Comment puis-je corriger l'erreur « cannotpullcontainererror » pour mes tâches Amazon ECS sur Fargate ?

Date de la dernière mise à jour : 11/03/2020

Je souhaite corriger l'erreur « cannotpullcontainererror » afin de démarrer mes tâches Amazon Elastic Container Service (Amazon ECS) sur AWS Fargate.

Brève description

L'erreur « cannotpullcontainererror » peut empêcher le démarrage des tâches. Pour démarrer une tâche Amazon ECS sur Fargate, vos configurations de mise en réseau Amazon Virtual Private Cloud (Amazon VPC) doivent permettre à votre infrastructure Amazon ECS d'accéder au référentiel où l'image est stockée. Sans mise en réseau appropriée, l'image ne peut pas être extraite par Amazon ECS sur Fargate et le démarrage du conteneur est impossible.

Résolution

Confirmer que votre configuration de mise en réseau VPC permet à votre infrastructure Amazon ECS d'atteindre le référentiel d'images

Les tables de routage associées aux sous-réseaux dans lesquels votre tâche est créée doivent permettre à votre infrastructure Amazon ECS d'atteindre le point de terminaison d'un référentiel via une passerelle Internet, une passerelle NAT ou des points de terminaison d'un VPC.

Si vous n'utilisez pas AWS PrivateLink, procédez comme suit :

  1. Ouvrez la console Amazon VPC.
  2. Dans le volet de navigation, sélectionnezSous-réseaux.
  3. Sélectionnez le sous-réseau utilisé par votre tâche ECS Fargate.
  4. Choisissez l'onglet Table de routage.
  5. Dans la colonne Destination, vérifiez que la route par défaut (0.0.0.0/0) de la table de routage active l'accès Internet public. Cet accès peut se faire via une passerelle NAT ou une passerelle Internet.
    Important : la passerelle NAT ou la passerelle Internet doit être la cible de l'itinéraire par défaut. Par exemple, des tables de routage. Voir Exemple d'options de routage. Si vous n'utilisez pas de passerelle NAT ou de passerelle Internet, assurez-vous que votre configuration personnalisée autorise l'accès à l'Internet public.

Si vous utilisez une passerelle Internet (sous-réseaux publics), vérifiez qu'une adresse IP publique est affectée à la tâche. Pour ce faire, lancez votre tâche ECS avec l'option Attribuer automatiquement l'adresse IP publique définie sur Activée dans la section VPC et groupes de sécurité lorsque vous créez la tâche ou le service.

Si vous utilisez PrivateLink, vérifiez que les groupes de sécurité de vos points de terminaison d'un VPC autorisent l'infrastructure Fargate à les utiliser.

Remarque : seules les tâches Amazon ECS qui utilisent le type de lancement Fargate et la version 1.3.0 ou antérieure de la plateforme ont besoin du point de terminaison d'un VPC com.amazonaws.region.ecr.dkr pour Amazon Elastic Container Registry (Amazon ECR) et le point de terminaison de passerelle Amazon Simple Storage Service (Amazon S3).

  1. Ouvrez la console Amazon VPC.
  2. Dans le volet de navigation, sélectionnez Points de terminaison.
  3. Sélectionnez le point de terminaison dans la liste des points de terminaison, puis choisissez l'onglet Sous-réseaux. Les points de terminaison d'un VPC com.amazonaws.region.ecr.dkr et com.amazonaws.region.ecr.api pour Amazon ECR doivent figurer sur la liste des sous-réseaux et être associés aux sous-réseaux Fargate. Vous devez également voir la passerelle Amazon S3 dans la liste des sous-réseaux.
    Remarque : si aucun sous-réseau n'est répertorié, choisissez Gérer les sous-réseaux. Ensuite, sélectionnez le sous-réseau en fonction de sa zone de disponibilité, puis choisissez Modifier les sous-réseaux.
  4. Cliquez sur l'onglet Stratégie puis confirmez que les exigences de stratégie appropriées sont respectées.
  5. Pour confirmer que le groupe de sécurité attaché aux points de terminaison d'un VPC com.amazonaws.region.ecr.api et com.amazonaws.region.ecr.dkr autorise les connexions entrantes sur le port 443 à partir des tâches Amazon ECS pour Fargate, sélectionnez le point de terminaison dans la liste des points de terminaison.
  6. Choisissez l'onglet Groupes de sécurité.
  7. Pour ID de groupe, choisissez l'ID de groupe de sécurité.
  8. Choisissez l'onglet Règles entrantes, puis confirmez que vous pouvez voir la règle qui autorise 443 connexions à partir de vos tâches ECS sur Fargate.

Vérifier l'ensemble d'options DHCP VPC

  1. Ouvrez la console Amazon VPC.
  2. Dans le volet de navigation, choisissez Votre VPC.
  3. Sélectionnez le VPC qui contient votre tâche Fargate.
  4. Sous l'onglet Informations, notez le paramètre défini pour l'ensemble d'options DHCP.
  5. Dans le volet de navigation, choisissez Ensembles d'options DHCP.
  6. Sélectionnez l'ensemble d'options DHCP que vous avez noté à l'étape 4.
  7. Choisissez Actions, puis Afficher les informations.
  8. Vérifiez que Serveurs de nom de domaine est défini sur AmazonProvidedDNS. S'il n'est pas défini sur AmazonProvidedDNS, configurez le transfert DNS conditionnel.

Vérifier les autorisations de rôle d'exécution de tâche

  1. Ouvrez la console IAM.
  2. Dans le volet de navigation, choisissez Rôles.
  3. Sélectionnez le rôle d'exécution de tâche utilisé par vos tâches Fargate.
  4. Vérifiez que le rôle d'exécution de tâche dispose des autorisations nécessaires pour extraire une image d'Amazon ECR.

Vérifier que l'image existe

  1. Ouvrez la console Amazon ECR.
  2. Sélectionnez le référentiel Amazon ECR dans lequel votre tâche Fargate devrait extraire l'image.
  3. Vérifiez que l'URI et la balise dans Amazon ECR sont identiques à celles spécifiées dans la définition de tâche.

Remarque : si vous n'utilisez pas Amazon ECR, assurez-vous que vous voyez image:tag dans le référentiel d'images spécifié.</p


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


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