

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.

# Eine Amazon blue/green ECS-Bereitstellung erstellen
<a name="deploy-blue-green-service"></a>

 Mithilfe von Amazon blue/green ECS-Bereitstellungen können Sie Serviceänderungen vornehmen und testen, bevor Sie sie in einer Produktionsumgebung implementieren. 

## Voraussetzungen
<a name="deploy-blue-green-service-prerequisites"></a>

Führen Sie die folgenden Vorgänge aus, bevor Sie eine blue/green Bereitstellung starten. 

1. Konfigurieren Sie die entsprechenden Berechtigungen.
   + Weitere Informationen zu den erforderlichen Berechtigungen für Elastic Load Balancing finden Sie unter [Amazon-ECS-IAM-Infrastrukturrolle für Load Balancer](AmazonECSInfrastructureRolePolicyForLoadBalancers.md).
   + Weitere Informationen zu Lambda-Berechtigungen finden Sie unter [Erforderliche Berechtigungen für Lambda-Funktionen in Amazon ECS-Bereitstellungen blue/green](blue-green-permissions.md).

1. Amazon blue/green ECS-Bereitstellungen erfordern, dass Ihr Service eine der folgenden Funktionen verwendet: Konfigurieren Sie die entsprechenden Ressourcen.
   + Application Load Balancer – Weitere Informationen finden Sie unter [Application Load Balancer Balancer-Ressourcen für blaue/grüne, lineare und kanarische Bereitstellungen](alb-resources-for-blue-green.md).
   + Network Load Balancer – Weitere Informationen finden Sie unter [Network Load Balancer Balancer-Ressourcen für Amazon ECS Blue/Green-, Linear- und Canary-Bereitstellungen](nlb-resources-for-blue-green.md).
   + Service Connect – Weitere Informationen finden Sie unter [Service Connect-Ressourcen für blaue/grüne, lineare und kanarische Bereitstellungen von Amazon ECS](service-connect-blue-green.md).

1. Entscheiden Sie, ob Sie Lambda-Funktionen für die Lebenszyklusphasen ausführen möchten.
   + PRE\$1SCALE\$1UP
   + POST\$1SCALE\$1UP
   + TEST\$1TRAFFIC\$1SHIFT
   + POST\$1TEST\$1TRAFFIC\$1SHIFT
   + PRODUCTION\$1TRAFFIC\$1SHIFT
   + POST\$1PRODUCTION\$1TRAFFIC\$1SHIFT

   Weitere Informationen finden Sie unter [Erstellen einer Lambda-Funktion mit der Konsole](https://docs.aws.amazon.com/lambda/latest/dg/getting-started.html#getting-started-create-function) im *Entwicklerhandbuch für AWS Lambda *.

## Verfahren
<a name="deploy-blue-green-service-procedure"></a>

Sie können die Konsole oder die verwenden AWS CLI , um einen Amazon blue/green ECS-Service zu erstellen.

------
#### [ Console ]

1. Öffnen Sie die Konsole auf [https://console.aws.amazon.com/ecs/Version](https://console.aws.amazon.com/ecs/v2) 2.

1. Bestimmen Sie die Ressource, von der aus Sie den Service starten.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/AmazonECS/latest/developerguide/deploy-blue-green-service.html)

   Die Seite **Service erstellen** wird angezeigt.

1. Führen Sie unter **Service-Details** die folgenden Schritte aus:

   1. Wählen Sie für **Aufgabendefinitionsfamilie** die zu verwendende Aufgabendefinition aus. Geben Sie dann unter **Revision der Aufgabendefinition** die zu verwendende Revision ein.

   1. Wählen Sie für **Service name** (Servicename) einen Namen für Ihren Service aus.

1. Um den Service in einem vorhandenen Cluster auszuführen, wählen Sie unter **Vorhandener Cluster** den Cluster aus. Um den Service in einem neuen Cluster auszuführen, wählen Sie **Cluster erstellen** aus 

1. Wählen Sie aus, wie Ihre Aufgaben auf Ihre Cluster-Infrastruktur verteilt werden. Wählen Sie unter **Datenverarbeitungskonfiguration** Ihre Option aus.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/AmazonECS/latest/developerguide/deploy-blue-green-service.html)

