Wie kann ich den Festplattenspeicher für meinen Amazon ECS-Container auf AWS Fargate erhöhen?
Ich möchte den Festplattenspeicher für meinen Amazon Elastic Container Service (Amazon ECS)-Container auf AWS Fargate erhöhen.
Kurzbeschreibung
Standardmäßig enthalten Fargate-Aufgaben, die mit der Plattformversion 1.40 gestartet werden, eine Aufgabenspeichergröße von 20 GiB als einzelnes temporäres Volume. Wenn du mehr als 20 GiB Speicher benötigst, verwende eine der folgenden Optionen, um mehr Speicher zu konfigurieren:
- Verwende temporäre Speicheroption von Fargate zum Speichern von bis zu 200 GiB. Der temporäre Speicher ist ein nicht persistenter Speicher.
- Verwende Amazon Elastic File System (Amazon EFS)-Volumes für skalierbaren Dateispeicher. Amazon EFS-Volumes bieten persistenten Speicher.
- Hänge ein EBS-Volume an Fargate an, für Speicher und datenintensiven Speicher. Die EBS-Volume-Option ist nicht persistent.
Wichtig: Verwende beim Erstellen eines Amazon-EFS-Volumes die gleiche Amazon Virtual Private Cloud (Amazon VPC) und die gleichen Subnetze, die auch dem Fargate-Service zugewiesen sind.
Lösung
**Anmerkung:**Wenn bei der Ausführung von AWS Command Line Interface (AWS CLI)-Befehlen Fehler auftreten, findest du weitere Informationen unter Troubleshoot AWS CLI errors. Stelle außerdem sicher, dass du die neueste Version der AWS CLI verwendest.
Um den Speicherplatz für einen Amazon ECS-Container auf Fargate zu erhöhen, führe die Aufgaben entsprechend dem Anwendungsfall aus.
Temporären Speicher konfigurieren
Führe die folgenden Schritte aus:
-
Erstelle oder aktualisiere die Aufgabendefinition, um den temporären Speicher für die Aufgabe zu konfigurieren. Zum Beispiel:
"containerDefinitions": [ { "memory": 128, "essential": true, "name": "nginx", "image": "nginx" } ] "ephemeralStorage": { "sizeInGiB": 30 } -
Verwende die aktualisierte Aufgabendefinition, um die Aufgabe auszuführen.
Hinweis: Wähle für Aufgaben, die einem Service zugeordnet sind, eine neue Version der Aufgabendefinition aus, um den Service zu aktualisieren.
Weitere Informationen findest du unter Verwenden von Bind-Mounts mit Amazon ECS.
Speicher mit Amazon EFS-Volumes konfigurieren
Führe die folgenden Schritte aus:
- Erstelle eine Sicherheitsgruppe für die Amazon EFS-Mount-Ziele. Füge dann eine Regel für eingehenden Datenverkehr hinzu, um NFS-Datenverkehr auf Port 2049 aus der Aufgabensicherheitsgruppe der Quelle zu akzeptieren.
- Erstelle ein Amazon EFS-Dateisystem und hänge dann die Sicherheitsgruppe an die Mount-Ziele an.
Hinweis: Standardmäßig ist in jeder Availability Zone in einer bestimmten AWS-Region ein Mount-Ziel konfiguriert. Wähle alle Availability Zones aus, in denen sich die VPC-Subnetze für den Fargate-Service befinden. - Notiere dir die Dateisystem-ID des Dateisystems. Zum Beispiel: fs-12345678
- Erstelle oder aktualisiere eine Aufgabendefinition, um ein Volume für die Amazon ECS-Aufgabe zu konfigurieren, die das Amazon EFS-Dateisystem enthält. Zum Beispiel:
Hinweis: Ersetze fs-12345678 durch die Dateisystem-ID."volumes": [ { "name": "efs-test-volume", "efsVolumeConfiguration": { "fileSystemId": "fs-12345678", "transitEncryption": "ENABLED" } } ] - Verwende einen Abschnitt mit Container-Definitionen, um einen Mountingpunkt für das Volume im Container zu erstellen. Zum Beispiel:
Hinweis: Der containerPath ist der Pfad innerhalb des Containers, in dem du das Volume bereitstellst. Das sourceVolume ist der Name des Volumes."containerDefinitions": [ { "memory": 128, "portMappings": [ { "hostPort": 80, "containerPort": 80, "protocol": "tcp" } ], "essential": true, "mountPoints": [ { "containerPath": "/mount/path/inside/container", "sourceVolume": "efs-test-volume" } ], "name": "nginx", "image": "nginx" } ] - Verwende die aktualisierte Aufgabendefinition, um die Aufgabe auszuführen.
Hinweis: Wähle für Aufgaben, die einem Service zugeordnet sind, eine neue Version der Aufgabendefinition aus, um den Service zu aktualisieren.
Ein EBS-Volume an Fargate anhängen
Führe die folgenden Schritte aus:
-
Erstelle oder aktualisiere die Aufgabendefinition, um das EBS-Volume so zu konfigurieren, dass es beim Start konfiguriert wird. Verwende die Option "configuredAtLaunch", die auf „wahr“ gesetzt ist. Zum Beispiel:
"containerDefinitions": [ { "name": "nginx", "image": "public.ecr.aws/nginx/nginx:latest", "networkMode": "awsvpc", "portMappings": [ { "name": "nginx-80-tcp", "containerPort": 80, "hostPort": 80, "protocol": "tcp", "appProtocol": "http" } ], "mountPoints": [ { "sourceVolume": "myEBSVolume", "containerPath": "/mount/ebs", "readOnly": true } ] } ], "volumes": [ { "name": "myEBSVolume", "configuredAtLaunch": true } ] -
Starte eine eigenständige Aufgabe. Oder starte eine Aufgabe als Teil eines Services mit einer Volume-Konfiguration als Teil des JSON.
JSON-Beispiel für eigenständige Aufgaben:{ "cluster": "mycluster", "taskDefinition": "mytaskdef", "volumeConfigurations": [ { "name": "datadir", "managedEBSVolume": { "volumeType": "gp3", "sizeInGiB": 100, "roleArn": "arn:aws:iam:1111222333:role/ecsInfrastructureRole", "encrypted": true, "kmsKeyId": "arn:aws:kms:region:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" } } ] }Hinweis: Wie im vorherigen Beispiel zu sehen ist, ist kein Snapshot erforderlich, um die Aufgabe zu starten.
JSON-Beispiel für einen Service:{ "cluster": "mycluster", "taskDefinition": "mytaskdef", "serviceName": "mysvc", "desiredCount": 2, "volumeConfigurations": [ { "name": "myEbsVolume", "managedEBSVolume": { "roleArn":"arn:aws:iam:1111222333:role/ecsInfrastructureRole", "snapshotId": "snap-12345" } } ] }Hinweis: Ersetze roleArn durch das Konto ecsInfrastructureRole. Ersetze snapshotId durch die Snapshot-ID, aus der du ein Volume erstellen möchtest.
- Themen
- Containers
- Sprache
- Deutsch
