

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Canary トラフィックシフトを使用する
<a name="deployment-guardrails-blue-green-canary"></a>

Canary トラフィックシフトにより、エンドポイントトラフィックの一部を新しいフリートでテストしながら、残りのトラフィックを古いフリートで処理できます。このテストステップは、すべてのトラフィックを新しいフリートにシフトする前に、新しいフリートの機能を検証する安全なガードレールです。Blue/Green デプロイの利点はそのままで、加わる Canary 機能により、新しい (緑の) フリートで 100% のトラフィックを処理する前に、推論を提供できるようになります。

トラフィックを受信するためにオンになる緑のフリートの部分は canary と呼ばれ、この canary のサイズを選択できます。canary のサイズは、新しいフリートの容量の 50% 以下になるように注意してください。ベーキング期間が終了し、事前に指定した Amazon CloudWatch アラームの作動がなければ、残りのトラフィックは古い (青の) フリートから緑のフリートにシフトします。Canary トラフィックシフトは、更新されたモデルに関する問題が canary にのみ影響するため、デプロイ時の安全性が向上します。

次の図は、Canary トラフィックシフトが青と緑のフリート間のトラフィックの分散を管理する方法を示しています。

![\[古いフリートから新しいフリートへの 2 ステップの Canary トラフィックシフトに成功。\]](http://docs.aws.amazon.com/ja_jp/sagemaker/latest/dg/images/deployment-guardrails-blue-green-canary.png)


SageMaker AI が緑のフリートをプロビジョンすると、SageMaker AI は着信トラフィックの一部 (25% など) を canary にルーティングします。その後、ベーキング期間が始まり、その間は CloudWatch アラームが緑のフリートのパフォーマンスをモニタリングします。この間、青のフリートと緑のフリートの両方が部分的にアクティブになり、トラフィックを受信します。ベーキング期間中にいずれかのアラームが作動した場合、SageMaker AI はロールバックを開始し、すべてのトラフィックが青のフリートに戻ります。いずれのアラームも作動しない場合は、すべてのトラフィックが緑のフリートにシフトし、最後のベーキング期間があります。アラームが作動せずに最後のベーキング期間が終了すると、緑のフリートがすべてのトラフィックを処理し、SageMaker AI は青のフリートを終了します。

## 前提条件
<a name="deployment-guardrails-blue-green-canary-prereqs"></a>

Canary トラフィックシフトを使うデプロイを設定する前に、エンドポイントからのメトリクスをモニタリングするよう Amazon CloudWatch アラームを作成する必要があります。アラームはベーキング期間中アクティブになり、いずれかのアラームが作動した場合、すべてのエンドポイントトラフィックは青のフリートにロールバックされます。エンドポイントに CloudWatch アラームを設定する方法については、前提条件のページ「[設定とモニタリングを自動ロールバックする](deployment-guardrails-configuration.md)」を参照してください。CloudWatch アラームの詳細については、[Amazon CloudWatch ユーザーガイド](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html)の「*Amazon CloudWatch でのアラームの使用*」を参照してください。

## Canary トラフィックシフトを設定する
<a name="deployment-guardrails-blue-green-canary-configure"></a>

デプロイの準備が整い、エンドポイントに Amazon CloudWatch アラームを設定したら、Amazon SageMaker AI [UpdateEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateEndpoint.html) API または AWS CLI の [update-endpoint](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/update-endpoint.html) コマンドのいずれかを使って、デプロイを開始できます。

**Topics**
+ [エンドポイントを更新する方法 (API)](#deployment-guardrails-blue-green-canary-configure-api-update)
+ [既存の Blue/Green 更新ポリシーでエンドポイントを更新する方法 (API)](#deployment-guardrails-blue-green-canary-configure-api-existing)
+ [エンドポイントを更新する方法 (CLI)](#deployment-guardrails-blue-green-canary-configure-cli-update)

### エンドポイントを更新する方法 (API)
<a name="deployment-guardrails-blue-green-canary-configure-api-update"></a>

次の [UpdateEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateEndpoint.html) API の例は、Canary トラフィックシフトでエンドポイントを更新する方法を示しています。

```
import boto3
client = boto3.client("sagemaker")

response = client.update_endpoint(
    EndpointName="<your-endpoint-name>",
    EndpointConfigName="<your-config-name>",
    DeploymentConfig={
        "BlueGreenUpdatePolicy": {
            "TrafficRoutingConfiguration": {
                "Type": "CANARY",
                "CanarySize": {
                    "Type": "CAPACITY_PERCENT",
                    "Value": 30
                },
                "WaitIntervalInSeconds": 600
            },
            "TerminationWaitInSeconds": 600,
            "MaximumExecutionTimeoutInSeconds": 1800
        },
        "AutoRollbackConfiguration": {
            "Alarms": [
                {
                    "AlarmName": "<your-cw-alarm>"
                }
            ]
        }
    }
)
```

Canary トラフィックシフトオプションを設定するには、以下を実行します。
+ `EndpointName` には、更新する既存のエンドポイントの名前を使用します。
+ `EndpointConfigName` には、使用するエンドポイント設定の名前を使用します。
+ `DeploymentConfig` と `BlueGreenUpdatePolicy` の下の `TrafficRoutingConfiguration` で、`Type` パラメータを `CANARY` に設定します。これは、デプロイが Canary トラフィックシフトを使うよう指定します。
+ `CanarySize` フィールドでは、`Type` と `Value` パラメータを変更することで canary のサイズを変更できます。`Type` には、`CAPACITY_PERCENT` を使用します。これは、canary として使う緑のフリートの割合を意味し、`30` には `Value` を設定します。この例では、緑のフリートの容量の 30% を canary として使用します。canary のサイズは、緑のフリートの容量の 50% 以下になるように注意してください。
+ `WaitIntervalInSeconds` の場合は、`600` を使用します。このパラメータは、間隔シフト間で所定の時間 (秒単位) 待機するよう SageMaker AI に指示します。この間隔は、canary ベーキング期間の長さです。前の例では、SageMaker AI は canary シフト後 10 分間待機してから、2 番目と最後のトラフィックシフトを完了します。
+ `TerminationWaitInSeconds` の場合は、`600` を使用します。このパラメータは SageMaker AI に対し、緑のフリートが完全にアクティブになった後、青のフリートのインスタンスを終了するまで、所定の時間 (秒単位) 待機するよう指示します。この例では、SageMaker AI は最後のベーキング期間後 10 分間待機してから、青のフリートを終了します。
+ `MaximumExecutionTimeoutInSeconds` の場合は、`1800` を使用します。このパラメータは、デプロイがタイムアウトするまでに実行できる最大時間を設定します。前の例では、デプロイが終了するまでの制限時間は 30 分です。
+ `AutoRollbackConfiguration` の `Alarms` フィールドでは、CloudWatch アラームを名前で追加できます。使うアラームごとに 1 つの `AlarmName: <your-cw-alarm>` エントリを作成します。

### 既存の Blue/Green 更新ポリシーでエンドポイントを更新する方法 (API)
<a name="deployment-guardrails-blue-green-canary-configure-api-existing"></a>

[CreateEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEndpoint.html) API を使ってエンドポイントを作成する場合は、必要に応じて、将来のエンドポイントの更新に再利用するデプロイ設定を指定できます。前の UpdateEndpoint API の例と同じ `DeploymentConfig` オプションを使用できます。CreateEndpoint API の動作に変化はありません。デプロイ設定を指定しても、エンドポイントでの Blue/Green 更新が自動的に実行されるわけではありません。

以前のデプロイ設定を使うオプションは、[UpdateEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateEndpoint.html) API エンドポイントを使ってエンドポイントを更新するときに発生します。エンドポイントを更新するときは、`RetainDeploymentConfig` オプションを使って、エンドポイントの作成時に指定したデプロイ設定を保持できます。

[UpdateEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateEndpoint.html) API を呼び出すときに、`RetainDeploymentConfig` を `True` に設定して、元のエンドポイント設定の `DeploymentConfig` オプションを保持します。

```
response = client.update_endpoint(
    EndpointName="<your-endpoint-name>",
    EndpointConfigName="<your-config-name>",
    RetainDeploymentConfig=True
)
```

### エンドポイントを更新する方法 (CLI)
<a name="deployment-guardrails-blue-green-canary-configure-cli-update"></a>

AWS CLI を使う場合、次の例は、[update-endpoint](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/update-endpoint.html) コマンドを使って Blue/Green canary デプロイメントを始める方法を示しています。

```
update-endpoint
--endpoint-name <your-endpoint-name>
--endpoint-config-name <your-config-name> 
--deployment-config '"BlueGreenUpdatePolicy": {"TrafficRoutingConfiguration": {"Type": "CANARY",
    "CanarySize": {"Type": "CAPACITY_PERCENT", "Value": 30}, "WaitIntervalInSeconds": 600},
    "TerminationWaitInSeconds": 600, "MaximumExecutionTimeoutInSeconds": 1800},
    "AutoRollbackConfiguration": {"Alarms": [{"AlarmName": "<your-alarm>"}]}'
```

Canary トラフィックシフトオプションを設定するには、以下を実行します。
+ `endpoint-name` には、更新するエンドポイントの名前を使用します。
+ `endpoint-config-name` には、使用するエンドポイント設定の名前を使用します。
+ `deployment-config` には、[BlueGreenUpdatePolicy](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_BlueGreenUpdatePolicy.html) JSON オブジェクトを使用します。

**注記**  
JSON オブジェクトをファイルに保存する場合は、*AWS CLI ユーザーガイド*の「[AWS CLI スケルトンと入力パラメータの生成](https://docs.aws.amazon.com/cli/latest/userguide/cli-usage-skeleton.html)」を参照してください。