Bereitstellungen auf einer Amazon ECS-Rechenplattform - 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-Rechenplattform

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

Bevor Sie mit einer Amazon ECS-Bereitstellung beginnen

Bevor Sie mit der Bereitstellung einer Amazon ECS-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
Amazon-ECS-Cluster Bereitstellungsgruppe
Amazon-ECS-Service Bereitstellungsgruppe
Application Load Balancer oder Network Load Balancer Bereitstellungsgruppe
Produktions-Listener Bereitstellungsgruppe
Test-Listener (optional) Bereitstellungsgruppe
Zwei Zielgruppen Bereitstellungsgruppe
Amazon ECS-Aufgabendefinition AppSpec datei
Container-Name AppSpec datei
Container-Port AppSpec datei
Amazon ECS-Cluster

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

Amazon ECS-Service

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

Application Load Balancer oder Network Load Balancer

Sie müssen Elastic Load Balancing mit dem Amazon ECS-Service verwenden, den Sie mit einer Amazon ECS-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 Amazon ECS-Konsole verwenden, um Ihren Amazon ECS-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 Amazon ECS-Zielgruppen

Eine Zielgruppe wird verwendet, um Datenverkehr an ein registriertes Ziel weiterzuleiten. Für eine Amazon ECS-Bereitstellung sind zwei Zielgruppen erforderlich: eine für den ursprünglichen Tasksatz Ihrer Amazon ECS-Anwendung und eine für den Ersatz-Tasksatz. 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 Amazon ECS-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 Amazon ECS-Aufgabendefinition

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

Ein Container für Ihre Amazon ECS-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 Amazon ECS-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 Amazon ECS-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 Amazon ECS-Bereitstellungen.

Ein Port für Ihren Ersatz-Aufgabensatz

Während Ihrer Amazon ECS-Bereitstellung leitet Ihr Load Balancer den Datenverkehr an diesen 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 Amazon ECS-Bereitstellungen.

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

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

Wie CodeDeploy stellt eine Anwendung als Aufgabensatz 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 Amazon ECS-Anwendung bereitzustellen, wählen Sie in Ihrer AWS CodeDeploy Anwendung die Amazon ECS-Rechenplattform aus. CodeDeploy verwendet während einer Bereitstellung eine Anwendung, um auf die richtigen Bereitstellungskomponenten zu verweisen, z. B. die Bereitstellungsgruppe, die Zielgruppen, die Listener und das Verhalten bei der Umleitung des Datenverkehrs sowie die Anwendungsversion. 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 Amazon ECS-Cluster und Service-Name. Der Deployment Controller des Amazon ECS-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 Produktionsdatenverkehr an den Amazon ECS-Ersatzaufgabensatz in Ihrem Amazon ECS-Service umgeleitet werden soll und wann der ursprüngliche Amazon ECS-Auftragssatz in Ihrem Amazon ECS-Service beendet werden muss.

    • 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 YAML- oder JSON-Format in die Konsole eingeben oder mit dem SDK AWS CLI oder angeben. Die AppSpec Datei spezifiziert eine Amazon ECS-Aufgabendefinition für die Bereitstellung, eine Container-Namen- und Port-Zuordnung, die zur Weiterleitung des Datenverkehrs verwendet werden, und Lambda-Funktionen, die nach den Hooks des Deployment-Lebenszyklus ausgeführt werden. Der Containername muss ein Container in Ihrer Amazon ECS-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 Amazon ECS-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 Amazon ECS-Bereitstellung

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

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

Die Beziehung zwischen dem Load Balancer, den Listenern, den Zielgruppen und der Aufgabenstellung, wenn eine Amazon ECS-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 Amazon ECS-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 Amazon ECS-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 Amazon ECS-Rechenplattform identifiziert Listener, die den Datenverkehr an Ihre aktualisierte Amazon ECS-Anwendung weiterleiten sollen, sowie zwei Zielgruppen, die während Ihrer Bereitstellung verwendet wurden. 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 Amazon ECS-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 unter Fehlerinformationen und Häufige Fehler in der AWS CodeDeploy API-Referenz.

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.

Blaue/grüne Bereitstellungen von Amazon ECS ü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 blaue/grüne Amazon ECS-Bereitstellung über AWS CloudFormation.

Anmerkung

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