1. Führen Sie im Abschnitt **Bereitstellungskonfiguration** Folgendes aus:

   1. Wählen Sie für **Service-Typ** die Option **Replikat** aus.

   1. Geben Sie für **Desired tasks** (Gewünschte Aufgaben) die Anzahl der Aufgaben an, die im Service gestartet und aufrecht erhalten werden sollen.

   1. Damit Amazon ECS die Verteilung der Aufgaben auf die Availability Zones überwacht und sie bei einem Ungleichgewicht neu verteilt, wählen Sie unter **Service-Neuausgleich der Availability Zone** die Option **Service-Neuausgleich der Availability Zone** aus.

   1. Geben Sie für **Wartefrist der Zustandsprüfung** die Zeitspanne (in Sekunden) ein, die der Service Scheduler fehlerhafte Elastic-Load-Balancing-, VPC-Lattice- und Container-Zustandsprüfungen ignoriert, nachdem eine Aufgabe zum ersten Mal gestartet wurde. Wenn Sie keine Übergangsfrist für die Zustandsprüfung angeben, wird der Standardwert 0 verwendet.

1. 

   1. Geben Sie für **Bake-Zeit** die Anzahl der Minuten ein, für die sowohl die blaue als auch die grüne Service-Revision gleichzeitig ausgeführt werden, bevor die blaue Revision beendet wird. Dadurch bleibt Zeit für die Verifizierung und das Testen.

   1. (Optional) Führen Sie Lambda-Funktionen in bestimmten Phasen der Bereitstellung aus. Wählen Sie unter **Bereitstellungs-Lebenszyklus-Hooks** die Phasen aus, in denen die Lebenszyklus-Hooks ausgeführt werden sollen.

      So fügen Sie einen Lebenszyklus-Hook hinzu:

      1. Wählen Sie **Hinzufügen** aus.

      1. Geben Sie für **Lambda-Funktion** den Funktionsnamen oder ARN ein.

      1. Wählen Sie für **Rolle** die IAM-Rolle aus, die berechtigt ist, die Lambda-Funktion aufzurufen.

      1. Wählen Sie für **Lebenszyklusphasen** die Phasen aus, in denen die Lambda-Funktion ausgeführt werden soll.

1. Um zu konfigurieren, wie Amazon ECS Bereitstellungsfehler erkennt und behandelt, erweitern Sie **Deployment failure detection** (Erkennung von Bereitstellungsfehlern) und wählen Sie dann Ihre Optionen. 

   1. Um eine Bereitstellung anzuhalten, wenn die Aufgaben nicht gestartet werden können, wählen Sie **Use the Amazon ECS deployment circuit breaker** (Verwenden des Amazon-ECS-Bereitstellungsschutzschalters).

      Wenn Sie möchten, dass die Software die Bereitstellung automatisch auf den letzten abgeschlossenen Bereitstellungsstatus zurücksetzt, wenn der Bereitstellungs-Schutzschalter die Bereitstellung auf einen fehlgeschlagenen Status setzt, wählen Sie **Rollback bei Fehler** aus.

   1. Um eine Bereitstellung auf der Grundlage von Anwendungsmetriken zu beenden, wählen Sie ** CloudWatch Alarm (e) verwenden** aus. Wählen Sie dann unter **CloudWatch Alarmname** die Alarme aus. Um einen neuen Alarm zu erstellen, gehen Sie zur CloudWatch Konsole.

      Damit die Software die Bereitstellung automatisch auf den Status der letzten abgeschlossenen Bereitstellung zurücksetzt, wenn ein CloudWatch Alarm die Bereitstellung in einen fehlgeschlagenen Zustand versetzt, wählen Sie **Rollback bei Fehlern** aus.

