Wie mounte ich ein Amazon EFS-Dateisystem auf einem Amazon ECS-Container oder einer Amazon ECS-Aufgabe, die auf Fargate ausgeführt wird?

Lesedauer: 5 Minute
0

Ich möchte ein Amazon Elastic File System (Amazon EFS)-Dateisystem auf einem Amazon Elastic Container Service (Amazon ECS)-Container oder einer ECS-Aufgabe mounten. Der Amazon ECS-Container oder die Amazon ECS-Aufgabe wird auf AWS Fargate ausgeführt.

Lösung

Um ein Amazon EFS-Dateisystem auf einer Fargate-Aufgabe oder einem Fargate-Container zu mounten, musst du zunächst eine Aufgabendefinition erstellen. Stelle als nächstes diese Aufgabendefinition für die Container in deiner Aufgabe in allen Availability Zones in deiner AWS-Region zur Verfügung. Schließlich verwenden deine Fargate-Aufgaben Amazon EFS, um das Dateisystem automatisch für die Aufgaben zu mounten, die du in deiner Aufgabendefinition angibst.

Wichtig: Die folgende Auflösung gilt für die Fargate-Version 1.4.0 und höher. Diese Versionen verfügen über persistenten Speicher, den du auf Aufgaben- und Containerebene in Amazon ECS definieren kannst. Die Fargate-Versionen 1.3.0 oder früher unterstützen die Verwendung von persistentem Speicher mit Amazon EFS nicht.

Voraussetzungen

Du musst über Folgendes verfügen:

Erstelle und konfiguriere ein Amazon EFS-Dateisystem

  1. Erstelle ein Amazon EFS-Dateisystem und notiere dir dann die EFS-ID und die Sicherheitsgruppen-ID.
    Hinweis: Dein Amazon EFS-Dateisystem, dein Amazon ECS-Cluster und deine Fargate-Aufgaben müssen sich alle in derselben VPC befinden.
  2. Bearbeite die Sicherheitsgruppenregeln deines EFS-Dateisystems, um diese Verbindungen zuzulassen. Du musst Verbindungen auf Port 2049 (Network File System, oder NFS) von der Sicherheitsgruppe erlauben, die deiner Fargate-Aufgabe oder deinem Fargate-Service zugeordnet ist.
  3. Aktualisiere die Sicherheitsgruppe deines Amazon ECS-Service, um ausgehende Verbindungen auf Port 2049 zur Sicherheitsgruppe deines Amazon EFS-Dateisystems zuzulassen.

Erstelle eine Aufgabendefinition

  1. Öffne die Amazon ECS Classic-Konsole.
  2. Wähle im Navigationsbereich Aufgabendefinitionen und dann Neue Aufgabendefinition erstellen aus.
  3. Wähle im Abschnitt Starttyp-Kompatibilität auswählen die Option FARGATE und anschließend Nächster Schritt aus.
  4. Gib im Abschnitt Konfigurieren von Aufgaben- und Containerdefinitionen unter Name der Aufgabendefinition einen Namen für deine Aufgabendefinition ein.
  5. Wähle im Abschnitt Volumes die Option Volume hinzufügen aus.
  6. Gib unter Name einen Namen für dein Volume ein.
  7. Gib als Volume-Typ EFS ein.
  8. Gib als Dateisystem-ID die ID für dein Amazon EFS-Dateisystem ein.
    Hinweis: Du kannst benutzerdefinierte Optionen für das Stammverzeichnis, Verschlüsselung von Daten während der Übertragung und die EFS AWS Identity and Access Management (IAM)-Autorisierung festlegen. Alternativ kannst du die Standardoption akzeptieren, bei der „/“ das Stammverzeichnis ist.
  9. Wähle Hinzufügen aus.
  10. Wähle im Abschnitt Container-Definition die Option Container hinzufügen aus.
  11. Wähle im Abschnitt SPEICHERUNG UND PROTOKOLLIERUNG im Unterabschnitt Mount-Punkte das Volume aus, das du in Schritt 5 für Quellvolume erstellt hast.
  12. Wähle für den Container-Pfad deinen Container-Pfad aus.
  13. (Optional) Gib im Abschnitt UMGEBUNG für Einstiegspunkt deinen Einstiegspunkt ein.
  14. Gib als Befehl den Befehl [df ,-h] ein, um das gemountete Dateisystem anzuzeigen.
    Hinweis: Du kannst den Einstiegspunkt und den Befehl verwenden, um zu testen, ob dein Amazon EFS-Dateisystem erfolgreich gemountet wurde. Standardmäßig wird der Container beendet, nachdem der Befehl df -h erfolgreich ausgeführt wurde. Das Beispiel für eine JSON-Aufgabendefinition in Schritt 16 verwendet eine unendliche While-Schleife, um die Aufgabe am Laufen zu halten.
  15. Wähle Hinzufügen aus.
  16. Gib deine Informationen für die verbleibenden Felder im Assistenten für Aufgabendefinitionen ein, und wähle dann Erstellen aus.

