View a markdown version of this page

Erstellen Sie Ihren ersten Express-Modus-Dienst mit dem AWS CLI - Amazon Elastic Container Service

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Erstellen Sie Ihren ersten Express-Modus-Dienst mit dem AWS CLI

Dieses Tutorial zeigt Ihnen, wie Sie eine Expressmodus-Dienstanwendung mit dem erstellen. AWS AWS CLI Sie stellen eine einfache Webanwendung bereit, die die Kernfunktionen des Express Mode-Dienstes demonstriert.

Voraussetzungen

Stellen Sie vor Beginn sicher, dass Sie über Folgendes verfügen:

  • Ein AWS Konto mit den entsprechenden Berechtigungen

  • Das AWS AWS CLI installierte und konfigurierte

  • Ein Container-Image, das in Amazon ECR oder einer privaten Registrierung gespeichert ist

  • Eine Standard-VPC mit öffentlichen Subnetzen in der AWS Region, in der Sie den Service erstellen. Standardmäßig erstellt der Expressmodus-Dienst einen mit dem Internet verbundenen Load Balancer in der Standard-VPC und den öffentlichen Subnetzen Ihres Kontos. Wenn Ihr Konto nicht über eine Standard-VPC verfügt, erstellen Sie eine, bevor Sie beginnen, oder geben Sie Ihre eigenen Subnetze an, wenn Sie den Service erstellen. Weitere Informationen finden Sie unter Standard-VPCs im Amazon VPC-Benutzerhandbuch.

Schritt 1: IAM-Rollen erstellen

Für einen Expressmodus-Dienst sind zwei IAM-Rollen erforderlich. Die Aufgabenausführungsrolle ermöglicht es Amazon ECS, in Ihrem Namen Container-Images abzurufen und Protokolle zu schreiben. Erstellen Sie eine Rolle zur Aufgabenausführung und eine Infrastrukturrolle mit den folgenden Richtlinien:

#Create the roles with ECS trust policies aws iam create-role --role-name ecsTaskExecutionRole \ --assume-role-policy-document '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "ecs-tasks.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }' aws iam create-role --role-name ecsInfrastructureRoleForExpressServices \ --assume-role-policy-document '{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowAccessInfrastructureForECSExpressServices", "Effect": "Allow", "Principal": { "Service": "ecs.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }'
#Attach the AWS managed policies aws iam attach-role-policy --role-name ecsTaskExecutionRole \ --policy-arn arn:aws:iam::aws:policy/service-role/AmazonECSTaskExecutionRolePolicy aws iam attach-role-policy --role-name ecsInfrastructureRoleForExpressServices \ --policy-arn arn:aws:iam::aws:policy/service-role/AmazonECSInfrastructureRoleforExpressGatewayServices

Weitere Informationen finden Sie unter IAM-Rolle für die Amazon-ECS-Aufgabenausführung.

Anmerkung

IAM-Rollen sind letztendlich konsistent, sodass eine neu erstellte Rolle möglicherweise nicht sofort verwendet werden kann. Wenn Ihr erster create-express-gateway-service Aufruf direkt nach dem Erstellen dieser Rollen fehlschlägt Unable to assume the service linked role (oder ein ähnlicher Fehler beim Annehmen der Rolle übernehmen), warten Sie eine kurze Zeit (etwa eine Minute), bis die Rollen weitergegeben werden, und versuchen Sie dann erneut, den Befehl auszuführen.

Schritt 2: Erstellen Sie Ihre erste Expressmodus-Dienstanwendung

Erstellen Sie eine Expressmodus-Dienstanwendung mit den mindestens erforderlichen Parametern:

aws ecs create-express-gateway-service \ --primary-container "image"="public.ecr.aws/nginx/nginx:latest" \ --execution-role-arn arn:aws:iam::123456789012:role/ecsTaskExecutionRole \ --infrastructure-role-arn arn:aws:iam::123456789012:role/ecsInfrastructureRoleForExpressServices \ --monitor-resources

Dieser Befehl erstellt eine Expressmodus-Dienstanwendung mit:

  • Ein eindeutiger Dienstname, der aus dem Imagenamen generiert wird

  • 1 vCPU und 2 GB Arbeitsspeicher

  • Port 80 für HTTPS-Verkehr

  • Automatische Skalierung basierend auf der CPU-Auslastung

  • Ein mit dem Internet verbundener Application Load Balancer in der Standard-VPC und öffentlichen Subnetzen

  • Eine für diesen Dienst eindeutige URL im folgenden Format servicename.ecs.region.on.aws

Der Befehl überwacht kontinuierlich Ressourcen, während sie bereitgestellt werden, und gibt den Status zurück. Sobald die Bereitstellung des Dienstes abgeschlossen ist, ist die Anwendungs-URL bereit, Datenverkehr zu empfangen. Wenn Sie die Überwachung unterbrechen, werden die Informationen über den erstellten Dienst zurückgegeben, einschließlich des Dienst-ARN und der URL:

{ "service": { "cluster": "arn:aws:ecs:region:123456789012:cluster/default", "serviceName": "nginx-1234", "serviceArn": "arn:aws:ecs:region:123456789012:service/default/nginx-1234", "infrastructureRoleArn": "arn:aws:iam::123456789012:role/ecsInfrastructureRoleForExpressServices", "status": { "statusCode": "ACTIVE" }, "createdAt": "UNIXTIMESTAMP" } }

Schritt 3: Erstellen Sie eine Expressmodus-Dienstanwendung mit benutzerdefinierten Einstellungen

Sie können Ihre Expressmodus-Dienstanwendung anpassen, indem Sie zusätzliche Parameter angeben:

aws ecs create-express-gateway-service \ --execution-role-arn arn:aws:iam::123456789012:role/ecsTaskExecutionRole \ --infrastructure-role-arn arn:aws:iam::123456789012:role/ecsInfrastructureRoleForExpressServices \ --primary-container '{"image":"123456789012.dkr.ecr.region.amazonaws.com/my-app:latest","containerPort":8080,"environment":[{"name":"ENV","value":"production"},{"name":"DEBUG","value":"false"}]}' \ --service-name "my-web-app" \ --cpu 2 \ --memory 4 \ --health-check-path "/health" \ --scaling-target '{"minTaskCount":3,"maxTaskCount":100}' \ --monitor-resources

Dadurch wird eine Anwendung erstellt mit:

  • Ein benutzerdefinierter Name „my-web-app“

  • 2 vCPU und 4 GB Arbeitsspeicher

  • Port 8080 für Anwendungsdatenverkehr

  • Benutzerdefinierter Endpunkt für die Gesundheitsprüfung

  • Umgebungsvariablen

  • Mindestens 3 Aufgaben, maximal 100 Aufgaben für Auto Scaling

Erstellen Sie einen Expressmodus-Dienst mit Ihrer eigenen Aufgabendefinition

Sie können auch einen Expressmodus-Dienst mit Ihrer eigenen Aufgabendefinition erstellen. Mit Ihrer eigenen Aufgabendefinition haben Sie die volle Kontrolle über die Konfiguration auf Aufgabenebene. Der Expressmodus verwaltet weiterhin die Infrastruktur, einschließlich Load Balancing, Auto Scaling und Canary-Bereitstellungen.

Der folgende Befehl AWS Command Line Interface (AWS AWS CLI) erstellt einen Expressmodus-Dienst mit einer benutzerdefinierten Aufgabendefinition:

aws ecs create-express-gateway-service \ --infrastructure-role-arn arn:aws:iam::123456789012:role/ecsInfrastructureRoleForExpressServices \ --task-definition-arn arn:aws:ecs:us-west-2:123456789012:task-definition/my-td:3 \ --health-check-path "/health" \ --monitor-resources

Ihre Aufgabendefinition muss die folgenden Anforderungen erfüllen:

  • Ein Container mit dem Namen Main

  • Der Main Container muss über eine einzige TCP-Portzuordnung mit einem Container-Port und einem Portnamen verfügen

  • Die Aufgabendefinition muss FARGATE in ihren Kompatibilitäten

Anmerkung

Der taskDefinitionArn Parameter kann nicht mitprimaryContainer,, executionRoleArn taskRoleArncpu, oder memory im selben API-Aufruf angegeben werden. Der Expressmodus leitet diese Werte aus der bereitgestellten Aufgabendefinition ab.

Schritt 4: Überwachen Sie Ihre Bereitstellung

Die --monitor-resources Markierung funktioniert bei jedem Create-, Update- oder Delete-Aufruf an Ihre Express-Modus-Dienste. Darüber hinaus können Sie die Ressourcen in einem Dienst unabhängig von einer mutierenden Aktion jederzeit überwachen. Die Bereitstellungszeit kann je nach den Ressourcen, die bereitgestellt werden müssen, variieren. Sobald sich der Status auf ändertACTIVE, ist Ihre Anwendung bereit, Datenverkehr zu empfangen.

aws ecs monitor-express-gateway-service --service-arn arn:aws:ecs:region:123456789012:service/default/app-23d97h88

Sie können auch die aktuelle Konfiguration und den Status Ihrer Express Mode-Dienstanwendung abrufen:

aws ecs describe-express-gateway-service --service-arn arn:aws:ecs:region:123456789012:service/default/app-23d97h88

Schritt 5: Greifen Sie auf Ihre Anwendung zu

Greifen Sie über die angegebene URL auf die Expressmodus-Dienstanwendung zu, wenn sie aktiv wird. Das URL-Format ist:

https://<service-name>.ecs.<region>.on.aws/

Beispiel:

https://app-23d97h88.ecs.us-west-2.on.aws/

Ihre Anwendung läuft jetzt mit:

  • Automatische SSL/TLS Kündigung

  • Lastenausgleich über mehrere Availability Zones

  • Automatische Skalierung basierend auf der CPU-Auslastung

  • CloudWatch Protokollierung und Überwachung

  • 5XX-Rollback-Alarme und Canary-Bereitstellungen für future Updates