Anleitung: Erstellen eines Clusters mit einer Fargate-Aufgabe mithilfe der Amazon ECS-CLI
Dieses Tutorial zeigt, wie Sie einen Cluster einrichten und einen Service mit Aufgaben über den Starttyp Fargate bereitstellen.
Voraussetzungen
Sie müssen folgende Voraussetzungen erfüllen:
-
Richten Sie ein AWS-Konto ein.
-
Installieren der Amazon ECS-CLI. Weitere Informationen finden Sie unter Installieren der Amazon ECS-CLI.
-
Installieren und Konfigurieren der AWS CLI. Weitere Informationen finden Sie unter AWS-Befehlszeilenschnittstelle.
-
Optional: AWS CloudShell ist ein Tool, das Kunden eine Befehlszeile bietet, ohne eine eigene EC2-Instance erstellen zu müssen. Weitere Informationen finden Sie unter Was ist AWS CloudShell? im AWS CloudShell-Benutzerhandbuch.
Schritt 1: Erstellen der IAM-Rolle für die Aufgabenausführung
Der Amazon ECS-Container-Agent führt Aufrufe an AWS-APIs in Ihrem Namen aus und erfordert daher eine IAM-Richtlinie und -Rolle, woran der Service erkennen kann, dass der Agent zu Ihnen gehört. Diese IAM-Rolle wird als IAM-Rolle für die Aufgabenausführung bezeichnet. Wenn Sie bereits eine Aufgabenausführungsrolle zur Verwendung erstellt haben, können Sie diesen Schritt überspringen. Weitere Informationen finden Sie unter IAM-Rolle für die Amazon-ECS-Aufgabenausführung.
Erstellen der Aufgabenausführungs-IAM-Rolle unter Verwendung von AWS CLI
-
Erstellen Sie eine Datei mit dem Namen
task-execution-assume-role.json
und dem folgenden Inhalt:{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "ecs-tasks.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
-
Erstellen der Aufgabenausführungsrolle:
aws iam --region
us-west-2
create-role --role-nameecsTaskExecutionRole
--assume-role-policy-document file://task-execution-assume-role.json
-
Anfügen der Aufgabenausführungsrollenrichtlinie:
aws iam --region
us-west-2
attach-role-policy --role-nameecsTaskExecutionRole
--policy-arn arn:aws:iam::aws:policy/service-role/AmazonECSTaskExecutionRolePolicy
Schritt 2: Konfigurieren der Amazon ECS-CLI
Die Amazon ECS-CLI benötigt Anmeldeinformationen, um API-Anfragen für Sie zu machen. Sie kann Anmeldeinformationen aus Umgebungsvariablen, einem AWS-Profil oder einem Amazon ECS-Profil abrufen. Weitere Informationen finden Sie unter Konfigurieren der Amazon ECS-CLI.
Erstellen einer Amazon ECS-CLI-Konfiguration
-
Erstellen Sie eine Cluster-Konfiguration, in der die zu verwendende AWS-Region, die Präfixe für die Ressourcenerstellung sowie der mit der Amazon ECS-CLI zu verwendende Clustername definiert sind:
ecs-cli configure --cluster
tutorial
--default-launch-type FARGATE --config-nametutorial
--regionus-west-2
-
Erstellen Sie ein CLI-Profil mithilfe Ihres Zugriffsschlüssels und geheimen Schlüssels:
ecs-cli configure profile --access-key
AWS_ACCESS_KEY_ID
--secret-keyAWS_SECRET_ACCESS_KEY
--profile-nametutorial-profile
Schritt 3: Erstellen eines Clusters und Konfigurieren der Sicherheitsgruppe
Erstellen eines ECS-Clusters und einer Sicherheitsgruppe
-
Erstellen Sie ein Amazon ECS-Cluster mit dem Befehl ecs-cli up. Da Sie in der Cluster-Konfiguration Fargate als Standard-Starttyp angegeben haben, erstellt dieser Befehl ein leeres Cluster und eine VPC, die mit zwei öffentlichen Subnetzen konfiguriert ist.
ecs-cli up --cluster-config
tutorial
--ecs-profiletutorial-profile
Die Ausführung dieses Befehls kann einige Minuten dauern, da Ihre Ressourcen erstellt werden. Die Ausgabe dieses Befehls enthält die erstellten VPC- und Subnetz-IDs.
Anmerkung Notieren Sie sich diese IDs, da Sie sie in den folgenden Schritten benötigen.
-
Rufen Sie mit der AWS CLI die Standard-Sicherheitsgruppen-ID für die VPC ab. Verwenden Sie die VPC-ID aus der vorherigen Ausgabe:
aws ec2 describe-security-groups --filters Name=vpc-id,Values=
VPC_ID
--regionus-west-2
Die Ausgabe dieses Befehls enthält Ihre Sicherheitsgruppen-ID, die im nächsten Schritt verwendet wird.
-
Fügen Sie mit AWS CLI eine Sicherheitsgruppenregel hinzu, um eingehenden Zugriff auf Port 80 zuzulassen:
aws ec2 authorize-security-group-ingress --group-id
security_group_id
--protocol tcp --port 80 --cidr 0.0.0.0/0 --regionus-west-2
Schritt 4: Erstellen einer Compose-Datei
Für diesen Schritt erstellen Sie eine einfache Docker-Compose-Datei, die eine einfache WordPress-Anwendung generiert. Derzeit unterstützt die Amazon ECS-CLI die Versionen 1, 2 und 3 der Docker-Compose-Dateisyntax"1"
, "1.0"
, "2"
, "2.0"
, "3"
oder "3.0"
entsprechen. Docker Compose-Nebenversionen werden nicht unterstützt.
Hier sehen Sie die Compose-Datei, die Sie docker-compose.yml
nennen können. Der web
-Container macht Port 80 für eingehenden Datenverkehr zum Webserver verfügbar. Außerdem konfiguriert er Container-Protokolle, die in der zuvor erstellten CloudWatch-Protokollgruppe abgelegt werden. Dies ist die empfohlene bewährte Methode für Fargate-Aufgaben.
version: '3' services: web: image: amazon/amazon-ecs-sample ports: - "80:80" logging: driver: awslogs options: awslogs-group: tutorial awslogs-region: us-west-2 awslogs-stream-prefix: web
Wenn Ihr Konto bereits eine CloudWatch Logs-Protokollgruppe mit dem Namen tutorial
in der Region us-west-2
enthält, wählen Sie einen eindeutigen Namen aus, damit die ECS-CLI eine neue Protokollgruppe für dieses Tutorial erstellt.
Zusätzlich zu den Docker-Compose-Informationen gibt es einige für Amazon ECS spezifische Parameter, die Sie für den Service angeben müssen. Erstellen Sie mit der VPC, dem Subnetz und den Sicherheitsgruppen-IDs aus dem vorigen Schritt die Datei ecs-params.yml
mit dem folgenden Inhalt:
version: 1 task_definition: task_execution_role: ecsTaskExecutionRole ecs_network_mode: awsvpc os_family: Linux task_size: mem_limit: 0.5GB cpu_limit: 256 run_params: network_configuration: awsvpc_configuration: subnets: - "
subnet ID 1
" - "subnet ID 2
" security_groups: - "security group ID
" assign_public_ip: ENABLED
Schritt 5: Bereitstellen der Compose-Datei in einem Cluster
Nachdem Sie die Compose-Datei erstellt haben, können Sie sie mit dem Befehl ecs-cli compose service up in Ihrem Cluster bereitstellen. Standardmäßig sucht der Befehl nach Dateien namens docker-compose.yml
und ecs-params.yml
im aktuellen Verzeichnis. Sie können mit der Option --file
eine andere Docker-Compose-Datei angeben, und mit der Option --ecs-params
eine andere ECS Params-Datei. In den Titeln der mit diesem Befehl erstellten Ressourcen ist standardmäßig das aktuelle Verzeichnis angegeben, mit der Option --project-name
können Sie diese Angabe jedoch überschreiben. Mit der Option --create-log-groups
werden die CloudWatch-Protokollgruppen für die Container-Protokolle erstellt.
ecs-cli compose --project-name
tutorial
service up --create-log-groups --cluster-configtutorial
--ecs-profiletutorial-profile
Schritt 6: Anzeigen der aktiven Container in einem Cluster
Nachdem Sie die Compose-Datei bereitgestellt haben, können Sie mit dem Befehl ecs-cli compose service ps die Container anzeigen, die in Ihrem Service ausgeführt werden.
ecs-cli compose --project-name
tutorial
service ps --cluster-configtutorial
--ecs-profiletutorial-profile
Ausgabe:
Name State Ports TaskDefinition Health tutorial/0c2862e6e39e4eff92ca3e4f843c5b9a/web RUNNING 34.222.202.55:80->80/tcp tutorial:1 UNKNOWN
In dem Beispiel oben sehen Sie den Container web
aus Ihrer Compose-Datei sowie die IP-Adresse und den Port des Webservers. Wenn Ihr Webbrowser auf diese Adresse zeigt, sollten Sie die PHP-Webanwendung sehen. In der Ausgabe befindet sich auch der task-id
-Wert für den Container. Kopieren Sie die Task-ID. Sie benötigen sie im nächsten Schritt.
Schritt 7: Anzeigen der Container-Protokolle
Anzeige der Protokolle für die Aufgabe:
ecs-cli logs --task-id
0c2862e6e39e4eff92ca3e4f843c5b9a
--follow --cluster-configtutorial
--ecs-profiletutorial-profile
Die --follow
-Option weist die Amazon ECS-CLI an, stetig auf Protokolle abzufragen.
Schritt 8: Skalieren der Aufgaben in dem Cluster
Mit dem Befehl ecs-cli compose service scale können Sie Ihre Aufgabenanzahl hochskalieren, sodass Sie mehr Instances Ihrer Anwendung verwenden können.
ecs-cli compose --project-name
tutorial
service scale 2 --cluster-configtutorial
--ecs-profiletutorial-profile
In diesem Beispiel wird die Anzahl Ihrer Anwendung auf zwei erhöht.
ecs-cli compose --project-name
tutorial
service ps --cluster-configtutorial
--ecs-profiletutorial-profile
Ausgabe:
Name State Ports TaskDefinition Health tutorial/0c2862e6e39e4eff92ca3e4f843c5b9a/web RUNNING 34.222.202.55:80->80/tcp tutorial:1 UNKNOWN tutorial/d9fbbc931d2e47ae928fcf433041648f/web RUNNING 34.220.230.191:80->80/tcp tutorial:1 UNKNOWN
Schritt 9: Anzeigen Ihrer Webanwendung
Geben Sie die IP-Adresse für die Aufgabe in Ihren Webbrowser ein. Sie sollten dann eine Webseite sehen, die die Webanwendung Simple PHP-App anzeigt.

Schritt 10: Bereinigen
Wenn Sie dieses Tutorial abgeschlossen haben, sollten Sie Ihre Ressourcen bereinigen, damit keine weiteren Kosten hierfür entstehen. Löschen Sie zuerst den Service, damit er die vorhandenen Container stoppt und nicht mehr versucht, weitere Aufgaben auszuführen.
ecs-cli compose --project-name
tutorial
service down --cluster-configtutorial
--ecs-profiletutorial-profile
Führen Sie nun einen Takedown Ihres Clusters aus. Dabei werden die Ressourcen bereinigt, die Sie zuvor mit ecs-cli up erstellt haben.
ecs-cli down --force --cluster-config
tutorial
--ecs-profiletutorial-profile