Bereitstellungen auf einer Amazon ECS Compute Platform - AWS CodeDeploy

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.

Bereitstellungen auf einer Amazon ECS Compute Platform

Dieses Thema enthält Informationen zu den Komponenten und zum Arbeitsablauf von CodeDeploy Bereitstellungen, die die ECS Amazon-Rechenplattform verwenden.

Bevor Sie mit einer ECS Amazon-Bereitstellung beginnen

Bevor Sie mit der Bereitstellung einer ECS Amazon-Anwendung beginnen, müssen Sie Folgendes bereithalten. Einige Anforderungen werden bei der Erstellung Ihrer Bereitstellungsgruppe angegeben, andere sind in der AppSpec Datei angegeben.

Anforderung Wo angegeben
ECSAmazon-Cluster Bereitstellungsgruppe
ECSAmazon-Dienst Bereitstellungsgruppe
Application Load Balancer oder Network Load Balancer Bereitstellungsgruppe
Produktions-Listener Bereitstellungsgruppe
Test-Listener (optional) Bereitstellungsgruppe
Zwei Zielgruppen Bereitstellungsgruppe
ECSAmazon-Aufgabendefinition AppSpec Datei
Container-Name AppSpec datei
Container-Port AppSpec datei
ECSAmazon-Cluster

Ein ECS Amazon-Cluster ist eine logische Gruppierung von Aufgaben oder Diensten. Sie geben den ECS Amazon-Cluster an, der Ihren ECS Amazon-Service enthält, wenn Sie die Bereitstellungsgruppe Ihrer CodeDeploy Anwendung erstellen. Weitere Informationen finden Sie unter Amazon ECS Clusters im Amazon Elastic Container Service-Benutzerhandbuch.

ECSAmazon-Dienst

Ein ECS Amazon-Service verwaltet und führt bestimmte Instanzen einer Aufgabendefinition in einem ECS Amazon-Cluster aus. Ihr ECS Amazon-Service muss für aktiviert sein CodeDeploy. Standardmäßig ist ein ECS Amazon-Service für ECS Amazon-Bereitstellungen aktiviert. Wenn Sie Ihre Bereitstellungsgruppe erstellen, entscheiden Sie sich dafür, einen ECS Amazon-Service bereitzustellen, der sich in Ihrem ECS Amazon-Cluster befindet. Weitere Informationen finden Sie unter Amazon ECS Services im Amazon Elastic Container Service User Guide.

Application Load Balancer oder Network Load Balancer

Sie müssen Elastic Load Balancing mit dem ECS Amazon-Service verwenden, den Sie mit einer ECS Amazon-Bereitstellung aktualisieren möchten. Sie können einen Application Load Balancer oder einen Network Load Balancer verwenden. Wir empfehlen einen Application Load Balancer, damit Sie Funktionen wie dynamische Portzuweisung und pfadbasiertes Routing und Prioritätsregeln nutzen können. Sie geben den Load Balancer an, wenn Sie die Bereitstellungsgruppe für Ihre CodeDeploy Anwendung erstellen. Weitere Informationen finden Sie unter Einen Load Balancer, Zielgruppen und Listener für CodeDeploy Amazon ECS-Bereitstellungen einrichten und Creating a Load Balancer im Amazon Elastic Container Service-Benutzerhandbuch.

Ein oder zwei Zuhörer

Ein Listener wird vom Load Balancer verwendet, um Datenverkehr an die Zielgruppen weiterzuleiten. Ein Produktions-Listener ist erforderlich. Sie können optional einen zweiten Test-Listener angeben, der Datenverkehr an den neuen Aufgabensatz weiterleitet, während Sie Validierungstests durchführen. Sie geben einen oder beide Listener an, wenn Sie die Bereitstellungsgruppe erstellen. Wenn Sie die ECS Amazon-Konsole verwenden, um Ihren ECS Amazon-Service zu erstellen, werden Ihre Listener für Sie erstellt. Weitere Informationen finden Sie unter Listener für Ihre Application Load Balancer im Elastic Load Balancing User Guide und Creating a Service im Amazon Elastic Container Service User Guide.

Zwei ECS Amazon-Zielgruppen

Eine Zielgruppe wird verwendet, um Datenverkehr an ein registriertes Ziel weiterzuleiten. Für eine ECS Amazon-Bereitstellung sind zwei Zielgruppen erforderlich: eine für den ursprünglichen Aufgabensatz Ihrer ECS Amazon-Anwendung und eine für den Ersatzaufgabensatz. CodeDeploy Erstellt während der Bereitstellung einen Ersatzaufgabensatz und leitet den Datenverkehr vom ursprünglichen Aufgabensatz zum neuen um. Sie geben die Zielgruppen an, wenn Sie die Bereitstellungsgruppe für Ihre CodeDeploy Anwendung erstellen.

