View a markdown version of this page

Hooks für Amazon ECS-Servicebereitstellungen pausieren - 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.

Hooks für Amazon ECS-Servicebereitstellungen pausieren

Pause-Hooks pausieren eine Amazon ECS-Servicebereitstellung in einer bestimmten Lebenszyklusphase und warten auf Ihren Anruf, ContinueServiceDeployment bevor die Bereitstellung fortgesetzt wird. Verwenden Sie Pause-Hooks, wenn Sie eine manuelle Genehmigung oder eine externe Validierung benötigen, bevor die Bereitstellung fortgesetzt wird.

Wie funktionieren Pause-Hooks

Wenn eine Bereitstellung eine Lebenszyklusphase erreicht, in der ein Pause-Hook konfiguriert ist, passiert Folgendes:

  1. Amazon ECS generiert einen eindeutigen hookId für den Pause-Hook.

  2. Amazon ECS gibt ein EventBridge Ereignis mit dem Detailtyp ECS Hook State Change und dem Ereignisnamen aus. HOOK_AWAITING_ACTION

  3. Die Bereitstellung bleibt angehalten, bis Sie ContinueServiceDeployment mit der hookId Aktion oder oder aufrufen CONTINUE oder bis der konfigurierte ROLLBACK Timeout erreicht ist.

Sie können das abrufen, indem Sie anrufenhookId. DescribeServiceDeployments Die Antwort enthält ein lifecycleHookDetails Array mit dem Hook-Status:

{ "serviceDeployments": [ { "lifecycleHookDetails": [ { "hookId": "ecs-pause-e7tK9G_WRJqNF_EOMjztDXfKenlJuEUVjsNStf4WLKw", "targetType": "PAUSE", "status": "AWAITING_ACTION", "expiresAt": "2024-01-15T12:00:00Z", "timeoutAction": "ROLLBACK" } ] } ] }

Pause-Hooks konfigurieren

Das folgende Beispiel zeigt eine Pause-Hook-Konfiguration in einer Servicedefinition, bei der die Bereitstellung nach Abschluss der Testverkehrsverlagerung angehalten wird:

{ "deploymentConfiguration": { "strategy": "BLUE_GREEN", "lifecycleHooks": [ { "targetType": "PAUSE", "lifecycleStages": [ "POST_TEST_TRAFFIC_SHIFT" ], "timeoutConfiguration": { "timeoutInMinutes": 10, "action": "ROLLBACK" } } ] } }

Felder für die Konfiguration

Feld Description Zulässige Werte Erforderlich
targetType Der Typ des Hooks. Muss PAUSE für Pause-Hooks sein. PAUSE Ja
lifecycleStages Die Lebenszyklusphasen, in denen die Bereitstellung unterbrochen wird. RECONCILE_SERVICE, PRE_SCALE_UP, POST_SCALE_UP, POST_TEST_TRAFFIC_SHIFT, PRE_PRODUCTION_TRAFFIC_SHIFT, POST_PRODUCTION_TRAFFIC_SHIFT Ja
timeoutConfiguration.timeoutInMinutes Wie lange muss gewartet werden, bevor die Timeout-Aktion ausgeführt wird. Standard: 1.440 Minuten (24 Stunden). 1 — 20.160 (14 Tage) Nein
timeoutConfiguration.action Die Aktion, die ergriffen werden soll, wenn das Timeout abläuft. ROLLBACK (Standard), CONTINUE Nein

Beschränkungen

  • Sie können maximal 10 Pause-Hooks und 10 Lambda-Hooks pro Service konfigurieren.

  • Pause-Hooks verwenden hookTargetArn oder roleArn nicht. Diese Felder sind nur für Lambda-Hooks vorgesehen.

  • Pause-Hooks können nicht in den PRODUCTION_TRAFFIC_SHIFT Phasen TEST_TRAFFIC_SHIFT oder konfiguriert werden.

Fortsetzung einer angehaltenen Bereitstellung

Wenn eine Bereitstellung angehalten ist (der Hook-Status „Pause“ lautetAWAITING_ACTION), rufen Sie ContinueServiceDeployment mit dem hookId und der Aktion auf, die Sie ausführen möchten.

Um die Bereitstellung fortzusetzen:

aws ecs continue-service-deployment \ --hook-id ecs-pause-e7tK9G_WRJqNF_EOMjztDXfKenlJuEUVjsNStf4WLKw \ --action CONTINUE

Um die Bereitstellung rückgängig zu machen:

aws ecs continue-service-deployment \ --hook-id ecs-pause-e7tK9G_WRJqNF_EOMjztDXfKenlJuEUVjsNStf4WLKw \ --action ROLLBACK

