Amazon ECS auf AWS Fargate - Amazon Elastic Container Service

Amazon ECS auf AWS Fargate

AWS Fargate ist eine Technologie, die Sie mit Amazon ECS nutzen können, um Container auszuführen, ohne hierfür Server oder Amazon-EC2-Instance-Cluster verwalten zu müssen. Mit AWS Fargate müssen Sie keine Cluster virtueller Maschinen mehr bereitstellen, konfigurieren oder skalieren, um Container auszuführen. Auf diese Weise müssen keine Servertypen mehr ausgewählt werden, es muss nicht entschieden werden, wann die Cluster skaliert werden oder das Cluster-Packing optimiert werden.

Wenn Sie Ihre Aufgaben und Services mit dem Fargate-Starttyp ausführen, packen Sie Ihre Anwendung in Container, legen die CPU- und Arbeitsspeicheranforderungen fest, definieren Netzwerk- und IAM-Richtlinien und starten die Anwendung. Jede Fargate-Aufgabe hat ihre eigene Isolationsgrenze und teilt den zugrunde liegenden Kernel, die CPU-Ressourcen, die Arbeitsspeicherressourcen oder die Elastic-Network-Schnittstelle nicht mit einer anderen Aufgabe.

In diesem Thema werden die verschiedenen Komponenten der Fargate-Aufgaben und -Services beschrieben. Außerdem wird darauf eingegangen, was beim Verwenden von Fargate mit Amazon ECS zu beachten ist.

Amazon ECS auf AWS Fargate wird in den folgenden Regionen unterstützt. Die unterstützten Availability Zone-IDs werden gegebenenfalls notiert.

Name der Region Region

US East (Ohio)

us-east-2

US East (N. Virginia)

us-east-1

US West (N. California)

us-west-1 (nur usw1-az1 und usw1-az3)

US West (Oregon)

us-west-2

Africa (Cape Town)

af-south-1

Asia Pacific (Hong Kong)

ap-east-1

Asia Pacific (Mumbai)

ap-south-1

Asia Pacific (Osaka)

ap-northeast-3

Asia Pacific (Seoul)

ap-northeast-2

Asia Pacific (Singapore)

ap-southeast-1

Asia Pacific (Sydney)

ap-southeast-2

Asia Pacific (Tokyo)

ap-northeast-1 (nur apne1-az1, apne1-az2 und apne1-az4)

Canada (Central)

ca-central-1 (nur cac1-az1 und cac1-az2)

China (Beijing)

cn-north-1 (nur cnn1-az1 und cnn1-az2)

China (Ningxia)

cn-northwest-1

Europe (Frankfurt)

eu-central-1

Europe (Ireland)

eu-west-1

Europe (London)

eu-west-2

Europe (Paris)

eu-west-3

Europe (Milan)

eu-south-1

Europe (Stockholm)

eu-north-1

South America (São Paulo)

sa-east-1

Naher Osten (Bahrain)

me-south-1

AWS GovCloud (USA-Ost)

us-gov-east-1

AWS GovCloud (USA-West)

us-gov-west-1

Erste Schritte bei der Verwendung von AWS Fargate mit Amazon ECS, siehe Erste Schritte mit der Amazon ECS-Konsole unter Verwendung von AWS Fargate.

Aufgabendefinitionen

Amazon ECS-Aufgaben unter Fargage unterstützen nicht alle verfügbaren Aufgabendefinitionsparameter. Einige Parameter werden generell nicht unterstützt, bei anderen weicht deren Verhalten für Fargate-Aufgaben ab.

Die folgenden Aufgabendefinitionsparameter sind in Fargate-Aufgaben nicht gültig:

  • disableNetworking

  • dnsSearchDomains

  • dnsServers

  • dockerSecurityOptions

  • extraHosts

  • gpu

  • ipcMode

  • links

  • pidMode

  • placementConstraints

  • privileged

  • systemControls

Die folgenden Aufgabendefinitionsparameter sind in Fargate-Aufgaben gültig, weisen jedoch Einschränkungen auf, die zu beachten sind:

  • linuxParameters – Bei der Angabe von Linux-spezifischen Optionen, die auf den Container angewendet werden, wird für capabilities der add-Parameter nicht unterstützt. Die Parameter devices, sharedMemorySize und tmpfs werden nicht unterstützt. Weitere Informationen finden Sie unter Linux-Parameter.

  • volumes – Fargate-Aufgaben unterstützen nur Bind-Mount-Host-Volumes, der dockerVolumeConfiguration-Parameter wird daher nicht unterstützt. Weitere Informationen finden Sie unter Volumes.

