Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Metti in pausa gli hook per le distribuzioni dei servizi Amazon ECS
Gli hook mettono in pausa la distribuzione di un servizio Amazon ECS in una fase specifica del ciclo di vita e attendono la tua chiamata prima che la distribuzione proceda. ContinueServiceDeployment Usa i pause hook quando hai bisogno di un'approvazione manuale o di una convalida esterna prima che la distribuzione continui.
Come funzionano i pause hook
Quando una distribuzione raggiunge una fase del ciclo di vita in cui è configurato un hook di pausa, si verifica quanto segue:
-
Amazon ECS genera un hook di pausa univoco
hookId. -
Amazon ECS emette un EventBridge evento con il tipo di dettaglio e il nome
ECS Hook State Changedell'evento.HOOK_AWAITING_ACTION -
La distribuzione rimane in pausa fino a quando non si chiama
ContinueServiceDeploymentconhookIde un'azione diCONTINUEo o fino al raggiungimento del timeoutROLLBACKconfigurato.
È possibile recuperarli chiamando. hookId DescribeServiceDeployments La risposta include un lifecycleHookDetails array con lo stato dell'hook:
{ "serviceDeployments": [ { "lifecycleHookDetails": [ { "hookId": "ecs-pause-e7tK9G_WRJqNF_EOMjztDXfKenlJuEUVjsNStf4WLKw", "targetType": "PAUSE", "status": "AWAITING_ACTION", "expiresAt": "2024-01-15T12:00:00Z", "timeoutAction": "ROLLBACK" } ] } ] }
Configurazione degli hook di pausa
L'esempio seguente mostra una configurazione di pause hook in una definizione di servizio che sospende la distribuzione al termine dello spostamento del traffico di test:
{ "deploymentConfiguration": { "strategy": "BLUE_GREEN", "lifecycleHooks": [ { "targetType": "PAUSE", "lifecycleStages": [ "POST_TEST_TRAFFIC_SHIFT" ], "timeoutConfiguration": { "timeoutInMinutes": 10, "action": "ROLLBACK" } } ] } }
Campi di configurazione
| Campo | Description | Valori validi | Richiesto |
|---|---|---|---|
targetType |
Il tipo di hook. Deve essere usato PAUSE per i pause hook. |
PAUSE |
Sì |
lifecycleStages |
Le fasi del ciclo di vita in cui si interrompe l'implementazione. | RECONCILE_SERVICE, PRE_SCALE_UP,
POST_SCALE_UP,
POST_TEST_TRAFFIC_SHIFT,
PRE_PRODUCTION_TRAFFIC_SHIFT,
POST_PRODUCTION_TRAFFIC_SHIFT |
Sì |
timeoutConfiguration.timeoutInMinutes |
Quanto tempo attendere prima di eseguire l'azione di timeout. Impostazione predefinita: 1.440 minuti (24 ore). | 1 - 20.160 (14 giorni) | No |
timeoutConfiguration.action |
L'azione da intraprendere se il timeout scade. | ROLLBACK (default), CONTINUE |
No |
Vincoli
-
È possibile configurare un massimo di 10 pause hook e 10 Lambda hook per servizio.
-
Gli hook di pausa non utilizzano o.
hookTargetArnroleArnQuesti campi sono solo per gli hook Lambda. -
Gli hook di pausa non possono essere configurati nelle fasi o.
TEST_TRAFFIC_SHIFTPRODUCTION_TRAFFIC_SHIFT
Continuazione di una distribuzione sospesa
Quando una distribuzione è in pausa (lo stato dell'hook di pausa èAWAITING_ACTION), chiama ContinueServiceDeployment con il hookId e indica l'azione che desideri intraprendere.
Per continuare la distribuzione:
aws ecs continue-service-deployment \ --hook-id ecs-pause-e7tK9G_WRJqNF_EOMjztDXfKenlJuEUVjsNStf4WLKw \ --action CONTINUE
Per ripristinare la distribuzione:
aws ecs continue-service-deployment \ --hook-id ecs-pause-e7tK9G_WRJqNF_EOMjztDXfKenlJuEUVjsNStf4WLKw \ --action ROLLBACK
Per ulteriori informazioni, consulta Implementazione continua dei servizi.
Ganci multipli nella stessa fase
Quando vengono configurati più hook nella stessa fase del ciclo di vita, l'implementazione rimane sospesa finché non vengono proseguiti tutti gli hook in quella fase. Se un hook attiva un rollback, l'intera distribuzione viene ripristinata indipendentemente dallo stato degli altri hook in quella fase.
Questo comportamento si applica quando sia gli hook Lambda che gli hook di pausa sono configurati nella stessa fase del ciclo di vita. L'implementazione procede solo quando tutti gli hook in quella fase sono stati completati con successo o sono stati proseguiti.
Tutti gli hook configurati nella stessa fase del ciclo di vita vengono eseguiti in parallelo.
Comportamento del timeout
Se non chiami ContinueServiceDeployment prima della scadenza del timeout, Amazon ECS intraprende l'azione di timeout configurata:
-
ROLLBACK(impostazione predefinita): Amazon ECS ripristina la distribuzione alla precedente revisione del servizio. -
CONTINUE- Amazon ECS continua la distribuzione fino alla fase successiva del ciclo di vita.
Controlla il expiresAt campo nell'lifecycleHookDetailsarray della DescribeServiceDeployments risposta per vedere quando scade il timeout.
Metti in pausa gli hook con implementazioni lineari e canarie
Per le implementazioni lineari e canarie, i pause hook configurati in PRE_PRODUCTION_TRAFFIC_SHIFT vengono richiamati in ogni fase di spostamento del traffico. Ogni chiamata ne genera una univoca ed è necessario hookId richiamarla per ognuna. ContinueServiceDeployment
Ad esempio, un'implementazione lineare con 5 fasi di spostamento del traffico e un blocco di pausa durante le PRE_PRODUCTION_TRAFFIC_SHIFT pause 5 volte, una volta prima di ogni passaggio. Ogni pausa richiede una chiamata separata ContinueServiceDeployment con la corrispondente. hookId
EventBridge eventi
Amazon ECS emette EventBridge eventi con il tipo di dettaglio ECS Hook State Change man mano che i pause hook avanzano nel loro ciclo di vita. La tabella seguente descrive i nomi degli eventi:
| Nome evento | Description |
|---|---|
HOOK_AWAITING_ACTION |
L'hook sta aspettando che tu chiamiContinueServiceDeployment. |
HOOK_SUCCEEDED |
L'hook è stato completato con successo (hai chiamato ContinueServiceDeployment conCONTINUE). |
HOOK_FAILED |
L'hook non è riuscito (hai chiamato ContinueServiceDeployment conROLLBACK). |
HOOK_TIMED_OUT |
L'hook è scaduto prima della ContinueServiceDeployment chiamata. |
L'esempio seguente mostra un EventBridge evento emesso quando un break hook è in attesa di azione:
{ "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" } }