CodeDeploy Ermittelt während einer Bereitstellung, welche Zielgruppe mit dem Aufgabensatz in Ihrem ECS Amazon-Service verknüpft ist, der den Status hat PRIMARY (dies ist der ursprüngliche Aufgabensatz), ordnet ihm eine Zielgruppe zu und ordnet dann die andere Zielgruppe dem Ersatzaufgabensatz zu. Bei der nächsten Bereitstellung wird die Zielgruppe, die dem ursprünglichen Aufgabensatz der jetzigen Bereitstellung zugeordnet ist, dem neuen Aufgabensatz der nächsten Bereitstellung zugeordnet. Weitere Informationen finden Sie unter Zielgruppen für Ihre Application Load Balancer im Elastic Load Balancing User Guide.

Eine ECS Amazon-Aufgabendefinition

Eine Aufgabendefinition ist erforderlich, um den Docker-Container auszuführen, der Ihre ECS Amazon-Anwendung enthält. Sie geben die ARN Ihrer Aufgabendefinition in der AppSpec Datei Ihrer CodeDeploy Anwendung an. Weitere Informationen finden Sie unter ECSAmazon-Aufgabendefinitionen im Amazon Elastic Container Service-Benutzerhandbuch und AppSpec Abschnitt „Ressourcen“ für ECS Amazon-Bereitstellungen.

Ein Container für Ihre ECS Amazon-Anwendung

Ein Docker-Container ist eine Software-Einheit, die Code und dessen Abhängigkeiten so verpackt, dass Ihre Anwendung ausgeführt werden kann. Ein Container isoliert die Anwendung so, dass sie in verschiedenen Computing-Umgebungen ausgeführt werden kann. Ihr Load Balancer leitet den Verkehr an einen Container im Taskset Ihrer ECS Amazon-Anwendung weiter. Sie geben den Namen Ihres Containers in der AppSpec Datei Ihrer CodeDeploy Anwendung an. Der in Ihrer AppSpec Datei angegebene Container muss einer der in Ihrer ECS Amazon-Aufgabendefinition angegebenen Container sein. Weitere Informationen finden Sie unter Was ist Amazon Elastic Container Service? im Amazon Elastic Container Service-Benutzerhandbuch und AppSpec Abschnitt „Ressourcen“ für ECS Amazon-Bereitstellungen.

Ein Port für Ihren Ersatz-Aufgabensatz

Während Ihrer ECS Amazon-Bereitstellung leitet Ihr Load Balancer den Verkehr zu diesem Port auf dem Container weiter, der in der AppSpec Datei Ihrer CodeDeploy Anwendung angegeben ist. Sie geben den Port in der AppSpec Datei Ihrer CodeDeploy Anwendung an. Weitere Informationen finden Sie unter AppSpec Abschnitt „Ressourcen“ für ECS Amazon-Bereitstellungen.

Bereitstellungs-Workflow (auf hoher Ebene) auf einer ECS Amazon-Rechenplattform

Das folgende Diagramm zeigt die wichtigsten Schritte bei der Bereitstellung aktualisierter ECS Amazon-Services.

Wie CodeDeploy stellt eine Anwendung als Aufgabe in Amazon ECS bereit.

