View a markdown version of this page

Metti in pausa gli hook per le distribuzioni dei servizi Amazon ECS - Amazon Elastic Container Service

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:

  1. Amazon ECS genera un codice univoco hookId per il pause hook.

  2. Amazon ECS emette un EventBridge evento con il tipo di dettaglio ECS Hook State Change e il nome dell'evento. HOOK_AWAITING_ACTION

  3. La distribuzione rimane in pausa finché non si chiama ContinueServiceDeployment con hookId e un'azione di CONTINUE o o fino al raggiungimento del ROLLBACK timeout 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
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
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. hookTargetArn roleArn Questi campi sono solo per i ganci Lambda.

  • Gli hook di pausa non possono essere configurati nelle fasi o. TEST_TRAFFIC_SHIFT PRODUCTION_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" } }