Passer au contenu

Comment résoudre une tâche ECS qui ne démarre pas en raison de problèmes liés au nom DNS d'un système de fichiers EFS ?

Lecture de 4 minute(s)
0

Je souhaite résoudre les problèmes liés au non-démarrage de la tâche Amazon Elastic Container Service (Amazon ECS). La tâche ne démarre pas en raison de problèmes liés au nom DNS de mon système de fichiers Amazon Elastic File System (Amazon EFS).

Brève description

Lorsque vous faites référence à votre système de fichiers EFS et à votre point de montage de conteneur dans votre définition de tâche ECS, ECS monte le système de fichiers dans votre conteneur. Lorsque vous utilisez la définition de tâche ECS avec un montage de volume EFS pour exécuter une tâche ECS, celle-ci échoue avec l'erreur suivante :

"ResourceInitializationError: failed to invoke EFS utils commands to set up EFS volumes: stderr: Failed to resolve "fs-<id>.efs.<region>.amazonaws.com" - check that your file system ID is correct, and ensure that the VPC has an EFS mount target for this file system ID. See https://docs.aws.amazon.com/console/efs/mount-dns-name for more detail. Attempting to lookup mount target ip address using botocore. Failed to import necessary dependency botocore, please install botocore first."

L'erreur se produit pour les raisons suivantes :

  • Vous utilisez un nom de domaine et des serveurs personnalisés dans votre cloud privé virtuel (VPC) au lieu du DNS AmazonProvidedDNS.
  • Les noms d'hôte DNS de votre VPC sont désactivés.
  • Votre EFS ne comporte pas de cibles de montage ou les cibles ne se trouvent pas dans la même zone de disponibilité que vos tâches ECS.

Lorsque le nom DNS ne résout pas un système de fichiers EFS, ECS utilise les outils efs-util pour installer botocore et récupérer l'adresse IP cible du montage. Dans la mesure où botocore n'est pas installé par défaut sur les AMI optimisées pour ECS, la tâche échoue.

Résolution

Votre VPC compte un nom de domaine et des serveurs personnalisés

Pour les tâches exécutées sur Amazon EC2

Remarque : Ces étapes s'appliquent uniquement aux instances Amazon EC2.

1.    Utilisez le protocole SSH pour vous connecter à votre instance de conteneur. Pour installer botocore, exécutez la commande suivante :

 sudo pip3 install botocore --upgrade

Installez botocore lors du lancement de l'instance dans le cadre des données utilisateur que vous configurez dans votre groupe Auto Scaling pour les instances de conteneur.

2.    Ajoutez les autorisations suivantes au rôle Gestion des identités et des accès AWS (AWS IAM) pour l'instance de conteneur :

 elasticfilesystem:DescribeMountTargets
 ec2:DescribeAvailabilityZones

Pour les tâches exécutées sur Fargate

Pour permettre à vos serveurs de noms de domaine personnalisés de résoudre les problèmes liés aux ressources AWS, configurez le transfert DNS conditionnel.

Remarque : Pour les instances AWS Fargate, vous ne pouvez pas accéder à l'instance pour installer botocore et vous devez utiliser la résolution de noms DNS.

Les noms d'hôte DNS de votre VPC sont désactivés

Pour consulter les attributs DNS, suivez les étapes décrites dans la section Attributs DNS. Si Noms d'hôte DNS est désactivé, activez-le, puis vérifiez si les tâches ECS sont en cours d'exécution.

Votre EFS ne comporte pas de cibles de montage ou les cibles ne se trouvent pas dans la même zone de disponibilité que vos tâches ECS

Votre système de fichiers EFS doit comporter des cibles de montage et celles-ci doivent se trouver dans la même zone de disponibilité que les tâches ECS. Pour plus d'informations, consultez la section Création et gestion de cibles de montage et de groupes de sécurité.

Informations connexes

Utilisation de botocore pour récupérer l'adresse IP cible du montage lorsque le nom DNS ne peut pas être résolu sur le site Web de GitHub

AWS OFFICIELA mis à jour il y a 2 ans