1. (Optional) Um Ihren Service mit Service Connect zu verbinden, erweitern Sie **Service Connect** und geben Sie dann Folgendes an:

   1.  Wählen Sie **Service Connect einschalten** aus.

   1. Geben Sie unter **Service Connect configuration** (Service-Connect-Konfiguration) den Client-Modus an.
      + Wenn Ihr Service eine Netzwerk-Client-Anwendung ausführt, die nur eine Verbindung zu anderen Services im Namespace herstellen muss, wählen Sie **Nur Client-Seite** aus.
      + Wenn Ihr Service eine Netzwerk- oder Webservice-Anwendung ausführt und Endpunkte für diesen Service bereitstellen muss und eine Verbindung zu anderen Services im Namespace herstellt, wählen Sie **Client and server** (Client und Server) aus.

   1. Um einen Namespace zu verwenden, der nicht der Standard-Cluster-Namespace ist, wählen Sie für **Namespace** den Service-Namespace aus. Dies kann ein Namespace sein, der separat in demselben AWS-Region in Ihrer AWS-Konto oder einem Namespace in derselben Region erstellt wurde und der mithilfe AWS Resource Access Manager von () mit Ihrem Konto geteilt wird.AWS RAM*Weitere Informationen zur gemeinsamen Nutzung von AWS Cloud Map Namespaces finden Sie unter [Kontenübergreifende gemeinsame Nutzung von AWS Cloud Map Namespaces](https://docs.aws.amazon.com/cloud-map/latest/dg/sharing-namespaces.html) im Entwicklerhandbuch.AWS Cloud Map *

   1. (Optional) Konfigurieren Sie Header-Regeln für Testdatenverkehr für Bereitstellungen. blue/green Geben Sie unter **Test-Datenverkehrs-Routing** Folgendes an:

      1. Wählen Sie **Header-Regeln für Test-Datenverkehr aktivieren** aus, um während des Tests bestimmte Anfragen an die grüne Service-Revision weiterzuleiten.

      1. Konfigurieren Sie für **Regeln für den Header-Abgleich** die Kriterien für das Routing von Test-Datenverkehr:
         + **Header-Name**: Geben Sie den Namen des HTTP-Headers ein, dem der Abgleich entsprechen soll (z. B. `X-Test-Version` oder `User-Agent`).
         + **Übereinstimmungstyp**: Wählen Sie die Kriterien für den Abgleich aus:
           + **Exakte Übereinstimmung**: Leitet Anfragen weiter, bei denen der Header-Wert genau dem angegebenen Wert entspricht
           + **Header vorhanden**: Leitet Anfragen weiter, die den angegebenen Header enthalten, unabhängig vom Wert
           + **Musterübereinstimmung**: Leitet Anfragen weiter, bei denen der Header-Wert einem bestimmten Muster entspricht
         + **Header-Wert** (wenn „Exakte Übereinstimmung“ oder „Musterübereinstimmung“ verwendet wird): Geben Sie den Wert oder das Muster ein, mit dem abgeglichen werden soll.

         Sie können mehrere Header-Abgleichsregeln hinzufügen, um eine komplexe Routing-Logik zu erstellen. Anfragen, die einer der konfigurierten Regeln entsprechen, werden zum Testen an die grüne Service-Revision weitergeleitet.

      1. Wählen Sie **Header-Regel hinzufügen**, um zusätzliche Bedingungen für den Header-Abgleich zu konfigurieren.
**Anmerkung**  
Mithilfe von Header-Regeln für den Test-Datenverkehr können Sie neue Funktionen mit kontrolliertem Datenverkehr validieren, bevor Sie die vollständige Bereitstellung abschließen. Auf diese Weise können Sie die grüne Service-Revision mit spezifischen Anfragen (z. B. von internen Testtools oder Beta-Benutzern) testen und gleichzeitig den normalen Datenfluss zur blauen Service-Revision aufrechterhalten.

   1. (Optional) Geben Sie eine Protokollkonfiguration an. Wählen Sie **Protokollsammlung verwenden** aus. Die Standardoption sendet CloudWatch Container-Protokolle an Logs. Die anderen Protokolltreiberoptionen werden mit konfiguriert AWS FireLens. Weitere Informationen finden Sie unter [Amazon ECS-Protokolle an einen AWS Service senden oder AWS Partner](using_firelens.md).

      Im Folgenden wird jedes Container-Protokollziel ausführlicher beschrieben.
      + **Amazon CloudWatch** — Konfigurieren Sie die Aufgabe, um Container-Logs an CloudWatch Logs zu senden. Es werden die standardmäßigen Protokolltreiberoptionen bereitgestellt, mit denen in Ihrem Namen eine CloudWatch Protokollgruppe erstellt wird. Um einen anderen Protokollgruppen-Namen anzugeben, ändern Sie die Werte der Treiberoption.
      + **Amazon Data Firehose** – Konfigurieren Sie die Aufgabe, dass Container-Protokolle an Firehose gesendet werden. Die Standardoptionen für den Protokolltreiber werden bereitgestellt, wodurch die Protokolle an einen Bereitstellungsdatenstrom von Firehose gesendet werden. Um einen anderen Namen für den Bereitstellungsdatenstrom anzugeben, ändern Sie die Werte der Treiberoption.
      + **Amazon Kinesis Data Streams** – Konfigurieren Sie die Aufgabe, dass Container-Protokolle an Kinesis Data Streams gesendet werden. Die Standardoptionen für den Protokolltreiber werden bereitgestellt, wodurch Protokolle an einen Datenstrom von Kinesis Data Streams gesendet werden. Um einen anderen Datenstrom-Namen anzugeben, ändern Sie die Werte der Treiberoption.
      + **Amazon OpenSearch Service** — Konfigurieren Sie die Aufgabe, um Container-Logs an eine OpenSearch Service-Domain zu senden. Die Optionen für den Protokolltreiber müssen bereitgestellt werden. 
      + **Amazon S3** – Konfigurieren Sie die Aufgabe, dass Container-Protokolle an einen Amazon-S3-Bucket gesendet werden. Die Standardoptionen für den Protokolltreiber werden bereitgestellt, Sie müssen jedoch einen gültigen Amazon-S3-Bucket-Namen angeben.

1. (Optional) Konfigurieren Sie **Load Balancing** für die Blau/Grün-Bereitstellung.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/AmazonECS/latest/developerguide/deploy-blue-green-service.html)

