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.

Kurzbeschreibung

Um ein Amazon EFS-Dateisystem auf einer Fargate-Aufgabe oder einem Fargate-Container zu mounten, müssen Sie zunächst eine Aufgabendefinition erstellen. Stellen Sie diese Aufgabendefinition dann für die Container in Ihrer Aufgabe in allen Availability Zones in Ihrer AWS-Region zur Verfügung. Schließlich verwenden Ihre Fargate-Aufgaben Amazon EFS, um das Dateisystem automatisch für die Aufgaben zu mounten, die Sie in Ihrer Aufgabendefinition angeben.

Wichtig: Die folgende Auflösung gilt für die Fargate-Plattformversion 1.4.0 und höher. Diese Versionen verfügen über persistenten Speicher, den Sie auf Aufgaben- und Containerebene in Amazon ECS definieren können. Die Fargate-Plattformversionen 1.3.0 oder früher unterstützen keine persistenten Speicher, die Amazon EFS verwenden.

Lösung

Voraussetzungen

Sie müssen über Folgendes verfügen:

Erstellen und konfigurieren Sie ein Amazon EFS-Dateisystem

  1. Erstellen Sie ein Amazon EFS-Dateisystem und notieren Sie sich dann die EFS-ID und die Sicherheitsgruppen-ID.
    Hinweis: Ihr Amazon EFS-Dateisystem, Ihr Amazon ECS-Cluster und Ihre Fargate-Aufgaben müssen sich alle in derselben VPC befinden.
  2. Erlauben Sie eingehende Verbindungen auf Port 2049 (Network File System oder NFS) von der Sicherheitsgruppe, die Ihrer Fargate-Aufgabe oder Ihrem Fargate-Dienst zugeordnet ist. Um diese Verbindungen zuzulassen, bearbeiten Sie die Sicherheitsgruppenregeln Ihres EFS-Dateisystems.
  3. Aktualisieren Sie die Sicherheitsgruppe Ihres Amazon ECS-Service, um ausgehende Verbindungen auf Port 2049 zur Sicherheitsgruppe Ihres Amazon EFS-Dateisystems zuzulassen.

Erstellen Sie eine Aufgabendefinition

  1. Öffnen Sie die Amazon-ECS-Konsole.
  2. Wählen Sie im Navigationsbereich Aufgabendefinitionen und dann Neue Aufgabendefinition erstellen aus.
  3. Wählen Sie im Abschnitt Starttyp-Kompatibilität auswählen die Option FARGATE und anschließend Nächster Schritt aus.
  4. Geben Sie im Abschnitt Konfigurieren von Aufgaben- und Containerdefinitionen unter Name der Aufgabendefinition einen Namen für Ihre Aufgabendefinition ein.
  5. Wählen Sie im Abschnitt Volumes die Option Volume hinzufügen aus. Geben Sie folgende Informationen ein:
    Geben Sie unter Name einen Namen für Ihr Volume ein.
    Geben Sie als Volume-Typ EFS ein.
    Geben Sie als Dateisystem-ID die ID für Ihr Amazon EFS-Dateisystem ein.
    Hinweis: Geben Sie benutzerdefinierte Optionen für das Stammverzeichnis, Verschlüsselung von Daten während der Übertragung und die EFS AWS Identity and Access Management (IAM)-Autorisierung an. Oder akzeptieren Sie die Standardeinstellung, wobei “/“ das Stammverzeichnis ist.
  6. Wählen Sie Hinzufügen aus.
  7. Wählen Sie im Abschnitt Container-Definition die Option Container hinzufügen aus.
  8. Wählen Sie im Abschnitt SPEICHER UND PROTOKOLLIERUNG im Unterabschnitt Mountingpunkte das Volume aus, das Sie für Quell-Volume erstellt haben.
  9. Wählen Sie für den Container-Pfad Ihren Container-Pfad aus.
  10. (Optional) Geben Sie im Abschnitt UMGEBUNG für Einstiegspunkt Ihren Einstiegspunkt ein.
  11. Geben Sie als Befehl den Befehl [df ,-h] ein, um das gemountete Dateisystem anzuzeigen.
    Hinweis: Sie können den Einstiegspunkt und den Befehl verwenden, um zu testen, ob Ihr Amazon EFS-Dateisystem erfolgreich gemountet wurde. Standardmäßig wird der Container beendet, nachdem der Befehl df -h erfolgreich ausgeführt wurde.
  12. Wählen Sie Hinzufügen aus.
  13. Geben Sie Ihre Informationen für die verbleibenden Felder im Assistenten für Aufgabendefinitionen ein, und wählen Sie 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: Ersetzen Sie fileSystemId, logConfiguration, containerPath und andere Platzhalterwerte durch Werte für Ihre benutzerdefinierte Konfiguration. Stellen Sie außerdem sicher, dass Ihre Aufgabendefinition über eine IAM-Rolle Amazon-Ressourcenname (ARN) verfügt, um den awslogs-Protokolltreiber zu unterstützen.

Führen Sie eine Fargate-Aufgabe aus und überprüfen Sie Ihre Aufgabenprotokolle

  1. Verwenden Sie Ihre Aufgabendefinition, um eine Fargate-Aufgabe auszuführen.
    Wichtig: Führen Sie Ihre Aufgabe auf der Fargate-Plattform Version 1.4.0 aus.
  2. Um zu überprüfen, ob Ihr Amazon EFS-Dateisystem erfolgreich in Ihren Fargate-Container gemountet wurde, überprüfen Sie Ihre 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

Sicherheit in Amazon EFS

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

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 8 Monaten