

# Sintaxis del enlace `AWS::CodeDeploy::BlueGreen`
<a name="blue-green-hook-syntax"></a>

La siguiente sintaxis describe la estructura de un enlace `AWS::CodeDeploy::BlueGreen` para las implementaciones azul/verde de ECS.

## Sintaxis
<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)}}"
              ]
            }
          }
        }
      ]
    }
  }
}
```

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

ID lógico (también denominado *nombre lógico*)  
El ID lógico de un enlace declarado en la sección `Hooks` de la plantilla. El ID lógico tiene que ser alfanumérico (A-Za-z0-9) y único dentro de la plantilla.  
*Obligatorio*: sí    
`Type`  
El tipo de enlace. `AWS::CodeDeploy::BlueGreen`  
*Obligatorio*: sí  
`Properties`  
Propiedades del enlace.  
*Obligatorio*: sí    
`TrafficRoutingConfig`  
Configuración del direccionamiento del tráfico.  
*Obligatorio*: no  
La configuración predeterminada desvía el tráfico de valor controlado en función del tiempo, con un porcentaje de pasos del 15 % y un tiempo de procesamiento de cinco minutos.    
`Type`  
Tipo de desvío de tráfico que se utiliza en la configuración de la implementación.  
Valores válidos: AllAtOnce \| TimeBasedCanary \| TimeBasedLinear  
*Obligatorio*: sí    
`TimeBasedCanary`  
Especifica una configuración que desvía el tráfico de una versión de la implementación a otra en dos incrementos.  
*Obligatorio*: condicional. Si especifica `TimeBasedCanary` como el tipo de enrutamiento de tráfico, debe incluir el parámetro `TimeBasedCanary`.    
`StepPercentage`  
Porcentaje del tráfico que se va a desviar en el primer incremento de una implementación `TimeBasedCanary`. El porcentaje de pasos debe ser igual o superior al 14 %.  
*Obligatorio*: no  
`BakeTimeMins`  
Número de minutos entre el primer y el segundo desvío de tráfico de una implementación `TimeBasedCanary`.  
*Obligatorio*: no  
`TimeBasedLinear`  
Especifica una configuración que desvía el tráfico de una versión de la implementación a otra en incrementos iguales, con el mismo número de minutos entre cada incremento.  
*Obligatorio*: condicional. Si especifica `TimeBasedLinear` como el tipo de enrutamiento de tráfico, debe incluir el parámetro `TimeBasedLinear`.    
`StepPercentage`  
Porcentaje de tráfico que se desvía al comienzo de cada incremento de una implementación `TimeBasedLinear`. El porcentaje de pasos debe ser igual o superior al 14 %.  
*Obligatorio*: no  
`BakeTimeMins`  
Número de minutos entre cada desvío del tráfico incremental en una implementación `TimeBasedLinear`.  
*Obligatorio*: no  
`AdditionalOptions`  
Otras opciones adicionales de la implementación «blue/green».  
*Obligatorio*: no    
`TerminationWaitTimeInMinutes`  
Especifica el tiempo de espera, en minutos, antes de finalizar los recursos de azul.  
*Obligatorio*: no  
`LifecycleEventHooks`  
Utilice los enlaces de eventos del ciclo de vida para especificar una función de Lambda a la que CodeDeploy puede llamar para validar una implementación. Puede utilizar la misma función u otra distinta para los eventos del ciclo de vida de la implementación. Cuando finalicen las pruebas de validación, la función de Lambda `AfterAllowTraffic` vuelve a llamar a CodeDeploy y devuelve como resultado `Succeeded` o `Failed`. Para obtener más información, consulte la[Sección “Enlaces” de AppSpec](https://docs.aws.amazon.com/codedeploy/latest/userguide/reference-appspec-file-structure-hooks.html) en la *Guía del usuario de AWS CodeDeploy*.  
*Obligatorio*: no    
`BeforeInstall`  
Función que se utiliza para ejecutar tareas antes de crear el conjunto de tareas de sustitución.  
*Obligatorio*: no  
`AfterInstall`  
Función que se utiliza para ejecutar tareas una vez que el conjunto de tareas se ha creado y uno de los grupos de destino se ha asociado con él.  
*Obligatorio*: no  
`AfterAllowTestTraffic`  
Función que se utiliza para ejecutar tareas después de que el agente de escucha de prueba envía tráfico al conjunto de tareas de sustitución.  
*Obligatorio*: no  
`BeforeAllowTraffic`  
Función que se utiliza para ejecutar tareas una vez que el segundo grupo de destino se ha asociado con el conjunto de tareas de sustitución, pero antes de que se envíe tráfico al conjunto de tareas de sustitución.  
*Obligatorio*: no  
`AfterAllowTraffic`  
Función que se utiliza para ejecutar tareas después de que el segundo grupo de destino envíe tráfico al conjunto de tareas de sustitución.  
*Obligatorio*: no  
`ServiceRole`  
Rol de ejecución que se utiliza en CloudFormation para realizar implementaciones azul/verde. Para obtener una lista de los permisos necesarios, consulte [Permisos de IAM para las implementaciones azul/verde](about-blue-green-deployments.md#blue-green-iam).  
*Obligatorio*: no  
`Applications`  
Especifica las propiedades de la aplicación Amazon ECS.  
*Obligatorio*: sí    
`Target`  
  
*Obligatorio*: sí    
`Type`  
El tipo de recurso.  
*Obligatorio*: sí  
`LogicalID`  
ID lógico del recurso.  
*Obligatorio*: sí  
`ECSAttributes`  
Recursos que representan los diferentes requisitos de la implementación de la aplicación Amazon ECS.  
*Obligatorio*: sí    
`TaskDefinitions`  
ID lógico del 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) que va a ejecutar el contenedor Docker que contiene la aplicación Amazon ECS.  
*Obligatorio*: sí  
`TaskSets`  
Identificadores lógicos de los 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) que se van a utilizar como conjuntos de tareas en la aplicación.  
*Obligatorio*: sí  
`TrafficRouting`  
Especifica los recursos que se utilizan para el direccionamiento del tráfico.  
*Obligatorio*: sí    
`ProdTrafficRoute`  
Agente de escucha que se va a utilizar en el balanceador de carga para dirigir el tráfico hacia los grupos de destino.  
*Obligatorio*: sí    
`Type`  
El tipo del recurso. `AWS::ElasticLoadBalancingV2::Listener`  
*Obligatorio*: sí  
`LogicalID`  
ID lógico del recurso.  
*Obligatorio*: sí  
`TestTrafficRoute`  
Agente de escucha que se va a utilizar en el balanceador de carga para dirigir el tráfico hacia los grupos de destino.  
*Obligatorio*: sí    
`Type`  
El tipo del recurso. `AWS::ElasticLoadBalancingV2::Listener`  
*Obligatorio*: sí  
`LogicalID`  
ID lógico del recurso.  
*Obligatorio*: no  
`TargetGroups`  
ID lógico de los recursos que se van a utilizar como grupos de destino para dirigir el tráfico al destino registrado.  
*Obligatorio*: sí