Ganchos do ciclo de vida para implantações de serviços do Amazon ECS
Quando uma implantação é iniciada, ela passa pelos estágios do ciclo de vida. Esses estágios podem estar em estados como IN_PROGRESS ou SUCCESSFUL. Você pode usar ganchos doe ciclo de vida, que são funções do Lambda que o Amazon ECS executa em seu nome em estágios específicos do ciclo de vida. As funções podem ser uma das seguintes:
-
Uma API assíncrona que valida a verificação de integridade em até 15 minutos.
-
Uma API de polling que inicia outro processo assíncrono que avalia a conclusão do gancho do ciclo de vida.
Depois que a função terminar de ser executada, ela deve retornar a hookStatus
para que a implantação continue. Se hookStatus
não for retornado, ou se a função falhar, a implantação será revertida. Confira abaixo os valores de hookStatus
:
-
SUCCEEDED
: a implantação continua até o próximo estágio do ciclo de vida -
FAILED
: a implantação será revertida para a última implantação bem-sucedida. -
IN_PROGRESS
: o Amazon ECS executa a função novamente após um curto período. Por padrão, é um intervalo de 30 segundos, no entanto, esse valor é personalizável retornando umcallBackDelay
junto comhookStatus
.
O exemplo a seguir mostra como retornar um hookStatus
com um atraso de retorno de chamada personalizado. Neste exemplo, o Amazon ECS tentaria novamente esse gancho em 60 segundos, em vez dos 30 segundos padrão:
{ "hookStatus": "IN_PROGRESS", "callBackDelay": 60 }
Quando ocorre uma reversão, o Amazon ECS executa os ganchos do ciclo de vida para os seguintes estágios do ciclo de vida:
-
PRODUCTION_TRAFFIC_SHIFT
-
TEST_TRAFFIC_SHIFT
Cargas úteis do ciclo de vida
Quando você configura ganchos do ciclo de vida para suas implantações de serviços do ECS, o Amazon ECS invoca esses ganchos em estágios específicos do processo de implantação. Cada estágio do ciclo de vida fornece uma carga útil JSON com informações sobre o estado atual da implantação. Este documento descreve a estrutura da carga útil para cada estágio do ciclo de vida.
Estrutura de carga útil comum
Todas as cargas úteis do estágio do ciclo de vida incluem os seguintes campos comuns:
-
serviceArn
: o nome do recurso da Amazon (ARN) do serviço. -
targetServiceRevisionArn
: o ARN da revisão do serviço de destino que está sendo implantada. -
testTrafficWeights
: um mapa dos ARNs de revisão de serviço com suas porcentagens de peso de tráfego de teste correspondentes. -
productionTrafficWeights
: um mapa dos ARNs de revisão de serviço com suas porcentagens de peso de tráfego de produção correspondentes.
Cargas úteis do estágio do ciclo de vida
RECONCILE_SERVICE
Este estágio ocorre no início do processo de implantação, quando o serviço está sendo reconciliado. Veja a seguir um exemplo de carga útil para esse estágio do 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 nesta fase:
-
O conjunto de tarefas primárias está na escala de 0%
PRE_SCALE_UP
Este estágio ocorre antes que as novas tarefas tenha a escala aumentada verticalmente. Veja a seguir um exemplo de carga útil para esse estágio do 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 nesta fase:
-
As tarefas de revisão do serviço verde estão em escala de 0%
POST_SCALE_UP
Este estágio ocorre após as novas tarefas terem tido a escala aumentada verticalmente e estarem íntegras. Veja a seguir um exemplo de carga útil para esse estágio do 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 nesta fase:
-
As tarefas de revisão do serviço verde estão em escala de 100%
-
As tarefas na revisão do serviço verde estão íntegras
TEST_TRAFFIC_SHIFT
Este estágio ocorre quando o tráfego de teste está sendo transferido para as tarefas de revisão do serviço verde.
Veja a seguir um exemplo de carga útil para esse estágio do 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 nesta fase:
-
O tráfego de teste está em processo de migração para as tarefas de revisão do serviço verde.
POST_TEST_TRAFFIC_SHIFT
Este estágio ocorre após o tráfego de teste ter sido totalmente transferido para as novas tarefas.
Veja a seguir um exemplo de carga útil para esse estágio do 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 nesta fase:
-
100% do tráfego de teste foi direcionado para as tarefas de revisão do serviço verde.
PRODUCTION_TRAFFIC_SHIFT
Este estágio ocorre quando o tráfego de produção está sendo transferido para as tarefas de revisão do serviço 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 nesta fase:
-
O tráfego de produção está em processo de migração para a revisão do serviço verde.
POST_PRODUCTION_TRAFFIC_SHIFT
Este estágio ocorre após o tráfego de produção ter sido totalmente transferido para as tarefas de revisão do serviço 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 nesta fase:
-
100% do tráfego de produção foi direcionado para as tarefas de revisão do serviço verde.
Categorias de estágio do ciclo de vida
Os estágios do ciclo de vida se encaixam em duas categorias:
-
Estágios de invocação única: estes estágios são invocados somente uma vez durante a implantação de um serviço:
PRE_SCALE_UP
POST_SCALE_UP
POST_TEST_TRAFFIC_SHIFT
POST_PRODUCTION_TRAFFIC_SHIFT
-
Estágios de invocação recorrente: estes estágios podem ser invocados várias vezes durante a implantação de um serviço, por exemplo, quando ocorre uma operação de reversão:
TEST_TRAFFIC_SHIFT
PRODUCTION_TRAFFIC_SHIFT
Status de implantação durante ganchos do ciclo de vida
Enquanto os ganchos do ciclo de vida estiverem em execução, o status de implantação será IN_PROGRESS
para todos os estágios do ciclo de vida.
Estágio do ciclo de vida | Status da implantação |
---|---|
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 |