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

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:

  1. Amazon ECS genera un hook di pausa univocohookId.

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

  3. La distribuzione rimane in pausa fino a quando non si chiama ContinueServiceDeployment con hookId e un'azione di CONTINUE o o fino al raggiungimento del timeout ROLLBACK configurato.

È 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
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 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. hookTargetArn roleArn Questi campi sono solo per gli hook 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 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" } }