

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

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

Linear トラフィックシフトは、古いフリート (青のフリート) から新しいフリート (緑のフリート) に徐々にトラフィックをシフトさせることができます。Linear トラフィックシフトにより、複数のステップでトラフィックをシフトできるため、エンドポイントで障害が発生する可能性を最小限に抑えることができます。この Blue/Green デプロイオプションでは、トラフィックシフトを最も細かくコントロールできます。

各ステップでアクティブ化するインスタンス数または緑のフリートの容量の割合のいずれかを選択できます。各 Linear ステップは、緑のフリートの容量の 10～50% の間にしてください。ステップごとに、事前に指定した Amazon CloudWatch アラームが緑のフリートのメトリクスをモニタリングするベーキング期間があります。ベーキング期間が終了し、アラームの作動がなければ、緑のフリートのアクティブな部分は引き続きトラフィックを受信し、新しいステップが始まります。ベーキング期間中にアラームが作動した場合、100% のエンドポイントトラフィックは青のフリートにロールバックされます。

次の図は、Linear トラフィックシフトがトラフィックを青と緑のフリートにルーティングする方法を示しています。

![3 段階で古いフリートから新しいフリートへの Linear トラフィックシフトが完了。](http://docs.aws.amazon.com/ja_jp/sagemaker/latest/dg/images/deployment-guardrails-blue-green-linear.png)


SageMaker AI が新しいフリートをプロビジョニングすると、緑のフリートの最初の部分がオンになり、トラフィックを受信します。SageMaker AI は青のフリートの同じサイズの部分を非アクティブ化し、ベーキング期間が始まります。アラームが作動した場合、すべてのエンドポイントトラフィックは青のフリートにロールバックされます。ベーキング期間が終了すると、次のステップが始まります。緑のフリートの別の部分がアクティブ化されてトラフィックを受信し、青のフリートの一部が非アクティブ化され、別のベーキング期間が始まります。青のフリートが完全に非アクティブ化され、緑のフリートが完全にアクティブ化され、すべてのトラフィックを受信するまで、同じプロセスが繰り返されます。いずれかの時点でアラームが作動すると、SageMaker AI はシフトプロセスを終了し、100% のトラフィックが青のフリートにロールバックされます。

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

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

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

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

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

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

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

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

response = client.update_endpoint(
    EndpointName="{{<your-endpoint-name>}}",
    EndpointConfigName="{{<your-config-name>}}",
    DeploymentConfig={
        "BlueGreenUpdatePolicy": {
            "TrafficRoutingConfiguration": {
                "Type": "LINEAR",
                "LinearStepSize": {
                    "Type": "CAPACITY_PERCENT",
                    "Value": 20
                },
                "WaitIntervalInSeconds": 300
            },
            "TerminationWaitInSeconds": 300,
            "MaximumExecutionTimeoutInSeconds": 3600
        },
        "AutoRollbackConfiguration": {
            "Alarms": [
                {
                    "AlarmName": "{{<your-cw-alarm>}}"
                }
            ]
        }
    }
)
```

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

### 既存の Blue/Green 更新ポリシーでエンドポイントを更新する方法 (API)
<a name="deployment-guardrails-blue-green-linear-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 線形デプロイを開始する方法を示しています。

```
update-endpoint
--endpoint-name {{<your-endpoint-name>
}}--endpoint-config-name {{<your-config-name>}} 
--deployment-config '{"BlueGreenUpdatePolicy": {"TrafficRoutingConfiguration": {"Type": "LINEAR",
    "LinearStepSize": {"Type": "CAPACITY_PERCENT", "Value": 20}, "WaitIntervalInSeconds": 300},
    "TerminationWaitInSeconds": 300, "MaximumExecutionTimeoutInSeconds": 3600},
    "AutoRollbackConfiguration": {"Alarms": [{"AlarmName": "{{<your-alarm>}}"}]}'
```

Linear トラフィックシフトオプションを設定するには、以下を実行します。
+ `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)」を参照してください。