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:
-
Amazon ECS generiert einen eindeutigen
hookIdfür den Pause-Hook. -
Amazon ECS gibt ein EventBridge Ereignis mit dem Detailtyp
ECS Hook State Changeund dem Ereignisnamen aus.HOOK_AWAITING_ACTION -
Die Bereitstellung bleibt angehalten, bis Sie
ContinueServiceDeploymentmit derhookIdAktion oder oder aufrufenCONTINUEoder bis der 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 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
hookTargetArnoderroleArnnicht. Diese Felder sind nur für Lambda-Hooks vorgesehen. -
Pause-Hooks können nicht in den
PRODUCTION_TRAFFIC_SHIFTPhasenTEST_TRAFFIC_SHIFToder 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" } }