View a markdown version of this page

Enlaces de pausa para implementaciones de servicios de Amazon ECS - Amazon Elastic Container Service

Enlaces de pausa para implementaciones de servicios de Amazon ECS

Los enlaces de pausa pausan una implementación de servicio de Amazon ECS en una etapa específica del ciclo de vida y esperan a que se llame a ContinueServiceDeployment antes de que avance la implementación. Use enlaces de pausa cuando se requiera aprobación manual o validación externa antes de que continúe una implementación.

Cómo funcionan los enlaces de pausa

Cuando una implementación llega a una etapa del ciclo de vida que tiene configurado un enlace de pausa, ocurre lo siguiente:

  1. Amazon ECS genera un hookId único para el enlace de pausa.

  2. Amazon ECS emite un evento de EventBridge con el tipo de detalle ECS Hook State Change y el nombre de evento HOOK_AWAITING_ACTION.

  3. La implementación permanece en pausa hasta que se llama a ContinueServiceDeployment con el hookId y una acción deCONTINUE o ROLLBACK, o hasta que se alcance el tiempo máximo de espera configurado.

El hookId se puede obtener mediante una llamada a DescribeServiceDeployments. La respuesta incluye una matriz lifecycleHookDetails con el estado del enlace.

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

Configuración de enlaces de pausa

En el siguiente ejemplo, se muestra una configuración de enlace de pausa en una definición de servicio que pausa la implementación después de que se completa el cambio de tráfico de prueba:

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

Campos de configuración

Campo Descripción Valores válidos Obligatorio
targetType Tipo de enlace. Debe ser PAUSE para los enlaces de pausa. PAUSE
lifecycleStages Las etapas del ciclo de vida en las que se pausa la implementación. RECONCILE_SERVICE, PRE_SCALE_UP, POST_SCALE_UP, POST_TEST_TRAFFIC_SHIFT, PRE_PRODUCTION_TRAFFIC_SHIFT, POST_PRODUCTION_TRAFFIC_SHIFT
timeoutConfiguration.timeoutInMinutes Tiempo máximo de espera antes de ejecutar la acción configurada. Valor predeterminado: 1440 minutos (24 horas). De 1 a 20 160 (14 días) No
timeoutConfiguration.action Acción que se realizará si vence el tiempo máximo de espera. ROLLBACK (predeterminado), CONTINUE No

Restricciones

  • Se puede configurar un máximo de 10 enlaces de pausa y 10 enlaces de Lambda por servicio.

  • Los enlaces de pausa no usan hookTargetArn ni roleArn. Estos campos son exclusivos de los enlaces de Lambda.

  • Los enlaces de pausa no se pueden configurar en las etapas TEST_TRAFFIC_SHIFT ni PRODUCTION_TRAFFIC_SHIFT.

Continuación de una implementación en pausa

Cuando una implementación está en pausa, es decir, cuando el estado del enlace de pausa es AWAITING_ACTION, se debe llamar a ContinueServiceDeployment con hookId y la acción que se desea realizar.

Para continuar la implementación:

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

Para revertir la implementación:

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

Para obtener más información, consulte Continuación de implementaciones de servicios.

Varios enlaces en la misma etapa

Cuando se configuran varios enlaces en la misma etapa del ciclo de vida, la implementación permanece en pausa hasta que se aplique la acción de continuar a todos los enlaces de esa etapa. Si algún enlace activa una reversión, se revierte toda la implementación, independientemente del estado de los demás enlaces en esa etapa.

Este comportamiento se aplica cuando los enlaces de Lambda y los enlaces de pausa se configuran en la misma etapa del ciclo de vida. La implementación solo avanza cuando todos los enlaces de esa etapa se han completado correctamente o se les ha aplicado la acción de continuar.

Todos los enlaces configurados en la misma etapa del ciclo de vida se ejecutan en paralelo.

Comportamiento de los tiempos de espera

Si no se llama a ContinueServiceDeployment antes de que venza el tiempo máximo de espera, Amazon ECS ejecuta la acción de tiempo de espera configurada:

  • ROLLBACK (predeterminado): Amazon ECS revierte la implementación a la revisión de servicio anterior.

  • CONTINUE: Amazon ECS continúa la implementación hasta la siguiente etapa del ciclo de vida.

Consulte el campo expiresAt de la matriz lifecycleHookDetails en la respuesta de DescribeServiceDeployments para ver cuándo vence el tiempo máximo de espera.

Enlaces de pausa con implementaciones lineales y canario

En las implementaciones lineales y canario, los enlaces de pausa configurados en PRE_PRODUCTION_TRAFFIC_SHIFT se invocan en cada paso de cambio de tráfico. Cada invocación genera un hookId único y se debe llamar a ContinueServiceDeployment para cada una.

Por ejemplo, una implementación lineal con 5 pasos de cambio de tráfico y un enlace de pausa en PRE_PRODUCTION_TRAFFIC_SHIFT se pausa 5 veces, una vez antes de cada paso. Cada pausa requiere una llamada independiente a ContinueServiceDeployment con el hookId correspondiente.

Eventos de EventBridge

Amazon ECS emite eventos de EventBridge con el tipo de detalle ECS Hook State Change a medida que los enlaces de pausa avanzan por su ciclo de vida. En la siguiente tabla, se describen los nombres de los eventos:

Nombre de evento Descripción
HOOK_AWAITING_ACTION El enlace está a la espera de que se llame a ContinueServiceDeployment.
HOOK_SUCCEEDED El enlace se completó correctamente, es decir, se llamó a ContinueServiceDeployment con CONTINUE.
HOOK_FAILED El enlace falló, es decir, se llamó a ContinueServiceDeployment con ROLLBACK.
HOOK_TIMED_OUT El enlace alcanzó el tiempo máximo de espera antes de que se llamara a ContinueServiceDeployment.

En el siguiente ejemplo, se muestra un evento de EventBridge emitido cuando un enlace de pausa está a la espera de acción:

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