Warum kann ich meine Amazon-EFS-Volumes nicht in meinen AWS-ECS-Aufgaben mounten?
Wenn ich Amazon-EFS-Volumes (Amazon Elastic File System) in meinen Amazon-ECS-Aufgaben (Amazon Elastic Container Service) mounte, erhalte ich Fehler.
Kurzbeschreibung
Fehlkonfigurationen in den folgenden Einstellungen können zu Problemen führen, wenn du Amazon-EFS-Volumes in deinen Amazon-ECS-Aufgaben mountest:
- EFS-Dateisystem
- Sicherheitsgruppen und Netzwerk-Zugriffssteuerungslisten (Netzwerk-ACL)
- Einstellungen für Amazon Virtual Private Cloud (Amazon VPC)
- VPC-weite Einstellungen, wenn sich dein Amazon-EFS-Volume in einer anderen VPC befindet als deine Aufgaben
- Rollenrichtlinien und Berechtigungen für AWS Identity and Access Management (IAM)
Lösung
Die Ursache des Problems ermitteln
Verwende das Runbook AWSSupport-TroubleshootECSTaskFailedToStart, um das Problem zu ermitteln. Du musst das Runbook in derselben AWS-Region ausführen, in der sich deine Amazon ECS-Cluster-Ressourcen befinden. Verwende außerdem die zuletzt fehlgeschlagene Aufgaben-ID. Wenn die fehlgeschlagene Aufgabe Teil eines Amazon ECS-Service ist, verwende die zuletzt fehlgeschlagene Aufgabe im Service. Die fehlgeschlagene Aufgabe muss während der Automatisierung in ECS:DescribeTasks sichtbar sein. Standardmäßig sind gestoppte ECS-Aufgaben 1 Stunde lang sichtbar, nachdem sie den Status Angehalten erreicht haben.
Verwende auf der Grundlage der Ergebnisse der Automatisierung einen der folgenden manuellen Schritte zur Fehlerbehebung.
Dein EFS-Dateisystem, deine Sicherheitsgruppe und deine Netzwerk-ACL-Konfiguration überprüfen
Wenn du dein EFS-Dateisystem, deine Sicherheitsgruppen oder deine Netzwerk-ACL falsch konfiguriert hast, erhältst du eine Fehlermeldung, die folgenden Beispielen ähnelt:
"ResourceInitializationError: failed to invoke EFS utils commands to set up EFS volumes: stderr: b'mount.nfs4: Connection timed out' : unsuccessful EFS utils command execution; code: 32"
-oder-
"ResourceInitializationError: failed to invoke EFS utils commands to set up EFS volumes: stderr: mount.nfs4: Connection reset by peer : unsuccessful EFS utils command execution; code: 32"
EFS-Dateisystem
Stelle sicher, dass du die Mount-Ziele deines EFS-Dateisystems erstellt hast und sie in derselben Availability Zone und im selben Subnetz verfügbar sind wie deine Aufgaben.
Führe folgende Schritte aus, um die Availability Zone der Mount-Ziele zu überprüfen:
- Öffne die Amazon-EFS-Konsole.
- Wähle im Navigationsbereich Dateisysteme aus.
- Wähle dein Dateisystem aus.
- Wähle Netzwerk aus, um die Liste der vorhandenen Mount-Ziele und deren Netzwerkkonfiguration anzuzeigen.
- Notiere dir die Availability Zones für das Subnetz, in dem das Amazon-EFS-Dateisystem Volumes bereitgestellt hat.
- Öffne die Amazon-ECS-Konsole.
- Wähle im Navigationsbereich die Option Cluster aus.
- Wähle deinen Cluster aus.
- Wähle die Registerkarte Aufgaben aus.
- Wähle deine Aufgaben-ID aus.
- Wählen unter Konfiguration die Subnetz-ID aus.
Hinweis: Diese Aktion öffnet eine neue Registerkarte in deinem Browser auf der Amazon-VPC-Konsole. - Prüfe, ob die Availability Zone des Subnetzes mit der Availability Zone des Amazon-EFS-Dateisystems übereinstimmt. Wenn die Availability Zone des Amazon-EFS-Dateisystems anders lautet, erstelle ein Mount-Ziel in der richtigen Availability Zone.
Sicherheitsgruppen- und Netzwerk-ACLs
Die Sicherheitsgruppe des Mount-Ziels deines EFS-Dateisystems muss NFS-Datenverkehr von deinen Aufgaben über TCP auf Port 2049 zulassen.
Führe folgende Schritte aus, um den Port zu überprüfen:
- Öffne die Amazon-EFS-Konsole.
- Wähle im Navigationsbereich Dateisysteme aus.
- Wähle das Dateisystem aus, das du prüfen möchtest.
- Wähle Netzwerk aus, um die Liste der vorhandenen Mount-Ziele und ihrer zugehörigen Sicherheitsgruppen anzuzeigen. Überprüfe die Regeln für eingehenden Datenverkehr, um sicherzustellen, dass sie TCP-Datenverkehr von Aufgaben-IP-Adressen auf Port 2049 zulassen.
- (Optional) Die zugehörigen Sicherheitsgruppen kannst du über die Option Verwalten ändern.
Es hat sich bewährt, den Zugriff auf Port 2049 einzuschränken, je nachdem, woher deine Verbindung stammt. Befinden sich alle Clients in einem bestimmten Subnetz, verwende den IP-Adressbereich des Subnetzes. Befinden sich alle Clients in der VPC, die mit Amazon EFS verknüpft ist, verwende VPC CIDR. Stammen die Clients aus Remote-Netzwerken, verwende einen IP-Adressbereich, der diesen Netzwerken entspricht.
Die Subnetze müssen Netzwerkverkehr zwischen deinem Amazon-EFS-Dateisystem und deinen Amazon-ECS-Aufgaben zulassen.
Führe folgende Schritte aus, um die Konfiguration des Netzwerkverkehrs zu überprüfen:
- Öffne die Amazon-VPC-Konsole.
- Wähle im Navigationsbereich deine VPCs aus.
- Wähle deine VPC aus.
- Wähle unter Details für Hauptnetzwerk-ACL deine ID aus.
- Stelle sicher, dass die Regeln für eingehenden und ausgehenden Datenverkehr in deiner VPC NFS-Datenverkehr über TCP von Aufgaben-IP-Adressen auf Port 2049 zulassen.
Deine Amazon-VPC-Konfiguration überprüfen
Ist deine Amazon VPC nicht richtig konfiguriert, erhältst du eine Fehlermeldung, die folgendem Beispiel ähnelt:
"ResourceInitializationError: failed to invoke EFS utils commands to set up EFS volumes: stderr: Failed to resolve "fs-abcdefgxyz.efs.us-east-1.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."
DNS-Auflösung und Hostnamen aktivieren
Du musst die DNS-Auflösung und DNS-Hostnamen im DHCP-Optionssatz (Dynamic Host Configuration Protocol) der VPC aktivieren.
Hinweis: DNS-Hostnamen sind standardmäßig deaktiviert.
Stelle sicher, dass dein benutzerdefinierter DNS-Server den DNS-Namen deines Volumes auflösen kann.
Es hat sich bewährt, AmazonProvidedDNS für die DHCP-Optionssätze deiner VPC zu verwenden. Verwendest du stattdessen einen benutzerdefinierten DNS-Server, musst du in der Konfigurationsdatei des DNS-Servers eine bedingte DNS-Weiterleitung konfigurieren.
Prüfe folgende Einstellungen:
- Alle DNS-Abfragen an AWS-Ressourcen (*.amazonaws.com) müssen an den Standard-DNS-Server der VPC gesendet werden.
- Die IP-Adresse muss dem primären CIDR-Bereich der privaten IPV4-Adresse entsprechen, der für deine VPC bereitgestellt wird, plus zwei (x.y.z.2) oder 169.254.169.253. Für CIDR 10.0.0.0/16 lautet die Standard-IP-Adresse des DNS-Servers der VPC beispielsweise 10.0.0.2.
Einstellungen für ein Amazon-EFS-Volume konfigurieren, das sich in einer anderen VPC befindet als deine Container-Instance
Willst du ein Amazon-EFS-Volume mounten, das sich in einer anderen VPC befindet als deine Container-Instance, musst du eine VPC-Peering-Verbindung zwischen den VPCs herstellen. oder ein Transit-Gateway erstellen. Führe dann folgende Schritte zur Problemumgehung aus, je nachdem, wo deine Aufgaben ausgeführt werden.
Amazon EC2 Instances
Für Aufgaben, die auf Amazon Elastic Compute Cloud (Amazon EC2) ausgeführt werden, meldest du dich bei deiner EC2-Instance an und installierst Botocore.
Hinweis: efs-utils verwendet Botocore, um mit anderen AWS-Services zu interagieren. Installationsschritte findest du unter Install Botocore (Botocore installieren) auf der GitHub-Website.
Nur ein von Amazon bereitgestellter DNS-Service in derselben VPC wie das EFS-Dateisystem kann den DNS-Namen von Amazon EFS auflösen. Führe folgenden Befehl aus, um die IP-Adresse des Amazon-EFS-Mount-Ziels in der Datei /etc/hosts des Computers fest zu codieren:
echo "mount-target-IP-address fs-id.efs.region.amazonaws.com" | sudo tee -a /etc/hosts
Hinweis: Ersetze mount-target-IP-address mit der IP-Adresse des Mount-Ziels, fs-id mit der ID des EFS-Dateisystems und region mit deiner Region. Ressourcen außerhalb der VPC können den DNS-Namen weiterhin nicht auflösen.
Fargate-Aufgaben
In der folgenden Problemumgehung ist VPC A die VPC, in der deine Amazon-ECS-Aufgaben ausgeführt werden und in der sich der Amazon-EFS-Client befindet. VPC B ist die VPC für dein Amazon-EFS-Volume. Die Problemumgehung verwendet Amazon Route 53 Resolver, um Daten nicht fest zu codieren. Informationen zur Preisgestaltung findest du unter Amazon Route 53 – Preise.
Voraussetzungen:
- Die VPCs A und B verwenden den von Amazon bereitgestellten DNS-Service. Oder: Dein benutzerdefinierter DNS-Server verwendet eine bedingte DNS-Weiterleitung in der Konfigurationsdatei des DNS-Servers.
- Die Regeln für eingehenden Datenverkehr der Sicherheitsgruppe von Amazon EFS lassen NFS-Datenverkehr über TCP auf Port 2049 für das CIDR von VPC A zu.
Werden deine Aufgaben auf AWS Fargate ausgeführt, dann führe folgende Schritte aus:
- Erstelle einen eingehenden Route-53-Endpunkt in VPC B und konfiguriere folgende Einstellungen:
Wähle für VPC in region-name Region VPC B aus.
Wähle als Sicherheitsgruppe für diesen Endpunkt eine Sicherheitsgruppe aus, die eingehenden TCP- und UDP-Datenverkehr von VPC A auf Port 53 zulässt.
Erstelle für IP-Adressen zwei IP-Adressen.
Hinweis: Wenn dein Server den DNS-Namen auflöst, gibt er normalerweise die IP-Adresse des Mountingpunkts zurück, der sich in derselben Availability Zone befindet wie dein Client. Verwendest du diese Problemumgehung, stammen deine DNS-Abfragen vom eingehenden Endpunkt. Folglich bestimmt die Availability Zone des eingehenden Endpunkts die zurückgegebene IP-Adresse.
Wenn du möchtest, dass eine einzelne IP-Adresse für dein EFS-Dateisystem zurückzugeben wird, konfiguriere einen einzelnen Mountingpunkt. Oder platziere beide IP-Adressen in dieselbe Availability Zone. Wenn du unterschiedliche Availability Zones auswählst, gibt der DNS-Name eine andere IP-Adresse zurück, die auf dem eingehenden Endpunkt basiert, der deine Abfrage weitergeleitet hat. - Erstelle einen ausgehenden Route-53-Endpunkt in VPC A und konfiguriere folgende Einstellungen:
Wähle für VPC in region-name Region VPC A aus.
Wähle als Sicherheitsgruppe für diesen Endpunkt eine Sicherheitsgruppe aus, die ausgehenden TCP- und UDP-Datenverkehr an VPC B auf Port 53 zulässt. - Erstelle eine Resolver-Regel für Route 53, um DNS-Abfragen für den DNS-Namen von Amazon EFS an den Amazon-DNS in VPC B weiterzuleiten.
Konfiguriere folgende Einstellungen:
Gib als Domainname den vollständigen DNS-Namen deines EFS-Dateisystems ein, z. B. fs-abcdef.efs.eu-west-1.amazonaws.com.
Wähle für VPCs, die diese Regel verwenden, VPC A aus.
Wähle für Ausgehender Endpunkt den ausgehenden Endpunkt in VPC A aus.
Gib für Ziel-IP-Adressen die beiden IP-Adressen für den eingehenden Endpunkt von Route 53 in VPC B ein. - Führe folgende Befehle von deinem Client aus, um zu überprüfen, ob du dein Amazon-EFS-Volume mit dem DNS-Namen mounten kannst:
sudo mount.efs fs-abcdefxyz /mnt
Hinweis: Ersetze region durch deine Region und fs-abdcexzy durch die Volume-ID des Dateisystems.dig fs-abcdefxyz.efs.region.amazonaws.com
Deine IAM-Rollenrichtlinien und -Berechtigungen überprüfen
Gibt es Probleme mit deinen IAM-Rollenrichtlinien und -Berechtigungen, erhältst du eine Fehlermeldung, die folgenden Beispielen ähnelt:
"ResourceInitializationError: failed to invoke EFS utils commands to set up EFS volumes: stderr: b'mount.nfs4: access denied by server while mounting 127.0.0.1:/' : unsuccessful EFS utils command execution; code: 32"
-oder-
"ResourceInitializationError: failed to invoke EFS utils commands to set up EFS volumes: stderr: b'mount.nfs4: mounting fs-xxx.efs.us-east-1.amazonaws.com:/dir failed, reason given by server: No such file or directory' : unsuccessful EFS utils command execution; code: 32"
Berechtigungen, die du in folgenden Ressourcen definierst, könnten den Zugriff auf das EFS-Dateisystem steuern:
- IAM-Richtlinie für Amazon-ECS-Aufgabenrollen
- EFS-Dateisystemrichtlinien
- Die POSIX-Berechtigungen, die deinem Zugangspunkt zugewiesen sind
- Die Netzwerk-ACL und Sicherheitsgruppen
**Hinweis:**Informationen zur Überprüfung deiner Netzwerk-ACLs und Sicherheitsgruppen findest du im Abschnitt Sicherheitsgruppen und Netzwerk-ACLs.
Deine Amazon-ECS-Aufgabenberechtigungen überprüfen
Hinweis: Um die ID der Aufgabenausführungsrolle zu identifizieren, überprüfe den Wert executionRoleARN in der JSON-Datei der Aufgabendefinition. Weitere Informationen zum Zugriff auf die JSON-Datei findest du unter Schritt 5: Erstelle eine Aufgabendefinition.
Stelle sicher, dass die Amazon-ECS-Aufgabenausführungsrolle über die erforderlichen Berechtigungen zum Auffinden und Mounten eines Amazon-EFS-Dateisystems für deine Aufgabe verfügt.
Führe folgende Schritte aus:
- Öffne die IAM-Konsole.
- Wähle im Navigationsbereich Rollen aus.
- Gib in der Suchleiste den Namen deiner Aufgabenausführungsrolle ein und wähle die Aufgabenausführungsrolle aus.
- Wähle Berechtigungsrichtlinien aus, um alle angefügten Richtlinien zu erweitern. Vergewissere dich, dass die Liste folgende Berechtigungen enthält:
elasticfilesystem:ClientMount
elasticfilesystem:ClientWrite
elasticfilesystem:DescribeMountTargets
elasticfilesystem:DescribeFileSystems
Führe folgende Schritte aus, um die Berechtigungen zur Aufgabenausführungsrolle hinzuzufügen:
- Öffne die IAM-Konsole.
- Wähle im Navigationsbereich Richtlinien aus.
- Wähle Richtlinie erstellen.
- Wähle für Service EFS aus.
- Erweitere den Abschnitt Zulässige Aktionen.
- Wähle die Berechtigungen ClientMount, ClientWrite, DescribeMountTargets und DescribeFileSystems aus.
- Wähle die Ressourcen aus, für die die Rolle diese Aktionen ausführen kann, und klicke dann auf Weiter.
- Gib den Richtliniennamen und die Beschreibung ein und wähle daraufhin Richtlinie erstellen aus.
- Wähle im Navigationsbereich Rollen aus.
- Gib in der Suchleiste den Namen deiner Aufgabenausführungsrolle ein und wähle die Aufgabenausführungsrolle aus.
- Wähle Berechtigungen hinzufügen und dann Richtlinien anfügen aus.
- Wähle deine neue Richtlinie aus.
- WähleBerechtigungen hinzufügen aus.
Deine EFS-Dateisystemrichtlinie überprüfen
Führe folgende Schritte aus:
-
Öffne die Amazon-EFS-Konsole.
-
Wähle Dateisysteme und dann dein Dateisystem aus.
-
Stelle sicher, dass deine Dateisystemrichtlinie es der Aufgabenausführungsrolle erlaubt, das EFS-Volume zu mounten.
Beispiel für eine Richtlinie:{ "Version": "2012-10-17", "Statement": [ { "Sid": "ECS Tasks - EFS Access", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::account-id:role/ecs-task-execution-role-name" }, "Action": [ "elasticfilesystem:ClientMount", "elasticfilesystem:ClientWrite", "elasticfilesystem:DescribeMountTargets", "elasticfilesystem:DescribeFileSystems", ] } ] }
-
Um deiner Richtlinie weitere IAM-Berechtigungen hinzuzufügen, musst du eine neue Dateisystemrichtlinie hinzufügen. Füge alternativ Aussagen hinzu, die zulassen, dass deine Clients dein Amazon-EFS-Volume nutzen, um die bestehende Richtlinie zu ändern.
Deine POSIX-Berechtigungen überprüfen
Wenn du Zugangspunkte mit einem benutzerdefinierten Stammverzeichnispfad verwendest, dann stelle sicher, dass du über POSIX-Benutzerberechtigungen und Berechtigungen zum Erstellen des Stammverzeichnisses verfügst. Weitere Informationen zur Problembehandlung findest du unter Mounten mit Zugangspunkt schlägt fehl.
Ähnliche Informationen
Das Mounten des Dateisystems schlägt unmittelbar nach der Erstellung des Dateisystems fehl
Entwicklerleitfaden zur Verwendung von Amazon EFS mit Amazon ECS und AWS Fargate – Teil 2

Relevanter Inhalt
- AWS OFFICIALAktualisiert vor 10 Monaten
- AWS OFFICIALAktualisiert vor 2 Jahren
- AWS OFFICIALAktualisiert vor 2 Jahren
- AWS OFFICIALAktualisiert vor 3 Jahren