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:
-
Amazon ECS genera un
hookIdúnico para el enlace de pausa. -
Amazon ECS emite un evento de EventBridge con el tipo de detalle
ECS Hook State Changey el nombre de eventoHOOK_AWAITING_ACTION. -
La implementación permanece en pausa hasta que se llama a
ContinueServiceDeploymentcon elhookIdy una acción deCONTINUEoROLLBACK, 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 |
Sí |
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 |
Sí |
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
hookTargetArnniroleArn. Estos campos son exclusivos de los enlaces de Lambda. -
Los enlaces de pausa no se pueden configurar en las etapas
TEST_TRAFFIC_SHIFTniPRODUCTION_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" } }