

# Sintaxe do hook `AWS::CodeDeploy::BlueGreen`
<a name="blue-green-hook-syntax"></a>

A sintaxe a seguir descreve a estrutura de um hook `AWS::CodeDeploy::BlueGreen` para implantações azuis/verdes do ECS.

## Sintaxe
<a name="cfn-blue-green-hook-syntax"></a>

```
"Hooks": {
  "{{Logical ID}}": {
    "Type": "AWS::CodeDeploy::BlueGreen",
    "Properties": {
      "TrafficRoutingConfig": {
        "Type": "{{Traffic routing type}}",
        "TimeBasedCanary": {
          "StepPercentage": {{Integer}},
          "BakeTimeMins": {{Integer}}
        },
        "TimeBasedLinear": {
          "StepPercentage": {{Integer}},
          "BakeTimeMins": {{Integer}}
        }
      },
      "AdditionalOptions": {"TerminationWaitTimeInMinutes": {{Integer}}},
      "LifecycleEventHooks": {
        "BeforeInstall": "{{FunctionName}}",
        "AfterInstall": "{{FunctionName}}",
        "AfterAllowTestTraffic": "{{FunctionName}}",
        "BeforeAllowTraffic": "{{FunctionName}}",
        "AfterAllowTraffic": "{{FunctionName}}"
      },
      "ServiceRole": "{{CodeDeployServiceRoleName}}",
      "Applications": [
        {
          "Target": {
            "Type": "AWS::ECS::Service",
            "LogicalID": "{{Logical ID of AWS::ECS::Service}}"
          },
          "ECSAttributes": {
            "TaskDefinitions": [
              "{{Logical ID of AWS::ECS::TaskDefinition (Blue)}}",
              "{{Logical ID of AWS::ECS::TaskDefinition (Green)}}"
            ],
            "TaskSets": [
              "{{Logical ID of AWS::ECS::TaskSet (Blue)}}",
              "{{Logical ID of AWS::ECS::TaskSet (Green)}}"
            ],
            "TrafficRouting": {
              "ProdTrafficRoute": {
                "Type": "AWS::ElasticLoadBalancingV2::Listener",
                "LogicalID": "{{Logical ID of AWS::ElasticLoadBalancingV2::Listener (Production)}}"
              },
              "TestTrafficRoute": {
                "Type": "AWS::ElasticLoadBalancingV2::Listener",
                "LogicalID": "{{Logical ID of AWS::ElasticLoadBalancingV2::Listener (Test)}}"
              },
              "TargetGroups": [
                "{{Logical ID of AWS::ElasticLoadBalancingV2::TargetGroup (Blue)}}",
                "{{Logical ID of AWS::ElasticLoadBalancingV2::TargetGroup (Green)}}"
              ]
            }
          }
        }
      ]
    }
  }
}
```

## Propriedades
<a name="cfn-blue-green-hook-properties"></a>