Zu diesen Schritten gehören:

  1. Erstellen Sie eine AWS CodeDeploy Anwendung, indem Sie einen Namen angeben, der eindeutig darstellt, was Sie bereitstellen möchten. Um eine ECS Amazon-Anwendung bereitzustellen, wählen Sie in Ihrer AWS CodeDeploy Anwendung die ECS Amazon-Rechenplattform aus. CodeDeploy verwendet während einer Bereitstellung eine Anwendung, um auf die richtigen Bereitstellungskomponenten wie Bereitstellungsgruppe, Zielgruppen, Listener und das Verhalten bei der Umleitung des Datenverkehrs sowie die Anwendungsversion zu verweisen. Weitere Informationen finden Sie unter Erstellen Sie eine Anwendung mit CodeDeploy.

  2. Richten Sie eine Bereitstellungsgruppe ein, indem Sie Folgendes angeben:

    • Name der Bereitstellungsgruppe.

    • Ihr ECS Amazon-Cluster und Servicename. Der Deployment Controller des ECS Amazon-Service muss auf eingestellt sein CodeDeploy.

    • Der Produktions-Listener, ein optionaler Test-Listener und Zielgruppen, die während einer Bereitstellung verwendet werden.

    • Bereitstellungseinstellungen, z. B. wann der Produktionsverkehr an den ECS Ersatz-Amazon-Auftragssatz in Ihrem ECS Amazon-Service umgeleitet werden soll und wann der ursprüngliche ECS Amazon-Auftragssatz in Ihrem ECS Amazon-Service beendet werden soll.

    • Optionale Einstellungen, wie z. B. Auslöser, Alarme und Rollback-Verhalten.

  3. Geben Sie eine Anwendungsspezifikationsdatei (AppSpec Datei) an. Sie können es auf Amazon S3 hochladen, es im JSON Format YAML oder in die Konsole eingeben oder es mit dem AWS CLI oder angebenSDK. Die AppSpec Datei spezifiziert eine ECS Amazon-Aufgabendefinition für die Bereitstellung, einen Container-Namen und eine Port-Zuordnung, die für die Weiterleitung des Datenverkehrs verwendet werden, sowie Lambda-Funktionen, die nach den Hooks des Deployment-Lebenszyklus ausgeführt werden. Der Containername muss ein Container in Ihrer ECS Amazon-Aufgabendefinition sein. Weitere Informationen finden Sie unter Arbeiten mit Anwendungsrevisionen für CodeDeploy.

  4. Stellen Sie die Revision Ihrer Anwendung bereit. AWS CodeDeploy leitet den Verkehr von der ursprünglichen Version eines Task-Sets in Ihrem ECS Amazon-Service zu einem neuen Ersatz-Task-Set um. Zielgruppen werden in der Bereitstellungsgruppe verwendet, um den Datenverkehr an den ursprünglichen und den neuen Aufgabensatz weiterzuleiten. Wenn die Bereitstellung abgeschlossen ist, wird der ursprüngliche Aufgabensatz beendet. Sie können einen optionalen Test-Listener angeben, um Testdatenverkehr an die neue Version weiterzuleiten, bevor der richtige Datenverkehr an sie weitergeleitet wird. Weitere Informationen finden Sie unter Erstellen Sie eine Bereitstellung mit CodeDeploy.

  5. Überprüfen Sie die Bereitstellungsergebnisse. Weitere Informationen finden Sie unter Überwachung von Bereitstellungen in CodeDeploy.

Was passiert während einer ECS Amazon-Bereitstellung

Bevor eine ECS Amazon-Bereitstellung mit einem Test-Listener gestartet wird, müssen Sie dessen Komponenten konfigurieren. Weitere Informationen finden Sie unter Bevor Sie mit einer ECS Amazon-Bereitstellung beginnen.

Das folgende Diagramm zeigt die Beziehung zwischen diesen Komponenten, wenn eine ECS Amazon-Bereitstellung startbereit ist.

Die Beziehung zwischen dem Load Balancer, den Zuhörern, den Zielgruppen und der Aufgabenstellung, wenn eine ECS Amazon-Bereitstellung startbereit ist.

Wenn die Bereitstellung gestartet wird, werden die Ereignisse im Bereitstellungslebenszyklus einzeln ausgeführt. Einige Lebenszyklusereignisse sind Hooks, die nur Lambda-Funktionen ausführen, die in der AppSpec Datei angegeben sind. Die Ereignisse im Bereitstellungslebenszyklus in der folgenden Tabelle sind in der Reihenfolge aufgeführt, in der sie ausgeführt werden. Weitere Informationen finden Sie unter AppSpec Abschnitt „Hooks“ für eine ECS Amazon-Bereitstellung.

Lebenszyklus-Ereignis Aktion im Lebenszyklus-Ereignis
BeforeInstall(ein Hook für Lambda-Funktionen) Führen Sie Lambda-Funktionen aus.
Installieren Richten Sie den Ersatzaufgabensatz ein.
AfterInstall(ein Hook für Lambda-Funktionen) Führen Sie Lambda-Funktionen aus.
AllowTestTraffic Leiten Sie Datenverkehr aus dem Test-Listener an Zielgruppe 2 weiter.
AfterAllowTestTraffic(ein Hook für Lambda-Funktionen) Führen Sie Lambda-Funktionen aus.
BeforeAllowTraffic(ein Hook für Lambda-Funktionen) Führen Sie Lambda-Funktionen aus.
AllowTraffic Leiten Sie Datenverkehr aus dem Produktions-Listener an Zielgruppe 2 weiter.
AfterAllowTraffic Führen Sie Lambda-Funktionen aus.

