

# `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`  
トラフィックルーティングの構成値。  
*必須:* いいえ  
デフォルトの構成は、時間ベースの canary トラフィックシフトで、15% のステップ率と 5 分間のベイク時間があります。    
`Type`  
デプロイ構成で使用されるトラフィックシフトのタイプ。  
有効値: AllAtOnce \| TimeBasedCanary \| TimeBasedLinear  
*必須:* はい    
`TimeBasedCanary`  
デプロイの 1 つのバージョンから別のバージョンにトラフィックを 2 つずつシフトする構成を指定します。  
必須: 条件付き: `TimeBasedCanary` をトラフィックルーティングタイプとして指定する場合、`TimeBasedCanary` パラメータを含める必要があります。    
`StepPercentage`  
`TimeBasedCanary` デプロイの最初の増分でシフトするトラフィックの割合。ステップの割合は 14% 以上である必要があります。  
*必須:* いいえ  
`BakeTimeMins`  
`TimeBasedCanary` デプロイの 1 番目と 2 番目のトラフィックシフトの間の分数。  
*必須:* いいえ  
`TimeBasedLinear`  
1 つのデプロイバージョンから別のデプロイバージョンにトラフィックを同じ増分で、各増分間隔を分単位でシフトする構成を指定します。  
必須: 条件付き: `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`  
置き換えタスクセットが作成され、ターゲットグループの 1 つがそれに関連付けられた後、タスクを実行するために使用する関数。  
*必須:* いいえ  
`AfterAllowTestTraffic`  
テストリスナーが置き換えタスクセットにトラフィックを提供した後、タスクを実行するために使用する関数。  
*必須:* いいえ  
`BeforeAllowTraffic`  
2 番目のターゲットグループが置き換えタスクセットに関連付けられた後、トラフィックが置き換えタスクセットに移行される前に、タスクを実行するために使用する関数。  
*必須:* いいえ  
`AfterAllowTraffic`  
2 番目のターゲットグループが置き換えタスクセットにトラフィックを提供した後、タスクを実行するために使用する関数。  
*必須:* いいえ  
`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。  
*必須:* はい