Um sicherzustellen, dass die Aufgabendefinition für Fargate validiert wird, können Sie beim Registrieren der Aufgabendefinition Folgendes angeben:

  • Legen Sie in der AWS Management Console im Feld Requires Compatibilities (Erfordert Kompatibilitäten) FARGATE fest.

  • Legen Sie in der AWS CLI die Option --requires-compatibilities fest.

  • Legen Sie in der Amazon ECS API das Flag requiresCompatibilities fest.

Netzwerkmodus

Für Amazon ECS-Aufgabendefinitionen für Fargate muss awsvpc als Netzwerkmodus eingestellt sein. Der Netzwerkmodus awsvpc vergibt an jede Aufgabe eine eigene Elastic-Network-Schnittstelle. Weitere Informationen finden Sie unter Fargate-Aufgabenvernetzung im Benutzerhandbuch zum Amazon Elastic Container Service für AWS Fargate.

Beim Erstellen eines Service oder dem manuellen Ausführen von Aufgaben wird auch eine Netzwerkkonfiguration benötigt. Weitere Informationen finden Sie unter Fargate-Aufgabenvernetzung im Benutzerhandbuch zum Amazon Elastic Container Service fürAWS Fargate.

CPU und Arbeitsspeicher der Aufgabe

Amazon ECS-Aufgabendefinitionen für Fargate müssen Sie CPU und Speicher auf Aufgabenebene angeben. Sie können CPU- und Speicherauslastung zwar für Fargate-Aufgaben auch auf Container-Ebene festlegen, dies ist jedoch optional. In den meisten Fällen reicht es aus, diese Ressourcen nur auf Aufgabenebene festzulegen. Die folgende Tabelle zeigt die gültigen Kombinationen von CPU- und Speicherauslastung auf Aufgabenebene.

CPU-Wert

Speicherwert

256 (0,25 vCPU)

0,5 GB, 1 GB, 2 GB

512 (0,5 vCPU)

1 GB, 2 GB, 3 GB, 4 GB

1024 (1 vCPU)

2 GB, 3 GB, 4 GB, 5 GB, 6 GB, 7 GB, 8 GB

2048 (2 vCPU)

Zwischen 4 GB und 16 GB in 1-GB-Schritten

4096 (4 vCPU)

Zwischen 8 GB und 30 GB in 1-GB-Schritten

Aufgabenressourcenlimits

Amazon ECS-Aufgabendefinitionen für Fargate unterstützen den Parameter ulimits zum Definieren der Ressourcenlimits, die für einen Container eingestellt werden sollen.

Amazon ECS-Aufgaben, die auf Fargate gehosted werden, verwenden die Standardwerte für Ressourcenlimits, die vom Betriebssystem gesetzt wurden. Ausgenommen ist der Ressourcenlimitparameter nofile, den Fargate überschreibt. Das Ressourcenlimit nofile beschränkt die Anzahl der geöffneten Dateien, die ein Container verwenden kann. Das weiche nofile-Standardlimit ist 1024, das harte Limit 4096.

Das folgende ist ein Beispiel-Snippet für Aufgabendefinitionen, das zeigt, wie eine benutzerdefinierte nofile-Grenze, die verdoppelt wurde:

"ulimits": [ { "name": "nofile", "softLimit": 2048, "hardLimit": 8192 } ]

Weitere Informationen zu den anderen Ressourcenlimits, die angepasst werden können, finden Sie unter Ressourcenlimits.

Logging

Amazon ECS-Aufgabendefinitionen für Fargate unterstützen die Protokolltreiber awslogs, splunk und firelens für die Protokollkonfiguration.

Die awslogs-Protokolltreiber konfiguriert Ihre Fargate Aufgaben so, dass sie Protokollinformationen an Amazon CloudWatch Logs senden. Das folgende Beispiel zeigt einen Ausschnitt einer Aufgabendefinition, in der der Protokolltreiber awslogs konfiguriert wurde:

