

# Ganchos do ciclo de vida para implantações de serviços do Amazon ECS
<a name="deployment-lifecycle-hooks"></a>

Quando uma implantação é iniciada, ela passa pelos estágios do ciclo de vida. Esses estágios podem estar em estados como IN\$1PROGRESS 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 um `callBackDelay` junto com `hookStatus`.

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\$1TRAFFIC\$1SHIFT
+ TEST\$1TRAFFIC\$1SHIFT

## Cargas úteis do ciclo de vida
<a name="service-deployment-lifecycle-payloads"></a>

 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
<a name="common-payload-structure"></a>

 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
<a name="lifecycle-stage-payloads"></a>

#### RECONCILE\$1SERVICE
<a name="reconcile-service"></a>

 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\$1SCALE\$1UP
<a name="pre-scale-up"></a>

 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\$1SCALE\$1UP
<a name="post-scale-up"></a>

 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\$1TRAFFIC\$1SHIFT
<a name="test-traffic-shift"></a>

 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\$1TEST\$1TRAFFIC\$1SHIFT
<a name="post-test-traffic-shift"></a>

 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\$1TRAFFIC\$1SHIFT
<a name="production-traffic-shift"></a>

 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\$1PRODUCTION\$1TRAFFIC\$1SHIFT
<a name="post-production-traffic-shift"></a>

 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
<a name="lifecycle-stage-categories"></a>

 Os estágios do ciclo de vida se encaixam em duas categorias: 

1.  **Estágios de invocação única**: estes estágios são invocados somente uma vez durante a implantação de um serviço: 
   + PRE\$1SCALE\$1UP
   + POST\$1SCALE\$1UP
   + POST\$1TEST\$1TRAFFIC\$1SHIFT
   + POST\$1PRODUCTION\$1TRAFFIC\$1SHIFT

1.  **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\$1TRAFFIC\$1SHIFT
   + PRODUCTION\$1TRAFFIC\$1SHIFT

### Status de implantação durante ganchos do ciclo de vida
<a name="deployment-status-during-lifecycle-hooks"></a>

 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\$1SERVICE | IN\$1PROGRESS | 
| PRE\$1SCALE\$1UP | IN\$1PROGRESS | 
| POST\$1SCALE\$1UP | IN\$1PROGRESS | 
| TEST\$1TRAFFIC\$1SHIFT | IN\$1PROGRESS | 
| POST\$1TEST\$1TRAFFIC\$1SHIFT | IN\$1PROGRESS | 
| PRODUCTION\$1TRAFFIC\$1SHIFT | IN\$1PROGRESS | 
| POST\$1PRODUCTION\$1TRAFFIC\$1SHIFT | IN\$1PROGRESS | 