1. (Optional) Um Ihren Service und Ihre Aufgaben besser identifizieren zu können, erweitern Sie den Bereich **Tags** (Tags) und konfigurieren Sie dann Ihre Tags.

   Damit Amazon ECS alle neu gestarteten Aufgaben automatisch mit Tags für den Clusternamen und den Aufgabendefinitions-Tags versieht, wählen Sie **Amazon ECS Managed Tags einschalten** und dann für **Tags verbreiten von** die Option **Aufgabendefinitionen**.

   Damit Amazon ECS alle neu gestarteten Aufgaben automatisch mit Tags für den Clustername und die Service-Tags versieht, wählen Sie **Amazon ECS Managed Tags** einschalten und dann für **Tags verbreiten von** die Option **Service**.

   Hinzufügen oder Entfernen eines Tag.
   + [Ein Tag hinzufügen] Wählen Sie **Add tag** (Tag hinzufügen) und führen Sie dann das Folgende aus:
     + Geben Sie bei **Key (Schlüssel)** den Schlüsselnamen ein.
     + Geben Sie bei **Value (Wert)** den Wert des Schlüssels ein.
   + [Tag entfernen] Wählen Sie neben dem Tag die Option **Remove tag (Tag löschen)** aus.

1. Wählen Sie **Erstellen** aus.

------
#### [ AWS CLI ]