"logConfiguration": { "logDriver": "awslogs", "options": { "awslogs-group" : "/ecs/fargate-task-definition", "awslogs-region": "us-east-1", "awslogs-stream-prefix": "ecs" } }

Weitere Informationen zur Verwendung des Protokolltreibers awslogs in Aufgabendefinitionen zum Senden Ihrer Containerprotokolle an CloudWatch Logs finden Sie unter Verwenden des awslogs-Protokolltreibers.

Weitere Informationen zum firelens-Protokolltreiber in einer Aufgabendefinition finden Sie unter Weiterleitung benutzerdefinierter Protokolle.

Weitere Informationen zur Verwendung des Protokolltreibers splunk in einer Aufgabendefinition finden Sie unter Beispiel: splunk Log Driver.

IAM-Rolle für die Amazon ECS-Aufgabenausführung

Es gibt eine optionale IAM-Rolle zur Aufgabenausführung, die Sie für Fargate festlegen können, damit Fargate-Aufgaben API-Aufrufe an Amazon ECR senden können. Die API ruft Pull-Container-Abbilder und CloudWatch auf, um Container-Anwendungsprotokolle zu speichern. Weitere Informationen finden Sie unter IAM-Rolle für die Amazon ECS-Aufgabenausführung.

Beispiel für eine Aufgabendefinition

Im Folgenden finden Sie eine exemplarische Aufgabendefinition, die einen Webserver mit dem Starttyp Fargate einrichtet:

{ "containerDefinitions": [ { "command": [ "/bin/sh -c \"echo '<html> <head> <title>Amazon ECS Sample App</title> <style>body {margin-top: 40px; background-color: #333;} </style> </head><body> <div style=color:white;text-align:center> <h1>Amazon ECS Sample App</h1> <h2>Congratulations!</h2> <p>Your application is now running on a container in Amazon ECS.</p> </div></body></html>' > /usr/local/apache2/htdocs/index.html && httpd-foreground\"" ], "entryPoint": [ "sh", "-c" ], "essential": true, "image": "httpd:2.4", "logConfiguration": { "logDriver": "awslogs", "options": { "awslogs-group" : "/ecs/fargate-task-definition", "awslogs-region": "us-east-1", "awslogs-stream-prefix": "ecs" } }, "name": "sample-fargate-app", "portMappings": [ { "containerPort": 80, "hostPort": 80, "protocol": "tcp" } ] } ], "cpu": "256", "executionRoleArn": "arn:aws:iam::012345678910:role/ecsTaskExecutionRole", "family": "fargate-task-definition", "memory": "512", "networkMode": "awsvpc", "requiresCompatibilities": [ "FARGATE" ] }

Aufgabenspeicher

Für Amazon ECS-Aufgaben, die auf Fargate gehostet werden, werden die folgenden Speichertypen unterstützt:

  • Amazon EFS-Volumes für persistenten Speicher. Weitere Informationen finden Sie unter Amazon EFS-Volumes.

  • Binden Sie Halterungen für den flüchtigen Speicher. Weitere Informationen finden Sie unter Bind-Mounts.

Aufgaben und Services

Nachdem die Amazon ECS-Aufgabendefinitionen für Fargate vorbereitet wurden, müssen beim Erstellen des Services einige Entscheidungen getroffen werden.

Aufgabenvernetzung

Amazon ECS-Aufgaben für Fargate setzen den Netzwerkmodus awsvpc voraus, der für jede Aufgabe eine Elastic-Network-Schnittstelle bereitstellt. Wenn Sie mit diesem Netzwerkmodus eine Aufgabe ausführen oder einen Service erstellen, müssen Sie mindestens ein Subnetz und mindestens eine Sicherheitsgruppe für die Netzwerkschnittstelle festlegen.

