View a markdown version of this page

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

Pause-Hooks für Amazon ECS-Servicebereitstellungen

Pause-Hooks unterbrechen eine Amazon ECS-Servicebereitstellung in einer bestimmten Lebenszyklusphase und warten Sie, bis Sie anrufen, ContinueServiceDeployment bevor die Bereitstellung fortgesetzt wird. Verwenden Sie Pause-Hooks, wenn Sie eine manuelle Genehmigung oder eine externe Validierung benötigen, bevor eine 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 Wert hookId für den Pause-Hook.

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

  3. Die Bereitstellung bleibt so lange unterbrochen, bis Sie ContinueServiceDeployment mit der hookId Aktion oder aufrufen CONTINUE oder bis das 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 Dienstdefinition, die die Bereitstellung unterbricht, nachdem die Testdatenverkehrsverlagerung abgeschlossen ist:

{ "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 ausgeführt 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.

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

Fortsetzung einer unterbrochenen Bereitstellung

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

So setzen Sie die Bereitstellung fort:

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

Gehen Sie wie folgt vor, 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 auf derselben Stufe

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

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 der Timeout abläuft.

Pausieren Sie Hooks bei linearen und kanarischen Bereitstellungen

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

Beispiel: Eine lineare Bereitstellung mit 5 Schritten zur Verkehrsverlagerung und einem Pause-Hook bei PRE_PRODUCTION_TRAFFIC_SHIFT Pausen fünfmal — einmal vor jedem Schritt. Für jede Pause ist ein separater Aufruf ContinueServiceDeployment mit dem entsprechenden hookId erforderlich.

EventBridge Ereignisse

Amazon ECS gibt EventBridge Ereignisse mit dem Detailtyp aus, ECS Hook State Change während 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 Beim Hook ist das Timeout abgelaufen, bevor er aufgerufen ContinueServiceDeployment 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" } }