

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

# 設定とモニタリングを自動ロールバックする
<a name="deployment-guardrails-configuration"></a>

Amazon CloudWatch アラームは、デプロイガードレールでベーキング期間を使うための前提条件です。デプロイガードレールにおける自動ロールバック機能は、エンドポイントをモニタリングできる CloudWatch アラームを設定した場合にのみ、使用できます。指定したモニタリング期間中にアラームが作動生した場合、SageMaker AI はアプリケーションを保護するために古いエンドポイントへの完全なロールバックを開始します。エンドポイントをモニタリングするように CloudWatch アラームを設定していない場合、デプロイ中に自動ロールバック機能は機能しません。

Amazon CloudWatch の詳細については、[Amazon CloudWatch ユーザーガイド](https://docs.aws.amazon.com/IAM/latest/UserGuide/access.html)の「*Amazon CloudWatch とは*」を参照してください。

**注記**  
IAM 実行ロールに、指定した自動ロールバックアラームの `cloudwatch:DescribeAlarms` アクションを実行するアクセス許可があることを確認してください。

## アラームの例
<a name="deployment-guardrails-configuration-alarm-examples"></a>

開始に役立つよう、CloudWatch アラームの機能をデモする以下の例を用意しました。次の例の使用または変更するだけでなく、独自のアラームを作成し、指定したフリートのさまざまなメトリクスを一定期間モニタリングするようにアラームを設定できます。アラームに追加できる SageMaker AI のメトリクスとディメンションの詳細については、「[Amazon CloudWatch における Amazon SageMaker AI メトリクス](monitoring-cloudwatch.md)」を参照してください。

**Topics**
+ [新旧両方のフリートの呼び出しエラーをモニタリングする](#deployment-guardrails-configuration-alarm-examples-errors-both)
+ [新しいフリートのモデルのレイテンシーをモニタリングする](#deployment-guardrails-configuration-alarm-examples-latency-new)

### 新旧両方のフリートの呼び出しエラーをモニタリングする
<a name="deployment-guardrails-configuration-alarm-examples-errors-both"></a>

次の CloudWatch アラームは、エンドポイントの平均エラー率をモニタリングします。このアラームを任意のデプロイガードレールのトラフィックシフトタイプで使うことで、新旧両方のフリートで全体的なモニタリングを行うことができます。アラームが作動すると、SageMaker AI は古いフリートへのロールバックを開始します。

新旧両方のフリートから発生する呼び出しエラーは、平均エラー率に影響します。平均エラー率が指定されたしきい値を超えると、アラームが作動します。この例では、デプロイ期間中、新旧両方のフリートで 4xx エラー (クライアントエラー) をモニタリングします。メトリクス `Invocation5XXErrors` を使って 5xx エラー (サーバーエラー) をモニタリングすることもできます。

**注記**  
このアラームタイプでは、デプロイ中に古いフリートでアラームが作動すると、SageMaker AI はデプロイを終了します。したがって、現在の本番稼働フリートで既にエラーが発生している場合は、次の例のいずれかを使用または変更して、新しいフリートのエラーのみをモニタリングすることを検討してください。

```
#Applied deployment type: all types
{
    "AlarmName": "EndToEndDeploymentHighErrorRateAlarm",
    "AlarmDescription": "Monitors the error rate of 4xx errors",
    "MetricName": "Invocation4XXErrors",
    "Namespace": "AWS/SageMaker",
    "Statistic": "Average",
    "Dimensions": [
        {
            "Name": "EndpointName",
            "Value": <your-endpoint-name>
        },
        {
            "Name": "VariantName",
            "Value": "AllTraffic"
        }
    ],
    "Period": 600,
    "EvaluationPeriods": 2,
    "Threshold": 1,
    "ComparisonOperator": "GreaterThanThreshold",
    "TreatMissingData": "notBreaching"
}
```

前の例では、次のフィールドの値に注意してください。
+ `AlarmName` と `AlarmDescription` には、アラームの名前と説明を入力します。
+ `MetricName` には、値 `Invocation4XXErrors` を使用して、エンドポイントで 4xx エラーをモニタリングします
+ `Namespace` には、値 `AWS/SageMaker` を使用します。必要に応じて、独自のカスタムメトリクスを指定することもできます。
+ `Statistic` の場合は、`Average` を使用します。これは、エラー率がしきい値を超えたかどうかを計算するときに、アラームが評価期間中の平均エラー率を取得することを意味します。
+ ディメンション `EndpointName` には、更新するエンドポイントの名前を値として使用します。
+ ディメンション `VariantName` には、値 `AllTraffic` を使用して、すべてのエンドポイントトラフィックを指定します。
+ `Period` の場合は、`600` を使用します。これにより、アラームの評価期間が 10 分に設定されます。
+ `EvaluationPeriods` の場合は、`2` を使用します。この値は、アラームステータスを決定する際に、直近の 2 つの評価期間を考慮するようにアラームに指示します。

### 新しいフリートのモデルのレイテンシーをモニタリングする
<a name="deployment-guardrails-configuration-alarm-examples-latency-new"></a>

次の CloudWatch アラームの例は、デプロイ中の新しいフリートのモデルのレイテンシーをモニタリングします。このアラームを使って、新しいフリートのみをモニタリングし、古いフリートを除外できます。アラームは、デプロイ全体で持続します。この例では、新しいフリートの包括的なエンドツーエンドのモニタリングを行い、新しいフリートに応答時間の問題がある場合、古いフリートへのロールバックを開始します。

CloudWatch は、新しいフリートがトラフィックを受信し始めた後、ディメンション `EndpointConfigName:{New-Ep-Config}` を含むメトリクスを発行します。これらのメトリクスはデプロイが完了した後も持続します。

次のアラーム例は、どのデプロイタイプでも使用できます。

```
#Applied deployment type: all types
{
    "AlarmName": "NewEndpointConfigVersionHighModelLatencyAlarm",
    "AlarmDescription": "Monitors the model latency on new fleet",
    "MetricName": "ModelLatency",
    "Namespace": "AWS/SageMaker",
    "Statistic": "Average",
    "Dimensions": [
        {
            "Name": "EndpointName",
            "Value": <your-endpoint-name>
        },
        {
            "Name": "VariantName",
            "Value": "AllTraffic"
        },
        {
            "Name": "EndpointConfigName",
            "Value": <your-config-name>
    ],
    "Period": 300,
    "EvaluationPeriods": 2,
    "Threshold": 100000, # 100ms
    "ComparisonOperator": "GreaterThanThreshold",
    "TreatMissingData": "notBreaching"
}
```

前の例では、次のフィールドの値に注意してください。
+ `MetricName` には、値 `ModelLatency` を使用して、モデルの応答時間をモニタリングします。
+ `Namespace` には、値 `AWS/SageMaker` を使用します。必要に応じて、独自のカスタムメトリクスを指定することもできます。
+ ディメンション `EndpointName` には、更新するエンドポイントの名前を値として使用します。
+ ディメンション `VariantName` には、値 `AllTraffic` を使用して、すべてのエンドポイントトラフィックを指定します。
+ ディメンション `EndpointConfigName` については、値は、新規または更新されたエンドポイントのエンドポイント設定名を参照します。

**注記**  
新しいフリートではなく古いフリートをモニタリングする場合は、ディメンション `EndpointConfigName` を、古いフリートの設定名を指定するように変更できます。