Wenn Sie keine öffentlichen Subnetze verwenden, legen Sie fest, ob Sie eine öffentliche IP-Adresse für die Netzwerkschnittstelle bereitstellen möchten. Damit die Fargate-Aufgabe in einem öffentlichen Subnetz Container-Images abrufen kann, muss der Elastic-Network-Schnittstelle der Aufgabe eine öffentliche IP-Adresse sowie eine Route zum Internet oder einem NAT-Gateway zugewiesen werden, um Anfragen an das Internet weiterzuleiten. Damit eine Fargate-Aufgabe in einem privaten Subnetz Container-Abbilder abrufen kann, benötigen Sie ein NAT-Gateway im Subnetz zur Weiterleitung von Anforderungen an das Internet. Wenn Sie Ihre Container-Images in Amazon ECR hosten, können Sie Amazon ECR so konfigurieren, dass ein Interface-VPC-Endpunkt verwendet wird. In diesem Fall wird die private IPv4-Adresse der Aufgabe für den Image-Pull verwendet. Weitere Informationen zu Amazon ECR-Schnittstellen-Endpunkten finden Sie unter Amazon ECR-Schnittstellen-VPC Endpunkte (AWS PrivateLink) im Amazon Elastic Container-Registry-Benutzerhandbuch.

Das folgende Beispiel zeigt einen networkConfiguration-Abschnitt für einen Fargate-Service:

"networkConfiguration": { "awsvpcConfiguration": { "assignPublicIp": "ENABLED", "securityGroups": [ "sg-12345678" ], "subnets": [ "subnet-12345678" ] } }

Service-Load Balancing

Ihr Amazon-ECS-Service auf Fargate kann optional zur Verwendung von Elastic Load Balancing konfiguriert werden, um Datenverkehr gleichmäßig auf die Aufgaben in Ihrem Service zu verteilen.

Amazon-ECS-Services auf Fargate unterstützen die Lastenverteilungstypen von Application Load Balancer und Network Load Balancer. Application Load Balancer werden zum Weiterleiten von HTTP/HTTPS-Datenverkehr (oder Layer 7) verwendet. Network Load Balancer werden zum Weiterleiten von TCP- oder UDP-Datenverkehr (oder Layer 4) verwendet. Weitere Informationen finden Sie unter Load Balancer-Typen.

Wenn Sie eine Zielgruppe für diese Services erstellen, müssen Sie zudem ip als Zieltyp auswählen, und nicht instance. Das liegt daran, dass Aufgaben, die den Netzwerkmodus awsvpc verwenden, mit einer Elastic-Network-Schnittstelle verknüpft sind, und nicht mit einer Amazon-EC2-Instance. Weitere Informationen finden Sie unter Service-Load Balancing.

Die Verwendung eines Network Load Balancer zum Weiterleiten von UDP-Datenverkehr an Ihre Amazon ECS on Fargate Aufgaben wird nur unterstützt, wenn Plattformversion 1.4 genutzt wird und für Aufgaben, die in den folgenden Regionen gestartet werden:

  • USA Ost (Nord-Virginia) - us-east-1

  • USA West (Oregon) - us-west-2

  • EU (Irland) - eu-west-1

  • Asien-Pazifik (Tokio) - ap-northeast-1

Authentifizierung von privaten Registrierungen

Amazon ECS-Aufgaben für Fargate können sich unter Verwendung der Standardauthentifizierung bei privaten Abbild-Registrierungen (einschließlich Docker Hub) authentifizieren. Wenn Sie die Authentifizierung bei privaten Registrierungen aktivieren, können Sie private Docker-Images in Ihren Aufgabendefinitionen verwenden.

Um die Authentifizierung bei privaten Registrierungen zu nutzen, können Sie mit AWS Secrets Manager ein Secret mit den Anmeldeinformationen für Ihre private Registrierung erstellen. Dann geben Sie in Ihrer Containerdefinition repositoryCredentials mit dem vollständigen ARN des von Ihnen erstellten Geheimnisses an. Der folgende Ausschnitt einer Aufgabendefinition zeigt, welche Parameter erforderlich sind:

"containerDefinitions": [ { "image": "private-repo/private-image", "repositoryCredentials": { "credentialsParameter: "arn:aws:secretsmanager:region:aws_account_id:secret:secret_name" } } ]

Weitere Informationen finden Sie unter Private Registrierungsauthentifizierung für Aufgaben.

Clusters

Cluster können Aufgaben enthalten, die die Starttypen Fargate und EC2 verwenden. Wenn Sie Ihre Cluster in AWS Management Console anzeigen, wird die Anzahl der Fargate- und EC2-Aufgaben separat angezeigt.

Weitere Informationen zu Amazon ECS-Clustern einschließlich einer Anleitung zum Erstellen eines Clusters finden Sie unter Amazon ECS-Cluster.

Fargate Spot

Amazon ECS-Kapazitätsanbieter ermöglichen Ihnen die Verwendung von Fargate- und Fargate Spot-Kapazität für Ihre Amazon ECS-Aufgaben.

Mit Fargate Spot können Sie unterbrechungstolerante Amazon ECS-Aufgaben mit einer reduzierten Gebühr im Vergleich zum Fargate-Preis ausführen. Fargate Spot führt Aufgaben über freie Rechenkapazität aus. Wenn AWS die Kapazität wieder benötigt, werden Ihre Aufgaben zwei Minuten nach einer diesbezüglichen Warnung unterbrochen. Weitere Informationen finden Sie unter AWS Fargate-Kapazitätsanbieter.

Nutzungsmetriken

Sie können CloudWatch-Nutzungsmetriken verwenden, um einen Einblick in die Ressourcennutzung Ihrer Konten zu gewähren. Verwenden Sie diese Metriken, um Ihre aktuelle Servicenutzung für CloudWatch-Diagramme und -Dashboards zu visualisieren.

AWS Fargate-Nutzungsmetriken entsprechen AWS-Servicekontingenten. Sie können Alarme konfigurieren, mit denen Sie benachrichtigt werden, wenn sich Ihre Nutzung einem Servicekontingent nähert. Weitere Hinweise zu Servicekontingenten für Fargate finden Sie unter AWS Fargate-Servicekontingente.

Weitere Informationen zu AWS Fargate-Nutzungsmetriken finden Sie unter Fargate Nutzungsmetriken im Amazon Elastic Container Service-Benutzerhandbuch für AWS Fargate.

Aufgaben-Wartung

Wenn AWS angibt, dass für eine Amazon ECS-Aufgabe eine Sicherheits- oder Infrastrukturaktualisierung erforderlich ist, die auf AWS Fargate gehostet ist, müssen die Aufgaben gestoppt und neue Aufgaben gestartet werden, um sie zu ersetzen. Weitere Informationen finden Sie unter Aufgaben-Wartung im Benutzerhandbuch zum Amazon Elastic Container Service für AWS Fargate.

In der Tabelle unten sind diese Szenarien beschrieben.

Aufgabentyp Problem Action

Eigenständige Aufgabe

Problem mit dem Host

Eine Benachrichtigung zur Außerbetriebnahme von Aufgaben wird mithilfe Ihrer AWS Personal Health Dashboard und E-Mail gesendet. Wenn bis zum Datum der Außerbetriebnahme der Aufgabe keine Aktion ausgeführt wird, stoppt AWS die Aufgabe.

Sicherheitslücke

Eine Benachrichtigung zur Außerbetriebnahme von Aufgaben wird mithilfe Ihrer AWS Personal Health Dashboard und E-Mail gesendet. Wenn bis zum Datum der Außerbetriebnahme der Aufgabe keine Aktion ausgeführt wird, stoppt AWS die Aufgabe.

Service-Aufgabe

Problem mit dem Host

Die Aufgabe wird von AWS angehalten und der Service-Scheduler startet eine neue Aufgabe, um die gewünschte Anzahl des Dienstes beizubehalten. Es wird keine Benachrichtigung gesendet.

Sicherheitslücke

Eine Benachrichtigung zur Außerbetriebnahme von Aufgaben wird mithilfe Ihrer AWS Personal Health Dashboard und E-Mail gesendet. Wenn bis zum Außerbetriebnahmedatum der Aufgabe keine Aktion ausgeführt wird, stoppt AWS die Aufgabe und der Dienstplaner startet eine neue Aufgabe, um die gewünschte Anzahl des Dienstes beizubehalten.

Savings Plans

Savings Plans repräsentieren ein Preismodell, das gegenüber der Nutzung von AWS signifikante Einsparungen bietet. Sie legen sich auf einen gleichbleibenden Nutzungsbetrag in USD pro Stunde für eine Laufzeit von 1 oder 3 Jahren fest und erhalten einen niedrigeren Preis für diese Nutzung. Weitere Informationen finden Sie im Savings Plans User Guide.

Um einen Savings Plan für Ihre Fargate-Nutzung zu erstellen, verwenden Sie den Typ Compute Savings Plans (SPs berechnen). Weitere Informationen zu den ersten Schritten finden Sie unter Erste Schritte mit Savings Plans im Savings Plans-Benutzerhandbuch.