Weitere Informationen finden Sie unter Fortsetzung der Servicebereitstellungen.

Mehrere Hooks in derselben Phase

Wenn mehrere Hooks in derselben Lebenszyklusphase konfiguriert werden, bleibt die Bereitstellung angehalten, bis alle Hooks in dieser Phase fortgesetzt werden. Wenn ein Hook ein Rollback auslöst, wird die gesamte Bereitstellung unabhängig vom Status anderer Hooks in dieser Phase zurückgesetzt.

Dieses Verhalten gilt, wenn sowohl Lambda-Hooks als auch Pause-Hooks in derselben Lebenszyklusphase konfiguriert werden. Die Bereitstellung wird erst fortgesetzt, wenn alle Hooks in dieser Phase erfolgreich abgeschlossen wurden oder fortgesetzt wurden.

Alle Hooks, die in derselben Lebenszyklusphase konfiguriert wurden, werden parallel ausgeführt.

Timeout-Verhalten

Wenn Sie ContinueServiceDeployment vor Ablauf des Timeouts nicht anrufen, ergreift Amazon ECS die konfigurierte Timeout-Aktion:

  • ROLLBACK(Standard) — Amazon ECS setzt die Bereitstellung auf die vorherige Service-Revision zurück.

  • CONTINUE- Amazon ECS setzt die Bereitstellung bis zur nächsten Lebenszyklusphase fort.

Überprüfen Sie das expiresAt Feld im lifecycleHookDetails Array der DescribeServiceDeployments Antwort, um zu sehen, wann das Timeout abläuft.

Pausieren Sie Hooks bei linearen und kanarischen Bereitstellungen

Bei linearen und kanarischen Bereitstellungen PRE_PRODUCTION_TRAFFIC_SHIFT werden die unter konfigurierten Pause-Hooks bei jedem Traffic-Shift-Schritt aufgerufen. Jeder Aufruf generiert einen eindeutigenhookId, und Sie müssen ContinueServiceDeployment für jeden Aufruf aufrufen.

Beispiel: Ein linearer Einsatz mit 5 Schritten zur Verkehrsverlagerung und einem Pausen-Hook an fünf PRE_PRODUCTION_TRAFFIC_SHIFT Pausen — einmal vor jedem Schritt. Für jede Pause ist ein separater Aufruf ContinueServiceDeployment mit dem entsprechenden hookId Befehl erforderlich.

EventBridge Ereignisse

Amazon ECS gibt EventBridge Ereignisse mit dem Typ „DetailECS Hook State Change“ aus, wenn Pause-Hooks ihren Lebenszyklus durchlaufen. In der folgenden Tabelle werden die Namen der Ereignisse beschrieben:

Ereignisname Description
HOOK_AWAITING_ACTION Der Hook wartet auf Ihren AnrufContinueServiceDeployment.
HOOK_SUCCEEDED Der Hook wurde erfolgreich abgeschlossen (Sie haben ContinueServiceDeployment mit angerufenCONTINUE).
HOOK_FAILED Der Hook ist fehlgeschlagen (Sie haben ContinueServiceDeployment mit angerufenROLLBACK).
HOOK_TIMED_OUT Der Hook hat zuvor eine Zeitüberschreitung erlitten, als ContinueServiceDeployment er aufgerufen wurde.

Das folgende Beispiel zeigt ein EventBridge Ereignis, das ausgelöst wird, wenn ein Pause-Hook auf eine Aktion wartet:

{ "version": "0", "id": "a1b2c3d4-5678-90ab-cdef-EXAMPLE11111", "detail-type": "ECS Hook State Change", "source": "aws.ecs", "account": "123456789012", "time": "2024-01-15T10:00:00Z", "region": "us-west-2", "detail": { "eventType": "INFO", "eventName": "HOOK_AWAITING_ACTION", "hookId": "ecs-pause-e7tK9G_WRJqNF_EOMjztDXfKenlJuEUVjsNStf4WLKw", "hookType": "PAUSE", "expiresAt": "2024-01-15T12:00:00Z", "lifecycleStage": "POST_TEST_TRAFFIC_SHIFT", "clusterArn": "arn:aws:ecs:us-west-2:123456789012:cluster/my-cluster", "serviceArn": "arn:aws:ecs:us-west-2:123456789012:service/my-cluster/my-service", "serviceDeploymentArn": "arn:aws:ecs:us-west-2:123456789012:service-deployment/my-cluster/my-service/EZe5RNVLH6PPzHXINuP28", "updatedAt": "2024-01-15T10:00:00Z" } }