Enlaces de ciclo de vida para las implementaciones de servicios de Amazon ECS
Cuando se inicia una implementación, pasa por las etapas del ciclo de vida. Estas etapas pueden estar en estados como IN_PROGRESS o SUCCESSFUL. Puede utilizar enlaces de ciclo de vida, que son funciones de Lambda que Amazon ECS ejecuta en su nombre en etapas del ciclo de vida específicas. Las funciones pueden ser cualquiera de las siguientes opciones:
-
Una API asíncrona que valida la comprobación de estado en 15 minutos.
-
Una API de sondeo que inicia otro proceso asíncrono que evalúa la finalización del enlace de ciclo de vida.
Una vez que la función haya terminado de ejecutarse, debe devolver un hookStatus
para que la implementación continúe. Si no se devuelve un hookStatus
o si la función falla, la implementación se revierte. Los siguientes son valores del hookStatus
:
-
SUCCEEDED
: la implementación pasa a la siguiente fase del ciclo de vida. -
FAILED
: la implementación se revierte a la última implementación correcta. -
IN_PROGRESS
: Amazon ECS vuelve a ejecutar la función tras un breve periodo. De forma predeterminada, es un intervalo de 30 segundos; sin embargo, este valor se puede personalizar devolviendo uncallBackDelaySeconds
junto con elhookStatus
.
En el siguiente ejemplo se muestra cómo devolver un hookStatus
con un retraso de devolución de llamada personalizado. En este ejemplo, Amazon ECS volvería a intentar este enlace en 60 segundos en lugar de los 30 segundos predeterminados:
{ "hookStatus": "IN_PROGRESS", "callBackDelaySeconds": 60 }
Cuando se produce una reversión, Amazon ECS ejecuta los enlaces de ciclo de vida para las siguientes etapas de dicho ciclo de vida:
-
PRODUCTION_TRAFFIC_SHIFT
-
TEST_TRAFFIC_SHIFT
Cargas útiles del ciclo de vida
Cuando configura los enlaces de ciclo de vida para las implementaciones de sus servicios de ECS, Amazon ECS invoca estos enlaces en etapas específicas del proceso de implementación. Cada etapa del ciclo de vida proporciona una carga útil de JSON con información acerca del estado actual de la implementación. En este documento se describe la estructura de carga útil de cada etapa del ciclo de vida.
Estructura común de las cargas útiles
Todas las cargas útiles de las etapas del ciclo de vida incluyen los siguientes campos comunes:
-
serviceArn
: el nombre de recurso de Amazon (ARN) del servicio. -
targetServiceRevisionArn
: el ARN de la revisión de servicio de destino que se está implementando. -
testTrafficWeights
: un mapa de los ARN de las revisiones de servicio con sus correspondientes porcentajes de ponderación de tráfico de prueba. -
productionTrafficWeights
: un mapa de los ARN de las revisiones de servicio con sus correspondientes porcentajes de ponderación de tráfico de producción.
Cargas útiles de las etapas del ciclo de vida
RECONCILE_SERVICE
Esta etapa se produce al principio del proceso de implementación cuando se está conciliando el servicio. A continuación, se muestra un ejemplo de carga útil para esta etapa del ciclo de vida.
{ "serviceArn": "arn:aws:ecs:us-west-2:1234567890:service/myCluster/myService", "targetServiceRevisionArn": "arn:aws:ecs:us-west-2:1234567890:service-revision/myCluster/myService/01275892", "testTrafficWeights": { "arn:aws:ecs:us-west-2:1234567890:service-revision/myCluster/myService/01275892": 100, "arn:aws:ecs:us-west-2:1234567890:service-revision/myCluster/myService/78652123": 0 }, "productionTrafficWeights": { "arn:aws:ecs:us-west-2:1234567890:service-revision/myCluster/myService/01275892": 100, "arn:aws:ecs:us-west-2:1234567890:service-revision/myCluster/myService/78652123": 0 } }
Expectativas para esta etapa:
-
El conjunto de tareas principal está en una escala del 0 %
PRE_SCALE_UP
Esta etapa se produce antes de que se escalen verticalmente las nuevas tareas. A continuación, se muestra un ejemplo de carga útil para esta etapa del ciclo de vida.
{ "serviceArn": "arn:aws:ecs:us-west-2:1234567890:service/myCluster/myService", "targetServiceRevisionArn": "arn:aws:ecs:us-west-2:1234567890:service-revision/myCluster/myService/01275892", "testTrafficWeights": {}, "productionTrafficWeights": {} }
Expectativas para esta etapa:
-
Las tareas de revisión de servicio verde están en una escala del 0 %
POST_SCALE_UP
Esta etapa se produce una vez que las nuevas tareas se han escalado verticalmente y están en buen estado. A continuación, se muestra un ejemplo de carga útil para esta etapa del ciclo de vida.
{ "serviceArn": "arn:aws:ecs:us-west-2:1234567890:service/myCluster/myService", "targetServiceRevisionArn": "arn:aws:ecs:us-west-2:1234567890:service-revision/myCluster/myService/01275892", "testTrafficWeights": {}, "productionTrafficWeights": {} }
Expectativas para esta etapa:
-
Las tareas de revisión de servicio verde están en una escala del 100 %
-
Las tareas de revisión de servicio verde están en buen estado
TEST_TRAFFIC_SHIFT
Esta etapa se produce cuando el tráfico de prueba se está transfiriendo a las tareas de revisión de servicio verde.
A continuación, se muestra un ejemplo de carga útil para esta etapa del ciclo de vida.
{ "serviceArn": "arn:aws:ecs:us-west-2:1234567890:service/myCluster/myService", "targetServiceRevisionArn": "arn:aws:ecs:us-west-2:1234567890:service-revision/myCluster/myService/01275892", "testTrafficWeights": { "arn:aws:ecs:us-west-2:1234567890:service-revision/myCluster/myService/01275892": 100, "arn:aws:ecs:us-west-2:1234567890:service-revision/myCluster/myService/78652123": 0 }, "productionTrafficWeights": {} }
Expectativas para esta etapa:
-
El tráfico de pruebas está pasando hacia las tareas de revisión de servicio verde.
POST_TEST_TRAFFIC_SHIFT
Esta etapa se produce después de que el tráfico de prueba se haya transferido por completo a las nuevas tareas.
A continuación, se muestra un ejemplo de carga útil para esta etapa del ciclo de vida.
{ "serviceArn": "arn:aws:ecs:us-west-2:1234567890:service/myCluster/myService", "targetServiceRevisionArn": "arn:aws:ecs:us-west-2:1234567890:service-revision/myCluster/myService/01275892", "testTrafficWeights": {}, "productionTrafficWeights": {} }
Expectativas para esta etapa:
-
El 100 % del tráfico de prueba se destinó a las tareas de revisión de servicio verde.
PRODUCTION_TRAFFIC_SHIFT
Esta etapa se produce cuando el tráfico de producción se está transfiriendo a las tareas de revisión de servicio verde.
{ "serviceArn": "arn:aws:ecs:us-west-2:1234567890:service/myCluster/myService", "targetServiceRevisionArn": "arn:aws:ecs:us-west-2:1234567890:service-revision/myCluster/myService/01275892", "testTrafficWeights": {}, "productionTrafficWeights": { "arn:aws:ecs:us-west-2:1234567890:service-revision/myCluster/myService/01275892": 100, "arn:aws:ecs:us-west-2:1234567890:service-revision/myCluster/myService/78652123": 0 } }
Expectativas para esta etapa:
-
El tráfico de producción está pasando hacia la revisión de servicio verde.
POST_PRODUCTION_TRAFFIC_SHIFT
Esta etapa se produce cuando el tráfico de producción se ha transferido por completo a las tareas de revisión de servicio verde.
{ "serviceArn": "arn:aws:ecs:us-west-2:1234567890:service/myCluster/myService", "targetServiceRevisionArn": "arn:aws:ecs:us-west-2:1234567890:service-revision/myCluster/myService/01275892", "testTrafficWeights": {}, "productionTrafficWeights": {} }
Expectativas para esta etapa:
-
El 100 % del tráfico de producción se destinó a las tareas de revisión de servicio verde.
Categorías de etapas del ciclo de vida
Las etapas del ciclo de vida se dividen en dos categorías:
-
Etapas de invocación única: estas etapas se invocan solo una vez durante la implementación de un servicio:
PRE_SCALE_UP
POST_SCALE_UP
POST_TEST_TRAFFIC_SHIFT
POST_PRODUCTION_TRAFFIC_SHIFT
-
Etapas de invocación recurrentes: estas etapas se pueden invocar varias veces durante la implementación de un servicio, por ejemplo, cuando se produce una operación de reversión:
TEST_TRAFFIC_SHIFT
PRODUCTION_TRAFFIC_SHIFT
Estado de la implementación durante los enlaces de ciclo de vida
Mientras los enlaces de ciclo de vida estén en ejecución, el estado de la implementación será IN_PROGRESS
para todas las etapas del ciclo de vida.
Etapa del ciclo de vida | Estado de la implementación |
---|---|
RECONCILE_SERVICE | IN_PROGRESS |
PRE_SCALE_UP | IN_PROGRESS |
POST_SCALE_UP | IN_PROGRESS |
TEST_TRAFFIC_SHIFT | IN_PROGRESS |
POST_TEST_TRAFFIC_SHIFT | IN_PROGRESS |
PRODUCTION_TRAFFIC_SHIFT | IN_PROGRESS |
POST_PRODUCTION_TRAFFIC_SHIFT | IN_PROGRESS |