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:
-
Amazon ECS generiert einen eindeutigen Wert
hookIdfür den Pause-Hook. -
Amazon ECS sendet ein EventBridge Ereignis mit dem Detailtyp
ECS Hook State Changeund dem Eventnamen aus.HOOK_AWAITING_ACTION -
Die Bereitstellung bleibt so lange unterbrochen, bis Sie
ContinueServiceDeploymentmit derhookIdAktion oder aufrufenCONTINUEoder bis das konfigurierteROLLBACKTimeout 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
hookTargetArnoderroleArnnicht. Diese Felder sind nur für Lambda-Hooks. -
Pause-Hooks können nicht in den
TEST_TRAFFIC_SHIFTPRODUCTION_TRAFFIC_SHIFTOder-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" } }