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
I pause hook mettono in pausa la distribuzione di un servizio Amazon ECS in una fase specifica del ciclo di vita e attendono la 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 codice univoco
hookIdper il pause hook. -
Amazon ECS emette un EventBridge evento con il tipo di dettaglio
ECS Hook State Changee il nome dell'evento.HOOK_AWAITING_ACTION -
La distribuzione rimane in pausa finché non si chiama
ContinueServiceDeploymentconhookIde un'azione diCONTINUEo o fino al raggiungimento delROLLBACKtimeout configurato.
Puoi recuperarlo chiamandohookId. 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 dopo il completamento del test traffic shift:
{ "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 aspettare prima di intraprendere 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 hook di pausa e 10 hook Lambda per servizio.
-
Gli hook di pausa non utilizzano o.
hookTargetArnroleArnQuesti campi sono solo per i ganci 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 hookId e 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 Implementazioni continue dei servizi.
Ganci multipli nella stessa fase
Quando vengono configurati più hook nella stessa fase del ciclo di vita, l'implementazione rimane in pausa finché tutti gli hook in quella fase non vengono ripresi. 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 i pause hook sono configurati nella stessa fase del ciclo di vita. L'implementazione procede solo quando tutti gli hook in quella fase sono stati completati correttamente 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 esegue l'azione di timeout configurata:
-
ROLLBACK(impostazione predefinita): Amazon ECS ripristina la distribuzione alla revisione precedente del servizio. -
CONTINUE- Amazon ECS continua l'implementazione 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 distribuzioni lineari e canarie
Per le implementazioni lineari e canarie, gli hook di pausa configurati in vengono richiamati in ogni fase del cambio di traffico. PRE_PRODUCTION_TRAFFIC_SHIFT Ogni chiamata genera una chiamata hookId univoca ed è necessario richiamarla per ognuna di esse. ContinueServiceDeployment
Ad esempio, una distribuzione lineare con 5 fasi di spostamento del traffico e una pausa agganciata alle PRE_PRODUCTION_TRAFFIC_SHIFT pause 5 volte, una volta prima di ogni passaggio. Ogni pausa richiede una chiamata separata a ContinueServiceDeployment con la corrispondente. hookId
EventBridge eventi
Amazon ECS emette EventBridge eventi con il tipo di dettaglio ECS Hook State Change man mano che gli hook di pausa procedono nel loro ciclo di vita. La tabella seguente descrive i nomi degli eventi:
| Nome evento | Description |
|---|---|
HOOK_AWAITING_ACTION |
L'hook è in attesa della tua chiamataContinueServiceDeployment. |
HOOK_SUCCEEDED |
L'hook è stato completato con successo (hai chiamato ContinueServiceDeployment conCONTINUE). |
HOOK_FAILED |
L'hook non è riuscito (ContinueServiceDeploymentcon cui hai chiamatoROLLBACK). |
HOOK_TIMED_OUT |
L'hook scaduto prima ContinueServiceDeployment è stato chiamato. |
L'esempio seguente mostra un EventBridge evento emesso quando un hook di pausa è 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" } }