

# Canary リリースの昇格
<a name="promote-canary-deployment"></a>

Canary リリースを昇格させると、Canary リリースが現在のステージ設定を置き換えます。Canary リリースが昇格してもステージで Canary は無効になりません。Canary を無効にするには、ステージで Canary 設定を削除する必要があります。Canary を昇格させるには、以下を実行します。
+ ステージの[デプロイ ID](https://docs.aws.amazon.com/apigateway/latest/api/API_Stage.html#deploymentId) を Canary の[デプロイ ID](https://docs.aws.amazon.com/apigateway/latest/api/API_Stage.html#canarySettings) 設定でリセットします。これによりステージの API スナップショットが Canary のスナップショットで更新され、テストバージョンを本稼働リリースにもします。
+ Canary のステージ変数でステージ変数を更新する (存在する場合) これによりステージの API 実行コンテキストが Canary のもので更新されます。この更新をしないと、テストバージョンでさまざまなステージ変数やさまざまな既存のステージの値を使用している場合、新しい API バージョンで予期しない結果が生じる場合があります。
+ Canary トラフィックの割合を 0.0% に設定します。

**Topics**
+ [API Gateway コンソールを使用して Canary リリースを昇格させる](#promote-canary-release-deployment-console)
+ [AWS CLI を使用して Canary リリースを昇格させる](#promote-canary-release-cli)

## API Gateway コンソールを使用して Canary リリースを昇格させる
<a name="promote-canary-release-deployment-console"></a>

API Gateway コンソールを使用して Canary リリースのデプロイを昇格させるには、以下を実行します。

**Canary リリースのデプロイを昇格させるには**

1.  API Gateway コンソールにサインインし、プライマリナビゲーションペインで既存の API を選択します。

1.  メインナビゲーションペインで、**[ステージ]** を選択してから、既存のステージを選択します。

1.  **[Canary]**タブを選択します。

1.  **[Canary の昇格]** を選択します。

1.  変更内容を確認し、**[Canary の昇格]** を選択します。

昇格後、本稼働リリースは Canary リリースと同じ API バージョン (**deploymentId**) を参照します。AWS CLI を使用してこれを検証できます。例については、「[AWS CLI を使用して Canary リリースを昇格させる](#promote-canary-release-cli)」を参照してください。

## AWS CLI を使用して Canary リリースを昇格させる
<a name="promote-canary-release-cli"></a>

AWS CLI コマンドを使用して Canary リリースを本稼働リリースに昇格させるには、`update-stage` コマンドを呼び出して Canary に関連付けられた `deploymentId` をステージに関連付けられた `deploymentId` にコピーし、Canary トラフィックの割合をゼロ (`0.0`) にリセットして、Canary にバインドされたステージ変数を対応するステージにバインドされた変数にコピーします。

次のようなステージで示された、Canary リリースのデプロイがあるとします。

```
{
    "_links": {
        ...
    },
    "accessLogSettings": {
        ...
    },
    "cacheClusterEnabled": false,
    "cacheClusterStatus": "NOT_AVAILABLE",
    "canarySettings": {
        "deploymentId": "eh1sby",
        "useStageCache": false,
        "stageVariableOverrides": {
            "sv2": "val3",
            "sv1": "val2"
        },
        "percentTraffic": 10.5
    },
    "createdDate": "2017-11-20T04:42:19Z",
    "deploymentId": "nfcn0x",
    "lastUpdatedDate": "2017-11-22T00:54:28Z",
    "methodSettings": {
        ...
    },
    "stageName": "prod",
    "variables": {
        "sv1": "val1"
    }
}
```

次の [update-stage](https://docs.aws.amazon.com/cli/latest/reference/apigateway/update-stage.html) コマンドを使用して、Canary を昇格させます。

```
aws apigateway update-stage  \
    --rest-api-id {rest-api-id}  \
    --stage-name '{stage-name}'  \
    --patch-operations '[{                                
        "op": "replace",                                  
        "value": "0.0",                                    
        "path": "/canarySettings/percentTraffic"         
      }, {                                                
        "op": "copy",                                     
        "from": "/canarySettings/stageVariableOverrides", 
        "path": "/variables"                             
      }, {                                                
        "op": "copy",                                     
        "from": "/canarySettings/deploymentId",           
        "path": "/deploymentId"                           
      }]'
```

出力は次のようになります。

```
{
    "_links": {
        ...
    },
    "accessLogSettings": {
        ...
    },
    "cacheClusterEnabled": false,
    "cacheClusterStatus": "NOT_AVAILABLE",
    "canarySettings": {
        "deploymentId": "eh1sby",
        "useStageCache": false,
        "stageVariableOverrides": {
            "sv2": "val3",
            "sv1": "val2"
        },
        "percentTraffic": 0
    },
    "createdDate": "2017-11-20T04:42:19Z",
    "deploymentId": "eh1sby",
    "lastUpdatedDate": "2017-11-22T05:29:47Z",
    "methodSettings": {
        ...
    },
    "stageName": "prod",
    "variables": {
        "sv2": "val3",
        "sv1": "val2"
    }
}
```

Canary リリースをステージに昇格させても Canary は無効にならず、デプロイは Canary リリースのデプロイのままになります。通常の本番稼働用デプロイにするには、Canary 設定を無効にする必要があります。Canary リリースのデプロイを無効にする方法については、「[Canary リリースをオフにする](delete-canary-deployment.md)」を参照してください。