View a markdown version of this page

CodeDeploy blue/green Bereitstellungen für Amazon ECS - 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.

CodeDeploy blue/green Bereitstellungen für Amazon ECS

Wir empfehlen, dass Sie die Amazon blue/green ECS-Bereitstellung verwenden. Weitere Informationen finden Sie unter Erstellen einer Amazon ECS-Bereitstellung blue/green.

Der blue/green Bereitstellungstyp verwendet das blue/green Bereitstellungsmodell, das von gesteuert wird CodeDeploy. Mit diesem Bereitstellungstyp können Sie eine neue Bereitstellung eines Service überprüfen, bevor Sie den Produktionsverkehr an ihn senden. Weitere Informationen finden Sie unter Inhalt des CodeDeploy AWS CodeDeploy Benutzerhandbuchs. Überprüfen Sie den Status eines Amazon ECS-Service vor der Bereitstellung

Es gibt drei Möglichkeiten, wie sich der Datenverkehr während einer blue/green Bereitstellung ändern kann:

  • Canary – Der Datenverkehr wird in zwei Schritten verlagert. Sie können aus vordefinierten Canary-Optionen auswählen, die den Prozentsatz des Datenverkehrs, der im ersten Inkrementschritt zu Ihrem aktualisierten Aufgabensatz verschoben wird, sowie das Zeitintervall (in Minuten) angeben, das verstreichen soll, bevor der restliche Datenverkehr im zweiten Inkrementschritt verschoben wird.

  • Linear – Der Datenverkehr wird in gleich großen Schritten mit einer gleichen Anzahl von Minuten zwischen den Schritten verlagert. Sie können aus vordefinierten linearen Optionen auswählen, die den Prozentsatz des Datenverkehrs, der in den einzelnen Inkrementschritten verschoben wird, sowie das Zeitintervall (in Minuten) zwischen den einzelnen Inkrementschritten angeben.

  • All-at-once— Der gesamte Datenverkehr wird auf einmal vom ursprünglichen Aufgabensatz zum aktualisierten Aufgabensatz verschoben.

Die folgenden Komponenten werden von Amazon ECS verwendet CodeDeploy , wenn ein Service den blue/green Bereitstellungstyp verwendet:

CodeDeploy Anwendung

Eine Sammlung von CodeDeploy Ressourcen. Sie besteht aus einer oder mehreren Bereitstellungsgruppen.

CodeDeploy Bereitstellungsgruppe

Die Bereitstellungseinstellungen. Diese bestehen aus:

  • Amazon-ECS-Cluster und -Service

  • Informationen zu Load-Balancer-Zielgruppen- und Listenern

  • Rollback-Strategie für die Bereitstellung

  • Einstellungen zur Umleitung des Datenverkehrs

  • Beendigungseinstellungen der ursprünglichen Version

  • Bereitstellungskonfiguration

  • CloudWatch Alarmkonfiguration, die so eingerichtet werden kann, dass Bereitstellungen gestoppt werden

  • SNS- oder CloudWatch Events-Einstellungen für Benachrichtigungen

Weitere Informationen finden Sie unter Arbeiten mit Bereitstellungsgruppen im AWS CodeDeploy -Benutzerhandbuch.

CodeDeploy Bereitstellungskonfiguration

Gibt an, wie CodeDeploy der Produktionsdatenverkehr während einer Bereitstellung zu Ihrem Ersatz-Task-Set weitergeleitet wird. Die folgenden vordefinierten linearen und Canary-Bereitstellungskonfigurationen sind verfügbar. Sie können auch benutzerdefinierte lineare und Canary-Bereitstellungen erstellen. Weitere Informationen finden Sie unter Arbeiten mit Bereitstellungskonfigurationen im AWS CodeDeploy -Benutzerhandbuch.

  • CodeDeployDefault.ECSAllAtOnce: Leitet den gesamten Datenverkehr auf einmal in den aktualisierten Amazon ECS-Container um

  • CodeDeployDefault.ECSLinear10PercentEvery1Minutes: Verschiebt jede Minute 10 Prozent des Datenverkehrs, bis der gesamte Verkehr verlagert ist.

  • CodeDeployDefault.ECSLinear10PercentEvery3Minutes: Verschiebt alle 3 Minuten 10 Prozent des Verkehrs, bis der gesamte Verkehr verlagert ist.

  • CodeDeployDefault.ECSCanary10Percent5Minutes: Verschiebt im ersten Schritt 10 Prozent des Verkehrs. Die restlichen 90 Prozent werden fünf Minuten später bereitgestellt.

  • CodeDeployDefault.ECSCanary10Percent15Minutes: Verschiebt 10 Prozent des Verkehrs in der ersten Stufe. Die restlichen 90 Prozent werden 15 Minuten später bereitgestellt.