1. Erstellen Sie eine Datei mit dem Namen `service-definition.json` und dem folgenden Inhalt.

   Ersetzen Sie die durch Ihre *user-input* Werte.

   ```
   {
     "serviceName": "myBlueGreenService",
     "cluster": "arn:aws:ecs:us-west-2:123456789012:cluster/sample-fargate-cluster",
     "taskDefinition": "sample-fargate:1",
     "desiredCount": 5,
     "launchType": "FARGATE",
     "networkConfiguration": {
       "awsvpcConfiguration": {
         "subnets": [
           "subnet-09ce6e74c116a2299",
           "subnet-00bb3bd7a73526788",
           "subnet-0048a611aaec65477"
         ],
         "securityGroups": [
           "sg-09d45005497daa123"
         ],
         "assignPublicIp": "ENABLED"
       }
     },
     "deploymentController": {
       "type": "ECS"
     },
     "deploymentConfiguration": {
       "strategy": "BLUE_GREEN",
       "maximumPercent": 200,
       "minimumHealthyPercent": 100,
       "bakeTimeInMinutes": 2,
       "alarms": {
         "alarmNames": [
           "myAlarm"
         ],
         "rollback": true,
         "enable": true
       },
       "lifecycleHooks": [
         {
           "hookTargetArn": "arn:aws:lambda:us-west-2:7123456789012:function:checkExample",
           "roleArn": "arn:aws:iam::123456789012:role/ECSLifecycleHookInvoke",
           "lifecycleStages": [
             "PRE_SCALE_UP"
           ]
         }
       ]
     },
     "loadBalancers": [
       {
         "targetGroupArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/blue-target-group/54402ff563af1197",
         "containerName": "fargate-app",
         "containerPort": 80,
         "advancedConfiguration": {
           "alternateTargetGroupArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/green-target-group/cad10a56f5843199",
           "productionListenerRule": "arn:aws:elasticloadbalancing:us-west-2:123456789012:listener-rule/app/my-blue-green-demo/32e0e4f946c3c05b/9cfa8c482e204f7d/831dbaf72edb911",
           "roleArn": "arn:aws:iam::123456789012:role/LoadBalancerManagementforECS"
         }
       }
     ]
   }
   ```

1. Führen Sie `create-service`.

   Ersetze die *user-input* durch deine Werte.

   ```
   aws ecs create-service --cli-input-json file://service-definition.json
   ```

   Alternativ können Sie das folgende Beispiel verwenden, das einen blue/green Bereitstellungsdienst mit einer Load Balancer-Konfiguration erstellt:

   ```
   aws ecs create-service \
      --cluster "arn:aws:ecs:us-west-2:123456789012:cluster/MyCluster" \
      --service-name "blue-green-example-service" \
      --task-definition "nginxServer:1" \
      --launch-type "FARGATE" \
      --network-configuration "awsvpcConfiguration={subnets=[subnet-12345,subnet-67890,subnet-abcdef,subnet-fedcba],securityGroups=[sg-12345],assignPublicIp=ENABLED}" \
      --desired-count 3 \
      --deployment-controller "type=ECS" \
      --deployment-configuration "strategy=BLUE_GREEN,maximumPercent=200,minimumHealthyPercent=100,bakeTimeInMinutes=0" \
      --load-balancers "targetGroupArn=arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/MyBGtg1/abcdef1234567890,containerName=nginx,containerPort=80,advancedConfiguration={alternateTargetGroupArn=arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/MyBGtg2/0987654321fedcba,productionListenerRule=arn:aws:elasticloadbalancing:us-west-2:123456789012:listener-rule/app/MyLB/1234567890abcdef/1234567890abcdef,roleArn=arn:aws:iam::123456789012:role/ELBManagementRole}"
   ```

------

## Nächste Schritte
<a name="deploy-blue-green-service-next-steps"></a>
+ Aktualisieren Sie den Service, um die Bereitstellung zu starten. Weitere Informationen finden Sie unter [Aktualisierung eines Amazon ECS-Service](update-service-console-v2.md).
+ Überwachen Sie den Bereitstellungsprozess, um sicherzustellen, dass er dem blue/green Muster folgt:
  + Die grüne Service-Revision wurde erstellt und hochskaliert
  + Der Test-Datenverkehr wird an die grüne Revision weitergeleitet (falls konfiguriert)
  + Der Produktionsdatenverkehr verlagert sich auf die grüne Revision.
  + Nach Ablauf der Bake-Zeit wird die blaue Revision beendet