Direkt zum Inhalt

Wie behebe ich eine ECS-Aufgabe, die aufgrund von Problemen mit einem DNS-Namen eines EFS-Dateisystems nicht gestartet wird?

Lesedauer: 3 Minute
0

Ich möchte eine Fehlerbehebung für meine Amazon Elastic Container Service (Amazon ECS)-Aufgabe durchführen, die nicht gestartet wird. Die Aufgabe wird aufgrund von Problemen mit meinem DNS-Namen für das Amazon Elastic File System (Amazon EFS)-Dateisystem nicht gestartet.

Kurzbeschreibung

Wenn du in der ECS-Aufgabendefinition auf der EFS-Dateisystem und den Container-Mountingpunkt verweist, mountet ECS das Dateisystem im Container. Wenn du die ECS-Aufgabendefinition mit einem EFS-Volume-Mount verwenden, um eine ECS-Aufgabe auszuführen, schlägt die Aufgabe mit dem folgenden Fehler fehl:

"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."

Dieser Fehler tritt aus den folgenden Gründen auf:

  • Du verwendest einen benutzerdefinierten Domainnamen und Server in der Virtual Private Cloud (VPC) anstelle von AmazonProvidedDNS.
  • Deine VPC-DNS-Hostnamen sind ausgeschaltet.
  • Dein EFS hat keine Mount-Ziele oder die Ziele befinden sich nicht in derselben Availability Zone wie die ECS-Aufgaben.

Wenn der DNS-Name ein EFS-Dateisystem nicht auflöst, verwendet ECS efs-util-Tools, um botocore zu installieren und die Mount-Ziel-IP-Adresse abzurufen. Da botocore nicht standardmäßig auf ECS-optimierten AMIs installiert ist, schlägt die Aufgabe fehl.

Lösung

Du hast einen benutzerdefinierten Domainnamen und Server in der VPC

Für Aufgaben, die auf Amazon EC2 ausgeführt werden

Hinweis: Diese Schritte gelten nur für Amazon EC2-Instances.

1.    Verwende SSH, um eine Verbindung zu der Container-Instance herzustellen. Führe den folgenden Befehl aus, um botocore zu installieren:

 sudo pip3 install botocore --upgrade

Installiere botocore beim Start der Instance als Teil der UserData, die du in der Auto-Scaling-Gruppe für Container-Instances konfigurieren.

2.    Füge der AWS Identity and Access Management (IAM)-Rolle für die Container-Instance die folgenden Berechtigungen hinzu:

 elasticfilesystem:DescribeMountTargets
 ec2:DescribeAvailabilityZones

Für Aufgaben, die auf Fargate ausgeführt werden

Damit die benutzerdefinierten Domainnamenserver AWS-Ressourcen auflösen können, konfiguriere die bedingte DNS-Weiterleitung.

Hinweis: Bei AWS Fargate-Instances kannst du nicht auf die Instance zugreifen, um botocore zu installieren und musst die DNS-Namensauflösung verwenden.

Deine VPC-DNS-Hostnamen sind ausgeschaltet

Um DNS-Attribute zu überprüfen, führe die Schritte unter DNS-Attribute aus. Wenn DNS-Hostnamen deaktiviert ist, schalte es ein und überprüfe dann, ob die ECS-Aufgaben ausgeführt werden.

Dein EFS hat keine Mount-Ziele oder die Ziele befinden sich nicht in derselben Availability Zone wie die ECS-Aufgaben

Das EFS-Dateisystem muss Mount-Ziele haben und die Ziele müssen sich in derselben Availability Zone wie die ECS-Aufgaben befinden. Weitere Informationen findest du unter Mount-Ziele und Sicherheitsgruppen erstellen und verwalten.

Ähnliche Informationen:

Verwenden von botocore zum Abrufen der Mount-Ziel-IP-Adresse, wenn der DNS-Name auf der GitHub-Website nicht aufgelöst werden kann

AWS OFFICIALAktualisiert vor 3 Jahren