Revision

Eine Revision ist die CodeDeploy Anwendungsspezifikationsdatei (AppSpec Datei). In der AppSpec Datei geben Sie den vollständigen ARN der Aufgabendefinition sowie den Container und den Port Ihres Ersatz-Task-Sets an, an das der Datenverkehr weitergeleitet werden soll, wenn eine neue Bereitstellung erstellt wird. Der Containername muss einer der Containernamen sein, auf die in Ihrer Aufgabendefinition verwiesen wird. Wenn die Netzwerkkonfiguration oder Plattformversion in der Service-Definition aktualisiert wurde, müssen Sie diese Details auch in der AppSpec Datei angeben. Sie können auch die Lambda-Funktionen angeben, die während des Bereitstellungs-Lebenszyklus ausgeführt werden sollen. Mit den Lambda-Funktionen können Sie während der Bereitstellung Tests durchführen und Metriken zurückgeben. Weitere Informationen finden Sie unter AppSpec Dateireferenz im AWS CodeDeploy Benutzerhandbuch.

Überlegungen

Beachten Sie bei der Verwendung des blue/green Bereitstellungstyps Folgendes:

  • Wenn ein Amazon ECS-Service, der den blue/green Bereitstellungstyp verwendet, zum ersten Mal erstellt wird, wird ein Amazon ECS-Aufgabenset erstellt.

  • Sie müssen den Service für die Verwendung von entweder einem Application Load Balancer oder Network Load Balancer konfigurieren. Nachfolgend sind die Anforderungen an den Load Balancer aufgeführt:

    • Sie müssen dem Load Balancer, der zur Weiterleitung des Produktionsverkehrs verwendet wird, einen Produktions-Listener hinzufügen.

    • Dem Load Balancer, der zur Weiterleitung des Testverkehrs verwendet wird, kann ein optionaler Test-Listener hinzugefügt werden. Wenn Sie einen Test-Listener angeben, CodeDeploy leitet Ihr Testdatenverkehr während einer Bereitstellung an den Ersatz-Tasksatz weiter.

    • Sowohl der Produktions- als auch der Test-Listener müssen demselben Load Balancer angehören.

    • Sie müssen für den Load Balancer eine Zielgruppe definieren. Die Zielgruppe leitet den Datenverkehr über den Produktions-Listener an die ursprüngliche Aufgabe weiter, die in einem Service festgelegt wurde.

    • Bei Verwendung eines Network Load Balancer wird nur die CodeDeployDefault.ECSAllAtOnce-Bereitstellungskonfiguration unterstützt.

  • Bei Diensten, die für die Verwendung von Service Auto Scaling und den blue/green Bereitstellungstyp konfiguriert sind, wird Auto Scaling während einer Bereitstellung nicht blockiert, aber die Bereitstellung kann unter bestimmten Umständen fehlschlagen. Im Folgenden wird dieses Verhalten ausführlich beschrieben.

    • Wenn ein Dienst skaliert und eine Bereitstellung gestartet wird, CodeDeploy wird der grüne Tasksatz erstellt. Dieser wartet bis zu einer Stunde, bis der grüne Tasksatz den stationären Status erreicht hat. Bis dahin wird kein Datenverkehr weitergeleitet.

    • Wenn ein Dienst gerade blue/green bereitgestellt wird und ein Skalierungsereignis eintritt, verschiebt sich der Datenverkehr für 5 Minuten weiter. Wenn der Dienst nicht innerhalb von 5 Minuten einen stabilen Zustand erreicht, CodeDeploy wird die Bereitstellung gestoppt und als ausgefallen markiert.

  • Aufgaben, die die Controller-Typen Fargate oder CODE_DEPLOY verwenden, unterstützen die DAEMON-Planungsstrategie nicht.

  • Wenn Sie zum ersten Mal eine CodeDeploy Anwendung und eine Bereitstellungsgruppe erstellen, müssen Sie Folgendes angeben:

    • Sie müssen zwei Zielgruppen für den Load Balancer definieren. Eine Zielgruppe ist die ursprüngliche Zielgruppe, die für den Load Balancer beim Anlegen des Amazon-ECS-Service definiert wurde. Die einzige Anforderung der zweiten Zielgruppe besteht darin, dass sie nicht mit einem anderen Load Balancer als dem, den der Service verwendet, verknüpft werden darf.

  • Wenn Sie eine CodeDeploy Bereitstellung für einen Amazon ECS-Service erstellen, CodeDeploy wird in der Bereitstellung ein Ersatz-Task-Set (oder ein grünes Task-Set) erstellt. Wenn Sie dem Load Balancer einen Test-Listener hinzugefügt haben, CodeDeploy leitet Ihren Testdatenverkehr an das Ersatz-Task-Set weiter. Dies ist der Zeitpunkt, an dem Sie Validierungstests durchführen können. CodeDeploy leitet den Produktionsdatenverkehr dann vom ursprünglichen Aufgabensatz zum Ersatz-Aufgabensatz um. Dabei gelten die Einstellungen für die Datenverkehrsumleitung der Bereitstellungsgruppe.

