

# `AWS::CodeDeploy::BlueGreen` 후크 구문
<a name="blue-green-hook-syntax"></a>

다음 구문은 ECS 블루/그린 배포를 위한 `AWS::CodeDeploy::BlueGreen` 후크 구조를 설명합니다.

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

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

논리적 ID(**논리명이라고도 함)  
템플릿의 `Hooks` 섹션에서 선언된 후크의 논리적 ID입니다. 논리적 ID는 영숫자(A-Za-z0-9)여야 하며 템플릿 내에서 고유해야 합니다.  
*필수 항목 여부:* 예    
`Type`  
후크의 유형입니다. `AWS::CodeDeploy::BlueGreen`   
*필수 항목 여부:* 예  
`Properties`  
후크의 속성  
*필수 항목 여부:* 예    
`TrafficRoutingConfig`  
트래픽 라우팅 구성 설정  
*필수 항목 여부*: 아니요  
기본 구성은 시간 기반 카나리 트래픽 이동으로 15% 단계 비율 및 5분 베이크 시간입니다.    
`Type`  
배포 구성에 사용되는 트래픽 이동 유형  
유효한 값: AllAtOnce \$1 TimeBasedCanary \$1 TimeBasedLinear  
*필수 항목 여부:* 예    
`TimeBasedCanary`  
배포의 한 버전에서 다른 버전으로 트래픽을 2씩 증분하여 이동하는 구성을 지정합니다.  
*필수*: 조건부: 트래픽 라우팅 유형으로 `TimeBasedCanary`를 지정하는 경우 `TimeBasedCanary` 파라미터를 포함시켜야 합니다.    
`StepPercentage`  
`TimeBasedCanary` 배포의 첫 번째 증분에서 이동할 트래픽의 비율입니다. 단계 비율은 14% 이상이어야 합니다.  
*필수 항목 여부*: 아니요  
`BakeTimeMins`  
`TimeBasedCanary` 배포의 첫 번째와 두 번째 트래픽 이동 사이의 시간(분)입니다.  
*필수 항목 여부*: 아니요  
`TimeBasedLinear`  
동일한 증분(각 증분 사이에 동일한 시간(분) 지정)을 사용하여 배포의 한 버전에서 다른 버전으로 트래픽을 이동하는 구성을 지정합니다.  
*필수*: 조건부: 트래픽 라우팅 유형으로 `TimeBasedLinear`를 지정하는 경우 `TimeBasedLinear` 파라미터를 포함시켜야 합니다.    
`StepPercentage`  
`TimeBasedLinear` 배포의 각 증분이 시작될 때 이동되는 트래픽의 비율. 단계 비율은 14% 이상이어야 합니다.  
*필수 항목 여부*: 아니요  
`BakeTimeMins`  
`TimeBasedLinear` 배포의 각 증분 트래픽 이동 사이의 시간(분)  
*필수 항목 여부*: 아니요  
`AdditionalOptions`  
블루/그린 배포를 위한 추가 옵션  
*필수 항목 여부*: 아니요    
`TerminationWaitTimeInMinutes`  
블루 리소스를 종료하기 전에 대기할 시간(분)을 지정합니다.  
*필수 항목 여부*: 아니요  
`LifecycleEventHooks`  
수명 주기 이벤트 후크를 사용하여 CodeDeploy가 배포를 검증하기 위해 호출할 수 있는 Lambda 함수를 지정합니다. 배포 수명 주기 이벤트에 동일한 함수 또는 다른 함수를 사용할 수 있습니다. 검증 테스트가 완료되면 Lambda `AfterAllowTraffic` 함수는 CodeDeploy를 다시 호출하고 `Succeeded` 또는 `Failed` 결과를 전달합니다. 자세한 내용을 알아보려면 *AWS CodeDeploy 사용 설명서*의 [AppSpec '후크' 섹션](https://docs.aws.amazon.com/codedeploy/latest/userguide/reference-appspec-file-structure-hooks.html)을 참조하세요.  
*필수 항목 여부*: 아니요    
`BeforeInstall`  
대체 작업 세트가 생성되기 전에 작업을 실행할 때 사용하는 함수  
*필수 항목 여부*: 아니요  
`AfterInstall`  
대체 작업 세트가 생성되었고 대상 그룹 중 하나가 연결된 후 작업을 실행할 때 사용하는 함수  
*필수 항목 여부*: 아니요  
`AfterAllowTestTraffic`  
테스트 리스너가 대체 작업 세트에 트래픽을 제공한 후 작업을 실행할 때 사용하는 함수  
*필수 항목 여부*: 아니요  
`BeforeAllowTraffic`  
트래픽이 대체 작업 세트로 이동되기 전에 두 번째 대상 그룹이 대체 작업 세트와 연결된 후 작업을 실행할 때 사용하는 함수  
*필수 항목 여부*: 아니요  
`AfterAllowTraffic`  
두 번째 대상 그룹이 대체 작업 세트에 트래픽을 제공한 후 작업을 실행할 때 사용하는 함수  
*필수 항목 여부*: 아니요  
`ServiceRole`  
블루 그린 배포를 수행할 때 사용하는 CloudFormation에 대한 실행 역할. 필요한 권한의 목록은 [블루/그린 배포를 위한 IAM 권한](about-blue-green-deployments.md#blue-green-iam) 섹션을 참조하세요.  
*필수 항목 여부*: 아니요  
`Applications`  
Amazon ECS 애플리케이션의 속성을 지정합니다.  
*필수 항목 여부:* 예    
`Target`  
  
*필수 항목 여부:* 예    
`Type`  
리소스의 유형.  
*필수 항목 여부:* 예  
`LogicalID`  
리소스의 논리적 ID  
*필수 항목 여부:* 예  
`ECSAttributes`  
Amazon ECS 애플리케이션 배포의 다양한 요구 사항을 나타내는 리소스  
*필수 항목 여부:* 예    
`TaskDefinitions`  
Amazon ECS 애플리케이션이 포함된 Docker 컨테이너를 실행하기 위한 [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) 리소스의 논리적 ID  
*필수 항목 여부:* 예  
`TaskSets`  
애플리케이션의 작업 세트로 사용할 [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) 리소스의 논리적 ID  
*필수 항목 여부:* 예  
`TrafficRouting`  
트래픽 라우팅에 사용되는 리소스를 지정합니다.  
*필수 항목 여부:* 예    
`ProdTrafficRoute`  
대상 그룹으로 트래픽을 보내는 데 로드 밸런서에서 사용할 리스너  
*필수 항목 여부:* 예    
`Type`  
리소스의 유형입니다. `AWS::ElasticLoadBalancingV2::Listener`   
*필수 항목 여부:* 예  
`LogicalID`  
리소스의 논리적 ID  
*필수 항목 여부:* 예  
`TestTrafficRoute`  
대상 그룹으로 트래픽을 보내는 데 로드 밸런서에서 사용할 리스너  
*필수 항목 여부:* 예    
`Type`  
리소스의 유형입니다. `AWS::ElasticLoadBalancingV2::Listener`   
*필수 항목 여부:* 예  
`LogicalID`  
리소스의 논리적 ID  
*필수 항목 여부*: 아니요  
`TargetGroups`  
트래픽을 등록된 대상으로 라우팅하기 위해 대상 그룹으로 사용할 리소스의 논리적 ID  
*필수 항목 여부:* 예