ID lógico (também chamado de *nome lógico*)  
O ID lógico de um hook declarado na seção `Hooks` do modelo. O ID lógico deve ser alfanumérico (A-Z a-z 0-9) e exclusivo no modelo.  
*Obrigatório*: Sim    
`Type`  
O tipo do hook. `AWS::CodeDeploy::BlueGreen`  
*Obrigatório*: Sim  
`Properties`  
Propriedades do hook.  
*Obrigatório*: Sim    
`TrafficRoutingConfig`  
Definição das configurações de roteamento de tráfego.  
*Obrigatório*: não  
A configuração padrão é o deslocamento de tráfego canário baseado em tempo, com uma porcentagem de 15% de etapa e um tempo de incorporação de cinco minutos.    
`Type`  
O tipo de deslocamento de tráfego usado pela configuração de implantação.  
Valores válidos: AllAtOnce \| TimeBasedCanary \| TimeBasedLinear  
*Obrigatório*: Sim    
`TimeBasedCanary`  
Especifica uma configuração que desloca o tráfego de uma versão da implantação para outra em incrementos de dois.  
*Necessário*: Condicional: se você especificar `TimeBasedCanary` como o tipo de roteamento de tráfego, deverá incluir o parâmetro `TimeBasedCanary`.    
`StepPercentage`  
A porcentagem de tráfego a ser deslocado no primeiro incremento de uma implantação `TimeBasedCanary`. A porcentagem da etapa deve ser 14% ou maior.  
*Obrigatório*: não  
`BakeTimeMins`  
O número de minutos entre o primeiro e o segundo deslocamento de tráfego de uma implantação `TimeBasedCanary`.  
*Obrigatório*: não  
`TimeBasedLinear`  
Especifica uma configuração que desloca o tráfego de uma versão da implantação para outra em incrementos iguais, com um número igual de minutos entre cada incremento.  
*Necessário*: Condicional: se você especificar `TimeBasedLinear` como o tipo de roteamento de tráfego, deverá incluir o parâmetro `TimeBasedLinear`.    
`StepPercentage`  
A porcentagem de tráfego deslocado no início de cada incremento de uma implantação `TimeBasedLinear`. A porcentagem da etapa deve ser 14% ou maior.  
*Obrigatório*: não  
`BakeTimeMins`  
O número de minutos entre cada deslocamento de tráfego incremental de uma implantação `TimeBasedLinear`.  
*Obrigatório*: não  
`AdditionalOptions`  
Opções adicionais para a implantação azul/verde.  
*Obrigatório*: não    
`TerminationWaitTimeInMinutes`  
Especifica o tempo de espera, em minutos, antes de encerrar os recursos azuis.  
*Obrigatório*: não  
`LifecycleEventHooks`  
Use hooks de eventos de ciclo de vida para especificar uma função do Lambda que o CodeDeploy possa chamar para validar uma implantação. É possível usar a mesma função ou uma diferente para os eventos de ciclo de vida de implantação. Após a conclusão dos testes de validação, a função do Lambda `AfterAllowTraffic` chama de volta o CodeDeploy e entrega um resultado de `Succeeded` ou `Failed`. Para mais informações, consulte a [seção “Hooks” do AppSpec](https://docs.aws.amazon.com/codedeploy/latest/userguide/reference-appspec-file-structure-hooks.html) no *Guia do usuário do AWS CodeDeploy.*  
*Obrigatório*: não    
`BeforeInstall`  
Função a ser usada para executar tarefas antes que o conjunto de tarefas de substituição seja criado.  
*Obrigatório*: não  
`AfterInstall`  
Função a ser usada para executar tarefas depois que o conjunto de tarefas de substituição for criado e um dos grupos de destino for associado a ele.  
*Obrigatório*: não  
`AfterAllowTestTraffic`  
Função a ser usada para executar tarefas depois que o listener de teste distribuir o tráfego para o conjunto de tarefas de substituição.  
*Obrigatório*: não  
`BeforeAllowTraffic`  
Função a ser usada para executar tarefas depois que o segundo grupo de destino for associado ao conjunto de tarefas de substituição, mas antes que o tráfego seja deslocado para o conjunto de tarefas de substituição.  
*Obrigatório*: não  
`AfterAllowTraffic`  
Função a ser usada para executar tarefas depois que o segundo grupo de destino distribuir o tráfego para o conjunto de tarefas de substituição.  
*Obrigatório*: não  
`ServiceRole`  
A função de execução a ser usada pelo CloudFormation para executar as implantações azul/verde. Para obter uma lista das permissões necessárias, consulte [Permissões do IAM para implantações azuis/verdes](about-blue-green-deployments.md#blue-green-iam).  
*Obrigatório*: não  
`Applications`  
Especifica as propriedades do aplicativo do Amazon ECS.  
*Obrigatório*: sim    
`Target`  
  
*Obrigatório*: sim    
`Type`  
O tipo de recurso.  
*Obrigatório*: sim  
`LogicalID`  
O ID lógico do recurso.  
*Obrigatório*: Sim  
`ECSAttributes`  
Os recursos que representam os vários requisitos de sua implantação de aplicativos do Amazon ECS.  
*Obrigatório*: Sim    
`TaskDefinitions`  
O ID lógico do recurso [https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-ecs-taskdefinition.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-ecs-taskdefinition.html) para executar o contêiner do Docker que contém sua aplicação do Amazon ECS.  
*Obrigatório*: sim  
`TaskSets`  
Os IDs lógicos dos recursos [https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-ecs-taskset.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-ecs-taskset.html) a serem usados como conjuntos de tarefas para a aplicação.  
*Obrigatório*: sim  
`TrafficRouting`  
Especifica os recursos usados para roteamento de tráfego.  
*Obrigatório*: sim    
`ProdTrafficRoute`  
O listener é usado pelo load balancer para direcionar o tráfego para seus grupos de destino.  
*Obrigatório*: sim    
`Type`  
O tipo do recurso. `AWS::ElasticLoadBalancingV2::Listener`  
*Obrigatório*: sim  
`LogicalID`  
O ID lógico do recurso.  
*Obrigatório*: sim  
`TestTrafficRoute`  
O listener é usado pelo load balancer para direcionar o tráfego para seus grupos de destino.  
*Obrigatório*: sim    
`Type`  
O tipo do recurso. `AWS::ElasticLoadBalancingV2::Listener`  
*Obrigatório*: sim  
`LogicalID`  
O ID lógico do recurso.  
*Obrigatório*: não  
`TargetGroups`  
ID lógico dos recursos a serem usados como grupos de destino para rotear o tráfego para o destino registrado.  
*Obrigatório*: sim