Erforderliche IAM-Berechtigungen

Blue/green Bereitstellungen werden durch eine Kombination aus Amazon ECS und APIs ermöglicht. CodeDeploy Benutzer müssen über die entsprechenden Berechtigungen für diese Dienste verfügen, bevor sie Amazon blue/green ECS-Bereitstellungen in den AWS-Managementkonsole oder mit den AWS CLI SDKs verwenden können.

Zusätzlich zu den IAM-Standardberechtigungen für das Erstellen und Aktualisieren von Services erfordert Amazon ECS folgende Berechtigungen. Diese Berechtigungen wurden der AmazonECS_FullAccess-IAM-Richtlinie hinzugefügt. Weitere Informationen finden Sie unter Amazon ECS_ FullAccess.

  • codedeploy:CreateApplication

  • codedeploy:CreateDeployment

  • codedeploy:CreateDeploymentGroup

  • codedeploy:GetApplication

  • codedeploy:GetDeployment

  • codedeploy:GetDeploymentGroup

  • codedeploy:ListApplications

  • codedeploy:ListDeploymentGroups

  • codedeploy:ListDeployments

  • codedeploy:StopDeployment

  • codedeploy:GetDeploymentTarget

  • codedeploy:ListDeploymentTargets

  • codedeploy:GetDeploymentConfig

  • codedeploy:GetApplicationRevision

  • codedeploy:RegisterApplicationRevision

  • codedeploy:BatchGetApplicationRevisions

  • codedeploy:BatchGetDeploymentGroups

  • codedeploy:BatchGetDeployments

  • codedeploy:BatchGetApplications

  • codedeploy:ListApplicationRevisions

  • codedeploy:ListDeploymentConfigs

  • codedeploy:ContinueDeployment

  • sns:ListTopics

  • cloudwatch:DescribeAlarms

  • lambda:ListFunctions

Anmerkung

Zusätzlich zu den standardmäßigen Amazon-ECS-Berechtigungen, die zum Ausführen von Aufgaben und Services erforderlich sind, benötigen Benutzer auch iam:PassRole-Berechtigungen, um IAM-Rollen für Aufgaben zu verwenden.

CodeDeploy benötigt Berechtigungen, um Amazon ECS-APIs aufzurufen, Ihr Elastic Load Balancing zu ändern, Lambda-Funktionen aufzurufen und CloudWatch Alarme zu beschreiben, sowie Berechtigungen, um die gewünschte Anzahl Ihres Services in Ihrem Namen zu ändern. Bevor Sie einen Amazon ECS-Service erstellen, der den blue/green Bereitstellungstyp verwendet, müssen Sie eine IAM-Rolle () erstellen. ecsCodeDeployRole Weitere Informationen finden Sie unter Amazon ECS CodeDeploy IAM-Rolle.