Im folgenden Beispiel verwendet die JSON-Aufgabendefinition eine Endlosschleife, um die Aufgabe am Laufen zu halten. Die Aufgabendefinition erstellt ein Datenvolume mit dem Namen efs-test. Der Nginx-Container mountet das Host-Datenvolume im Pfad Any_Container_Path.

{
  "family": "sample-fargate-test",
  "networkMode": "awsvpc",
  "executionRoleArn": "arn:aws:iam::1234567890:role/ecsTaskExecutionRole",
  "containerDefinitions": [
    {
      "name": "fargate-app",
      "image": "nginx",
      "portMappings": [
        {
          "containerPort": 80,
          "hostPort": 80,
          "protocol": "tcp"
        }
      ],
      "essential": true,
      "entryPoint": [
        "sh",
        "-c"
      ],
      "command": [
        "df -h && while true; do echo \"RUNNING\"; done"
      ],
      "mountPoints": [
        {
          "sourceVolume": "efs-test",
          "containerPath": "Any_Container_Path"
        }
      ],
      "logConfiguration": {
        "logDriver": "awslogs",
        "options": {
          "awslogs-group": "AWS_LOG_GROUP_PATH",
          "awslogs-region": "AWS_REGION",
          "awslogs-stream-prefix": "AWS_STREAM_PREFIX"
        }
      }
    }
  ],
  "volumes": [
    {
      "name": "efs-test",
      "efsVolumeConfiguration": {
        "fileSystemId": "fs-123xx4x5"
      }
    }
  ],
  "requiresCompatibilities": [
    "FARGATE"
  ],
  "cpu": "256",
  "memory": "512"
}

Hinweis: Ersetze fileSystemId, logConfiguration, containerPath und andere Platzhalterwerte durch Werte für deine benutzerdefinierte Konfiguration. Stelle außerdem sicher, dass deine Aufgabendefinition einen Amazon-Ressourcenname (ARN) als Ausführungsrolle hat, um den awslogs-Protokolltreiber zu unterstützen.
Um mehrere EFS auf verschiedenen Zielen (containerPath) zu mounten, kannst du mehrere MountPoints und Volumes in deiner Aufgabendefinition definieren.

Führe eine Fargate-Aufgabe aus und überprüfe deine Aufgabenprotokolle

  1. Führe eine Fargate-Aufgabe mit der Aufgabendefinition aus, die du zuvor erstellt hast.
    Wichtig: Du musst die Fargate-Plattform Version 1.4.0 verwenden, um deine Aufgabe auszuführen.
  2. Um zu überprüfen, ob dein Amazon EFS-Dateisystem erfolgreich in deinen Fargate-Container gemountet wurde, überprüfe deine Aufgabenprotokolle.
    Die Ausgabe von df-h sieht in etwa wie folgt aus:
    2020-10-27 15:15:35Filesystem 1K-blocks Used Available Use% Mounted on
    
    2020-10-27 15:15:35
    overlay 30832548 9859324 19383976 34% /
    
    2020-10-27 15:15:35
    tmpfs 65536 0 65536 0% /dev
    
    2020-10-27 15:15:35
    shm 2018788 0 2018788 0% /dev/shm
    
    2020-10-27 15:15:35
    tmpfs 2018788 0 2018788 0% /sys/fs/cgroup
    
    2020-10-27 15:15:35
    fs-xxxxxxxx.efs.us-east-1.amazonaws.com:/ 9007199254739968 0 9007199254739968 0% /Any_Container_Path
    
    2020-10-27 15:15:35
    /dev/xvdcz 30832548 9859324 19383976 34% /etc/hosts
    
    2020-10-27 15:15:35
    tmpfs 2018788 0 2018788 0% /proc/acpi
    
    2020-10-27 15:15:35
    tmpfs 2018788 0 2018788 0% /sys/firmware
    
    2020-10-27 15:15:35
    tmpfs 2018788 0 2018788 0% /proc/scsi
    
    RUNNING

Ähnliche Informationen

Sicherheits- und Zugriffskontrollen für Amazon EFS-Volumes

Ein Amazon EFS-Dateisystem in einer Amazon ECS-Aufgabendefinition angeben

Konfiguration von Amazon EFS-Dateisystemen für Amazon ECS mithilfe der Konsole

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 23 Tagen