Wie mounte ich ein Amazon EFS-Dateisystem auf einem Amazon ECS-Container oder einer 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 Aufgabe bereitstellen, die auf AWS Fargate ausgeführt wird.

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. Anschließend verwenden Ihre Fargate-Aufgaben Amazon EFS, um das Dateisystem automatisch an die Aufgaben zu binden, die Sie in Ihrer Aufgabendefinition angeben.

**Wichtig:**Die folgende Lösung gilt für die Fargate-Plattformversion 1.4.0 oder höher, die über persistenten Speicher verfügt, den Sie auf Aufgaben- und Containerebene in Amazon ECS definieren können. Die Fargate-Plattformversionen 1.3.0 oder früher unterstützen keinen persistenten Speicher mit Amazon EFS.

Bevor Sie die Schritte im Abschnitt Lösung ausführen, müssen Sie über Folgendes verfügen:

Lösung

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.Um eingehende Verbindungen auf Port 2049 (Network File System oder NFS) von der Sicherheitsgruppe zuzulassen, die Ihrer Fargate-Aufgabe oder Ihrem Fargate-Dienst zugeordnet ist, 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 Kompatibilität des Starttyps auswählen die Option FARGATE und anschließend Nächster Schritt aus.

4.Geben Sie im Abschnitt Aufgaben- und Containerdefinitionen konfigurieren unter Aufgabendefinitionsname einen Namen für Ihre Aufgabendefinition ein.

5.Wählen Sie im Abschnitt Volumes die Option Volume hinzufügen aus.

6.    Geben Sie unter Name einen Namen für Ihre Richtlinie ein.

7.Geben Sie als Volumetyp EFS ein.

8.Geben Sie als Dateisystem-ID die ID für Ihr Amazon EFS-Dateisystem ein.

**Hinweis:**Sie können benutzerdefinierte Optionen für Stammverzeichnis, Verschlüsselung bei Übertragung und EFS IAM-Autorisierung angeben. Oder Sie können die Standardeinstellung akzeptieren, wobei „/“ das Stammverzeichnis ist.

9.Wählen Sie Hinzufügen aus.

10.Wählen Sie im Abschnitt Container-Definition die Option Container hinzufügen aus.

11.Wählen Sie im Abschnitt SPEICHERUNG UND PROTOKOLLIERUNG im Unterabschnitt Mount-Punkte das Volume aus, das Sie in Schritt 5 für Quellvolume erstellt haben.

12.Wählen Sie für den Containerpfad Ihren Containerpfad aus.

13.(Optional) Geben Sie im Abschnitt UMGEBUNG für Einstiegspunkt Ihren Einstiegspunkt ein.

14.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. Das Beispiel für eine JSON-Aufgabendefinition in Schritt 16 verwendet eine unendliche While-Schleife, um die Aufgabe am Laufen zu halten.

15.Wählen Sie Hinzufügen aus.

16.Füllen Sie die verbleibenden Felder im Assistenten für Aufgabendefinitionen aus und wählen Sie dann Erstellen aus.

Im folgenden Beispiel erstellt die Aufgabendefinition 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 mit Werten für Ihre benutzerdefinierte Konfiguration. Stellen Sie außerdem sicher, dass Ihre Aufgabendefinition über eine Ausführungsrolle verfügt (Amazon Resource Name (ARN), um den awslogs-Protokoll-Treiber zu unterstützen.

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

1.Führen Sie eine Fargate-Aufgabe mit der Aufgabendefinition aus, die Sie zuvor erstellt haben.

**Wichtig:**Stellen Sie sicher, dass Sie Ihre Aufgabe auf der Fargate-Plattform Version 1.4.0 ausführen.

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:35
Filesystem 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

Tutorial: Verwendung von Amazon EFS-Dateisystemen mit Amazon ECS unter Verwendung der klassischen Konsole

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 3 Jahren