Anleitung: Erstellen eines Clusters mit einer Fargate-Aufgabe mithilfe der Amazon ECS-CLI - Amazon ECS

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

  1. 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" } ] }
  2. Erstellen der Aufgabenausführungsrolle:

    aws iam --region us-west-2 create-role --role-name ecsTaskExecutionRole --assume-role-policy-document file://task-execution-assume-role.json
  3. Anfügen der Aufgabenausführungsrollenrichtlinie:

    aws iam --region us-west-2 attach-role-policy --role-name ecsTaskExecutionRole --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

  1. 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-name tutorial --region us-west-2
  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-key AWS_SECRET_ACCESS_KEY --profile-name tutorial-profile

Schritt 3: Erstellen eines Clusters und Konfigurieren der Sicherheitsgruppe

Erstellen eines ECS-Clusters und einer Sicherheitsgruppe

  1. 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-profile tutorial-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.

  2. 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 --region us-west-2

    Die Ausgabe dieses Befehls enthält Ihre Sicherheitsgruppen-ID, die im nächsten Schritt verwendet wird.

  3. 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 --region us-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. Die in der Compose-Datei angegebene Version muss der Zeichenfolge "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
Anmerkung

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-config tutorial --ecs-profile tutorial-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-config tutorial --ecs-profile tutorial-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-config tutorial --ecs-profile tutorial-profile
Anmerkung

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-config tutorial --ecs-profile tutorial-profile

In diesem Beispiel wird die Anzahl Ihrer Anwendung auf zwei erhöht.

ecs-cli compose --project-name tutorial service ps --cluster-config tutorial --ecs-profile tutorial-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-config tutorial --ecs-profile tutorial-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-profile tutorial-profile