Anmerkung

Lambda-Funktionen in einem Hook sind optional.

  1. Führt alle Lambda-Funktionen aus, die im BeforeInstall Hook in der AppSpec Datei angegeben sind.

  2. Während des Install-Lebenszyklusereignisses:

    1. In Ihrem ECS Amazon-Service wird ein Ersatzaufgabensatz erstellt.

    2. Die aktualisierte containerisierte Anwendung wird im Ersatzaufgabensatz installiert.

    3. Die zweite Zielgruppe wird dem Ersatzaufgabensatz zugeordnet.

    Dieses Diagramm zeigt Bereitstellungskomponenten mit dem neuen Ersatzaufgabensatz. Die containerisierte Anwendung befindet sich in diesem Aufgabensatz. Der Aufgabensatz besteht aus drei Aufgaben. (Eine Anwendung kann eine beliebige Anzahl von Aufgaben umfassen.) Die zweite Zielgruppe wird jetzt dem Ersatzaufgabensatz zugeordnet.

    Die Bereitstellungskomponenten mit dem neuen Ersatzaufgabensatz. Die containerisierte Anwendung befindet sich in diesem Aufgabensatz. Der Aufgabensatz besteht aus drei Aufgaben. Die zweite Zielgruppe wird jetzt dem Ersatzaufgabensatz zugeordnet.
  3. Führt alle Lambda-Funktionen aus, die im AfterInstall Hook in der AppSpec Datei angegeben sind.

  4. Das AllowTestTraffic-Ereignis wird aufgerufen. Während dieses Lebenszyklusereignisses leitet der Test-Listener den Datenverkehr an die aktualisierte containerisierte Anwendung weiter.

    Der Test-Listener leitet den Datenverkehr an die aktualisierte containerisierte Anwendung weiter.
  5. Führt alle Lambda-Funktionen aus, die im AfterAllowTestTraffic Hook in der AppSpec Datei angegeben sind. Lambda-Funktionen können die Bereitstellung anhand des Testdatenverkehrs validieren. Beispiel: Eine Lambda-Funktion kann den Datenverkehr an den Test-Listener leiten und Metriken aus dem Ersatzaufgabensatz nachverfolgen. Wenn Rollbacks konfiguriert sind, können Sie einen CloudWatch Alarm konfigurieren, der einen Rollback auslöst, wenn der Validierungstest in Ihrer Lambda-Funktion fehlschlägt.

    Nach dem Abschluss der Validierungstests tritt eine der folgenden Situationen ein:

    • Wenn die Validierung fehlschlägt und Rollbacks konfiguriert sind, wird der Bereitstellungsstatus als Failed markiert und Komponenten kehren in ihren Zustand zurück, wenn die Bereitstellung gestartet wird.

    • Wenn die Validierung fehlschlägt und Rollbacks nicht konfiguriert sind, wird der Bereitstellungsstatus als Failed markiert und Komponenten bleiben in ihrem aktuellen Zustand.

    • Wenn die Validierung erfolgreich ist, wird die Bereitstellung am BeforeAllowTraffic-Hook fortgesetzt.

    Weitere Informationen finden Sie unter Überwachung von Bereitstellungen mit CloudWatch Alarmen in CodeDeploy, Automatische Rollbacks und Konfigurieren von erweiterten Optionen für eine Bereitstellungsgruppe.

  6. Führt alle Lambda-Funktionen aus, die im BeforeAllowTraffic Hook in der AppSpec Datei angegeben sind.

  7. Das AllowTraffic-Ereignis wird aufgerufen. Produktionsdatenverkehr wird vom ursprünglichen Aufgabensatz auf den Ersatzaufgabensatz umgeleitet. Das folgende Diagramm zeigt den Ersatzaufgabensatz, der den Produktionsdatenverkehr empfängt.

    Der Ersatz-Tasksatz empfängt Produktionsdatenverkehr.
  8. Führt alle Lambda-Funktionen aus, die im AfterAllowTraffic Hook in der AppSpec Datei angegeben sind.

  9. Nachdem alle Ereignisse erfolgreich waren, wird der Bereitstellungsstatus auf Succeeded gesetzt und die ursprüngliche Aufgabe entfernt.

    Alle Ereignisse erfolgreich.

Die Revision Ihrer Bewerbung wird hochgeladen

Platzieren Sie eine AppSpec Datei in Amazon S3 oder geben Sie sie direkt in die Konsole ein oder AWS CLI. Weitere Informationen finden Sie unter Application Specification Files.

