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:
-
O Amazon ECS gera um
hookIdexclusivo para o gancho de pausa. -
O Amazon ECS emite um evento do EventBridge com o tipo de detalhe
ECS Hook State Changee o nome de eventoHOOK_AWAITING_ACTION. -
A implantação permanece pausada até que você chame
ContinueServiceDeploymentcom ohookIde uma ação deCONTINUEouROLLBACK, 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
hookTargetArnouroleArn. Esses campos são somente para ganchos do Lambda. -
Não é possível configurar os ganchos de pausa nos estágios
TEST_TRAFFIC_SHIFTouPRODUCTION_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" } }