View a markdown version of this page

Ganchos de pausa para implantações de serviços do Amazon ECS - Amazon Elastic Container Service

Ganchos de pausa para implantações de serviços do Amazon ECS

Os ganchos de pausa pausam a implantação de um serviço do Amazon ECS em um estágio específico do ciclo de vida e aguardam que você chame ContinueServiceDeployment antes que a implantação continue. Use ganchos de pausa quando precisar de aprovação manual ou validação externa antes que a implantação continue.

Como os ganchos de pausa funcionam

Quando uma implantação atinge um estágio do ciclo de vida com um gancho de pausa configurado, o seguinte acontece:

  1. O Amazon ECS gera um hookId exclusivo para o gancho de pausa.

  2. O Amazon ECS emite um evento do EventBridge com o tipo de detalhe ECS Hook State Change e o nome de evento HOOK_AWAITING_ACTION.

  3. A implantação permanece pausada até que você chame ContinueServiceDeployment com o hookId e uma ação de CONTINUE ou ROLLBACK, ou até que o tempo limite configurado seja atingido.

Você pode recuperar o hookId chamando DescribeServiceDeployments. A resposta inclui uma matriz lifecycleHookDetails com o status do gancho:

{ "serviceDeployments": [ { "lifecycleHookDetails": [ { "hookId": "ecs-pause-e7tK9G_WRJqNF_EOMjztDXfKenlJuEUVjsNStf4WLKw", "targetType": "PAUSE", "status": "AWAITING_ACTION", "expiresAt": "2024-01-15T12:00:00Z", "timeoutAction": "ROLLBACK" } ] } ] }

Como configurar ganchos de pausa

O exemplo a seguir mostra uma configuração de gancho de pausa em uma definição de serviço que pausa a implantação após a conclusão da mudança de tráfego de teste:

{ "deploymentConfiguration": { "strategy": "BLUE_GREEN", "lifecycleHooks": [ { "targetType": "PAUSE", "lifecycleStages": [ "POST_TEST_TRAFFIC_SHIFT" ], "timeoutConfiguration": { "timeoutInMinutes": 10, "action": "ROLLBACK" } } ] } }

Campos de configuração

Campo Descrição Valores válidos Obrigatório
targetType O tipo de gancho. Precisa ser PAUSE para ganchos de pausa. PAUSE Sim
lifecycleStages Os estágios do ciclo de vida nos quais a implantação é pausada. RECONCILE_SERVICE, PRE_SCALE_UP, POST_SCALE_UP, POST_TEST_TRAFFIC_SHIFT, PRE_PRODUCTION_TRAFFIC_SHIFT, POST_PRODUCTION_TRAFFIC_SHIFT Sim
timeoutConfiguration.timeoutInMinutes Quanto tempo esperar antes de executar a ação de tempo limite. Padrão: 1.440 minutos (24 horas). 1 a 20.160 (14 dias) Não
timeoutConfiguration.action A ação a ser executada se o tempo limite expirar. ROLLBACK (padrão), CONTINUE Não

Restrições

  • É possível configurar no máximo 10 ganchos de pausa e 10 ganchos do Lambda por serviço.

  • Os ganchos de pausa não usam hookTargetArn ou roleArn. Esses campos são somente para ganchos do Lambda.

  • Não é possível configurar os ganchos de pausa nos estágios TEST_TRAFFIC_SHIFT ou PRODUCTION_TRAFFIC_SHIFT.

Continuando uma implantação pausada

Quando uma implantação estiver pausada (o status do gancho de pausa for AWAITING_ACTION), chame ContinueServiceDeployment com hookId e a ação que deseja executar.

Para continuar a implantação:

aws ecs continue-service-deployment \ --hook-id ecs-pause-e7tK9G_WRJqNF_EOMjztDXfKenlJuEUVjsNStf4WLKw \ --action CONTINUE

Para reverter a implantação:

aws ecs continue-service-deployment \ --hook-id ecs-pause-e7tK9G_WRJqNF_EOMjztDXfKenlJuEUVjsNStf4WLKw \ --action ROLLBACK

Para obter mais informações, consulte Implantações de serviços contínuos.

Vários ganchos no mesmo estágio

Quando vários ganchos são configurados no mesmo estágio do ciclo de vida, a implantação permanece pausada até que todos os ganchos desse estágio continuem. Se algum gancho acionar uma reversão, a implantação inteira será revertida, independentemente do status dos outros ganchos nesse estágio.

Esse comportamento se aplica quando os ganchos do Lambda e os ganchos de pausa são configurados no mesmo estágio do ciclo de vida. A implantação só prossegue quando todos os ganchos nesse estágio tiverem sido concluídos com êxito ou continuados.

Todos os ganchos configurados no mesmo estágio do ciclo de vida funcionam paralelamente.

Comportamento do tempo limite

Se você não chamar ContinueServiceDeployment antes do tempo limite expirar, o Amazon ECS executará a ação de tempo limite configurada:

  • ROLLBACK (padrão): o Amazon ECS reverte a implantação para a revisão de serviço anterior.

  • CONTINUE: o Amazon ECS continua a implantação até o próximo estágio do ciclo de vida.

Verifique o campo expiresAt na matriz lifecycleHookDetails da resposta DescribeServiceDeployments para ver quando o tempo limite expira.

Ganchos de pausa com implantações lineares e de canário

Para implantações lineares e de canário, os ganchos de pausa configurados em PRE_PRODUCTION_TRAFFIC_SHIFT são invocados em cada etapa de mudança de tráfego. Cada invocação gera um hookId exclusivo e você precisa chamar ContinueServiceDeployment para cada um.

Por exemplo, uma implantação linear com 5 etapas de mudança de tráfego e um gancho de pausa em PRE_PRODUCTION_TRAFFIC_SHIFT realiza 5 pausas, uma antes de cada etapa. Cada pausa requer uma chamada separada para ContinueServiceDeployment com o hookId correspondente.

Eventos EventBridge

O Amazon ECS emite eventos do EventBridge com o tipo de detalhe ECS Hook State Change conforme os ganchos de pausa avançam em seu ciclo de vida. A tabela a seguir descreve os nomes de evento:

Nome do evento Descrição
HOOK_AWAITING_ACTION O gancho está esperando você chamar ContinueServiceDeployment.
HOOK_SUCCEEDED O gancho foi concluído com sucesso (você chamou ContinueServiceDeployment com CONTINUE).
HOOK_FAILED O gancho falhou (você chamou ContinueServiceDeployment com ROLLBACK).
HOOK_TIMED_OUT O gancho atingiu o tempo limite antes de ContinueServiceDeployment ser chamado.

O exemplo a seguir mostra um evento do EventBridge emitido quando um gancho de pausa está aguardando ação:

{ "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" } }