Erstellen Sie Ihre Anwendungs- und Bereitstellungsgruppen

Eine CodeDeploy Bereitstellungsgruppe auf einer ECS Amazon-Rechenplattform identifiziert Listener, die Traffic an Ihre aktualisierte ECS Amazon-Anwendung weiterleiten sollen, sowie zwei Zielgruppen, die während Ihrer Bereitstellung verwendet werden. Eine Bereitstellungsgruppe definiert auch eine Reihe von Konfigurationsoptionen, wie z. B. Alarme und Rollback-Konfigurationen.

Revision Ihrer Anwendung bereitstellen

Jetzt sind Sie bereit, den aktualisierten ECS Amazon-Service bereitzustellen, der in Ihrer Bereitstellungsgruppe angegeben ist. Sie können die CodeDeploy Konsole oder den Befehl create-deployment verwenden. Es gibt Parameter, die Sie angeben können, um Ihre Bereitstellung zu steuern, einschließlich der Revision und der Bereitstellungsgruppe.

Aktualisierung Ihrer Anwendung

Sie können Ihre Anwendung aktualisieren und dann die CodeDeploy Konsole verwenden oder den Befehl create-deployment aufrufen, um eine Version zu pushen.

Bereitstellungen wurden gestoppt und sind fehlgeschlagen

Sie können die CodeDeploy Konsole oder den Befehl stop-deployment verwenden, um eine Bereitstellung zu beenden. Wenn Sie versuchen, die Bereitstellung zu stoppen, gibt es drei Möglichkeiten:

  • Die Bereitstellung wird beendet, und die Operation gibt den Status "Erfolgreich" zurück. In diesem Fall werden keine Bereitstellungslebenszyklusereignisse mehr für die Bereitstellungsgruppe für die gestoppte Bereitstellung ausgeführt.

  • Die Bereitstellung wird nicht sofort beendet, und die Operation gibt den Status "Ausstehend" zurück. In diesem Fall werden einige Bereitstellungslebenszyklusereignisse in der Bereitstellungsgruppe weiterhin ausgeführt. Nachdem die ausstehende Operation abgeschlossen ist, geben nachfolgende Aufrufe zum Stoppen der Bereitstellung den Status "Erfolgreich" zurück.

  • Die Bereitstellung kann nicht gestoppt werden, und der Vorgang gibt einen Fehler zurück. Weitere Informationen finden Sie in der Referenz unter Fehlerinformationen und Häufige Fehler. AWS CodeDeploy API

Neubereitstellungen und Bereitstellungs-Rollbacks

CodeDeploy implementiert Rollbacks, indem der Datenverkehr vom Ersatz-Task-Set zum ursprünglichen Task-Set umgeleitet wird.

Sie können eine Bereitstellungsgruppe für automatisches Rollback konfigurieren, wenn bestimmte Bedingungen erfüllt sind, einschließlich wenn eine Bereitstellung fehlschlägt oder ein Alarm-Überwachungsschwellenwert erreicht ist. Sie können auch die Rollback-Einstellungen für eine Bereitstellungsgruppe in einer einzelnen Bereitstellung überschreiben.

Sie können außerdem ein Rollback einer fehlgeschlagenen Bereitstellung durch erneute manuelle Bereitstellung einer zuvor bereitgestellten Revision durchführen.

In allen Fällen wird der neuen oder rückabgewickelten Bereitstellung eine eigene Bereitstellungs-ID zugewiesen. In der CodeDeploy Konsole wird eine Liste der Bereitstellungen angezeigt, die das Ergebnis einer automatischen Bereitstellung sind.

Bei einer erneuten Bereitstellung wird die Zielgruppe, die dem ursprünglichen Aufgabensatz der jetzigen Bereitstellung zugeordnet ist, dem neuen Aufgabensatz der erneuten Bereitstellung zugeordnet.

Weitere Informationen finden Sie unter Eine Bereitstellung erneut bereitstellen und rückgängig machen mit CodeDeploy.

Bereitstellungen in ECS Blau/Grün von Amazon über AWS CloudFormation

Sie können es verwenden AWS CloudFormation , um Amazon ECS Blue/Green-Bereitstellungen über zu verwalten. CodeDeploy Weitere Informationen finden Sie unter Erstellen Sie eine Amazon ECS Blue/Green-Bereitstellung über AWS CloudFormation.

Anmerkung

Die Verwaltung von Amazon ECS Blue/Green-Bereitstellungen mit AWS CloudFormation ist in der Region Asien-Pazifik (Osaka) nicht verfügbar.