

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 部署防護機制以更新生產環境中的模型
<a name="deployment-guardrails"></a>

部署防護機制是 Amazon SageMaker AI 推論中的一組模型部署選項，可在生產環境中更新您的機器學習模型。使用全受控部署選項，您可以控制從生產環境中的目前模型切換到新模型。藍/綠部署中的流量轉移模式 (例如 Canary 和線性) 可讓您在更新過程中精細控制從目前模型到新模型的流量轉移程序。此外，還有內建的保護措施，例如自動還原，可協助您及早找出問題，並在問題大幅影響生產之前自動採取修正措施。

部署防防護機制提供以下優勢：
+ **更新生產環境時的部署安全性。**對生產環境的迴歸更新可能會導致意外的停機時間和業務影響，例如增加模型延遲和高錯誤率。部署防護機制可透過提供最佳實務和內建的操作安全防護機制，協助您降低這些風險。
+ **全受管的部署。**SageMaker AI 負責設定和協調這些部署，並將其與端點更新機制整合。您不需要建置和維護協調流程、監控或復原機制。您可以利用 SageMaker AI 來設定和協調這些部署，並專注於針對應用程式利用機器學習 (ML)。
+ **可見性。**您可以透過 [DescribeEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeEndpoint.html) API 或透過 Amazon CloudWatch Events (適用於[支援的端點](deployment-guardrails-exclusions.md)) 追蹤部署進度。要瞭解有關 SageMaker AI 中事件的詳細資訊，請參閱[Amazon SageMaker AI 傳送至 Amazon EventBridge 的事件](automating-sagemaker-with-eventbridge.md)中的「端點部署狀態變更」章節。請注意，如果您的端點使用 [Exclusions](deployment-guardrails-exclusions.md) 頁面中列出的任何功能，則無法使用 CloudWatch 活動。

**注意**  
部署 防護機制僅適用於 [非同步推論](async-inference.md) 和 [即時推論](realtime-endpoints.md) 端點類型。

## 如何開始
<a name="deployment-guardrails-get-started"></a>

我們支援兩種部署類型，以更新生產環境中的模型：藍/綠部署和滾動部署。
+ [藍/綠部署](deployment-guardrails-blue-green.md)：您可以透過更新將舊機群 (藍色機群) 的流量轉移到新機群 (綠色機群)。藍/綠部署提供[多種流量轉移模式](https://docs.aws.amazon.com/sagemaker/latest/dg/deployment-guardrails-blue-green.html)。流量轉移模式是一種組態，用於指定 SageMaker AI 如何將端點流量路由至包含您更新的新機群。下列流量轉移模式可為您提供端點更新程序的不同層級控制：
  + [使用一次全部流量轉移](deployment-guardrails-blue-green-all-at-once.md) 將您的所有端點流量從藍色機群轉移到綠色機群。流量轉移到綠色機群後，您預先指定的 Amazon CloudWatch 警示會開始監控綠色機群一段時間 (*製作中期間*)。如果在製作中期間沒有觸發警報，則 SageMaker AI 會終止藍色機群。
  + [使用 Canary 流量轉移](deployment-guardrails-blue-green-canary.md) 將您的流量的一小部分 (*Canary*) 轉移到綠色機群，並對其進行監控一段製作中期間。如果 Canary 在綠色機群上成功，則 SageMaker AI 將剩餘的流量從藍色機群轉移到綠色機群，然後終止藍色機群。
  + [使用線性流量轉移](deployment-guardrails-blue-green-linear.md) 針對流量轉移步驟數量和每個步驟要轉移的流量百分比，提供更多的自訂功能。雖然 Canary 轉移可讓您分兩個步驟轉移流量，但線性轉移將其擴展到 *n* 個線性間隔的步驟。
+ [使用滾動式部署](deployment-guardrails-rolling.md)：您可以在 SageMaker AI 逐步佈建容量時更新端點，並按照指定的批次大小的步驟將流量轉移到新機群。新機群上的執行個體會以新部署設定進行更新，而且如果在製作中期間沒有觸發 CloudWatch 警示，則 SageMaker AI 會清除舊機群上的執行個體。此選項可讓您精細控制執行個體計數或每個步驟轉移的容量百分比。

您可以透過 [UpdateEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateEndpoint.html) 和 [CreateEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEndpoint.html) SageMaker API 和 AWS Command Line Interface 命令來建立和管理您的部署。有關如何設置部署的詳細資訊，請參閱各個部署頁面。請注意，如果您的端點使用 [Exclusions](deployment-guardrails-exclusions.md) 頁面中列出的任何功能，則無法使用部署防護機制。

要遵循說明如何使用部署護欄的指導範例，請參閱我們的範例 [Jupyter 筆記本](https://github.com/aws/amazon-sagemaker-examples/tree/master/sagemaker-inference-deployment-guardrails)適用於金絲雀和線性交通轉移模式。

# 自動回復組態與監控
<a name="deployment-guardrails-configuration"></a>

Amazon CloudWatch 警示是在部署防護機制中使用製作中期間的先決條件。只有在設定可監控端點的 CloudWatch 警示時，才能在部署防護機制中使用自動還原功能。如果有任何警示在指定的監控期間觸發，SageMaker AI 會啟動完整復原至舊端點，以保護您的應用程式。如果您沒有設定任何 CloudWatch 警示來監控端點，則自動還原功能在部署期間無法運作。

如需進一步了解 Amazon CloudWatch，請參閱 *Amazon CloudWatch 使用者指南*中的[什麼是 Amazon CloudWatch？](https://docs.aws.amazon.com/IAM/latest/UserGuide/access.html)。

**注意**  
確保您的 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`。此值會告知警示在決定警示狀態時，考慮兩個最近的評估期間。

### 監控新機群上的模型延遲
<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`，以指定舊機群組態的名稱。

# 藍/綠部署
<a name="deployment-guardrails-blue-green"></a>

當您更新端點時，Amazon SageMaker AI 會自動使用藍/綠部署來最大化端點的可用性。在藍/綠部署中，SageMaker AI 會佈建具有更新 (綠色機群) 的新機群。然後，SageMaker AI 將流量從舊機群 (藍色機群) 轉移到綠色機群。一旦綠色機群在設定的評估期內順利運作 (稱為製作中期間)，SageMaker AI 就會終止藍色機群。借助藍/綠部署的其他功能，您可以利用流量轉移模式和自動還原監控來保護端點免受重大生產影響。

下列清單說明 SageMaker AI 中藍/綠部署的主要功能：
+ **流量轉移模式。**部署防護機制的流量轉移模式可讓您控制藍色機群和綠色機群之間的流量和流量轉移步驟的數量。此功能可讓您逐步評估綠色機群的效能，而無需完全承諾 100% 的流量轉移。
+ **製作中期間。**製作中期間是指在進入下一個部署階段之前監控綠色機群一段設定的時間。如果任何預先指定的警示在任何製作中期間觸發，則所有端點流量都會復原至藍色機群。製作中期間可幫助您在進行永久流量轉移之前，建立對更新的信心。
+ **自動還原。**您可以指定 SageMaker AI 用來監控綠色機群的 Amazon CloudWatch 警示。如果更新的程式碼發生問題觸發任何警示，SageMaker AI 會啟動自動還原至藍色機群，以維持可用性，進而將風險降至最低。

## 流量轉移模式
<a name="deployment-guardrails-blue-green-traffic-modes"></a>

藍/綠部署中的各種流量轉移模式可讓您更精細地控制藍色機群和綠色機群之間的流量轉移。藍/綠部署的可用流量轉移模式是一次全部、Canary 和線性。下表顯示選項的比較。

**重要**  
對於涉及多階段流量轉移或製作中期間的藍/綠部署，不論機群的流量為何，都會在更新期間向您收取兩個機群的費用。這與所有藍色/綠色部署的流量一次全部轉移和無製作中期間相反，在更新過程中，您只需支付一個機群的費用。


| 名稱 | 這是什麼？ | 優點 | 缺點 | 建議 | 
| --- | --- | --- | --- | --- | 
| 一次全部 | 單一步驟將所有流量轉移到新機群。 | 將整體更新持續時間降至最低。 | 迴歸更新影響 100％ 的流量。 | 使用此選項可將更新時間和成本降至最低。 | 
| Canary | 流量轉移分為兩個步驟。第一個 (canary) 步驟會轉移一小部分流量，然後第二個步驟，會轉移剩餘的流量。 | 轉譯迴歸更新的影響範圍為僅限 Canary 機群。 | 兩個機群在整個部署中平行運作。 | 使用此選項可在最小化迴歸更新的影響範圍和最小化兩個機群的運作時間之間取得平衡。 | 
| 線性 | 流量的固定部分會以預先指定的等距步驟數量轉移。 | 以數個步驟進行流量轉移，將迴歸更新的風險降到最低。 | 更新持續時間和成本與步驟數成比例。 | 使用此選項可將部署分散到多個步驟，將風險降至最低。 | 

## 開始使用
<a name="deployment-guardrails-blue-green-get-started"></a>

指定所需的部署組態後，SageMaker AI 會為您處理佈建新執行個體、終止舊執行個體以及轉移流量。您可以透過現有的 [UpdateEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateEndpoint.html) 和 [CreateEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEndpoint.html) SageMaker API 和 AWS Command Line Interface 命令來建立和管理您的部署。請注意，如果您的端點使用 [Exclusions](deployment-guardrails-exclusions.md) 頁面中列出的任何功能，則無法使用部署防護機制。有關如何設置部署的詳細資訊，請參閱各個部署頁面：
+ [藍/綠更新與一次全部流量轉移](deployment-guardrails-blue-green-all-at-once.md)
+ [藍/綠更新與 Canary 流量轉移](deployment-guardrails-blue-green-canary.md)
+ [藍/綠更新與線性流量轉移](deployment-guardrails-blue-green-linear.md)

要遵循說明如何使用部署護欄的指導範例，請參閱我們的範例 [Jupyter 筆記本](https://github.com/aws/amazon-sagemaker-examples/tree/master/sagemaker-inference-deployment-guardrails)適用於金絲雀和線性交通轉移模式。

# 使用一次全部流量轉移
<a name="deployment-guardrails-blue-green-all-at-once"></a>

透過一次全部流量轉移，您可以使用藍/綠部署的安全防護機制快速推出端點更新。您可以使用此流量轉移選項，將更新持續時間降至最低，同時仍可利用藍/綠部署的可用性保證。製作中期間功能可協助您在終止舊執行個體之前監控新執行個體的效能和功能，確保新機群可完全運作。

下圖顯示了一次全部流量轉移如何管理新舊機群。

![\[從舊機群成功將 100％ 流量轉移到新機群。\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/deployment-guardrails-blue-green-all-at-once.png)


使用一次全部流量轉移時，SageMaker AI 會將 100% 的流量路由到新機群 (綠色機群)。一旦綠色機群開始接收流量，製作中期間開始。製作中期間是指預先指定的 Amazon CloudWatch 警示監控綠色機群效能的設定時間長度。如果在製作中期間沒有觸發警示，SageMaker AI 會終止舊機群 (藍色機群)。如果在製作中期間觸發任何警示，則會啟動自動還原，並且將 100％ 的流量轉移回藍色機群。

## 先決條件
<a name="deployment-guardrails-blue-green-all-at-once-prereqs"></a>

在設定具有一次全部流量轉移的部署之前，您必須先建立 Amazon CloudWatch 警示以監看端點中的指標。如果有任何警報在製作中期間觸發，那麼流量就會回復到您的藍色機群。要瞭解如何在終端節點上設置 CloudWatch 警報，請參閱先決條件頁面[自動回復組態與監控](deployment-guardrails-configuration.md)。如需進一步了解 CloudWatch 警示，請參閱 *Amazon CloudWatch 使用者指南*中的[使用 Amazon CloudWatch 警示](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html)。

## 設定一次全部流量轉移
<a name="deployment-guardrails-blue-green-all-at-once-configure"></a>

一旦準備好進行部署，並為您的端點設定 CloudWatch 警示後，您可以使用中的 SageMaker AI [UpdateEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateEndpoint.html) API 或 AWS Command Line Interface 中的 [update-endpoint](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/update-endpoint.html) 命令來啟動部署。

**Topics**
+ [

### 如何更新端點 (API)
](#deployment-guardrails-blue-green-all-at-once-configure-api-update)
+ [

### 如何使用現有的藍色/綠色更新政策 (API) 來更新端點
](#deployment-guardrails-blue-green-all-at-once-configure-api-existing)
+ [

### 如何更新端點 (CLI)
](#deployment-guardrails-blue-green-all-at-once-configure-cli-update)

### 如何更新端點 (API)
<a name="deployment-guardrails-blue-green-all-at-once-configure-api-update"></a>

下列範例示範如何使用 Amazon SageMaker API 中的 [UpdateEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateEndpoint.html) 透過一次全部流量轉移更新所有端點。

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

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

若要設定一次全部流量轉移選項，請執行下列動作：
+ 針對 `EndpointName`，請使用您要更新的現有端點名稱。
+ 在 `EndpointConfigName` 中，使用您要使用的端點組態名稱。
+ 在 `DeploymentConfig` 和 `BlueGreenUpdatePolicy` 下，在 `TrafficRoutingConfiguration` 中，將 `Type` 參數設定為 `ALL_AT_ONCE`。這會指定使用一次全部流量轉移模式的部署。
+ 對於 `TerminationWaitInSeconds`，請使用 `600`。參數會告知 SageMaker AI 在綠色機群完全作用後等待指定的時間量 (以秒為單位)，然後才終止藍色機群中的執行個體。在此範例中，SageMaker AI 會在最後製作中期間後等待 10 分鐘，然後才終止藍色機群。
+ 對於 `MaximumExecutionTimeoutInSeconds`，請使用 `1800`。此參數設定部署在逾時前可以執行的時間上限。在上述範例中，您的部署時間上限為 30 分鐘。
+ 在 `AutoRollbackConfiguration` 中，`Alarms` 欄位，您可以依據名稱新增您的 CloudWatch 警示。為您要使用的每個警示建立一個 `AlarmName: <your-cw-alarm>` 項目。

### 如何使用現有的藍色/綠色更新政策 (API) 來更新端點
<a name="deployment-guardrails-blue-green-all-at-once-configure-api-existing"></a>

當您使用 [CreateEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEndpoint.html) API 建立端點時，您可以選擇性地指定部署組態，以便在未來的端點更新時重複使用。您可以使用與先前 UpdateEndpoint API 範例相同的 `DeploymentConfig` 選項。CreateEndpoint API 行為沒有變更。指定部署組態不會自動在端點上執行藍/綠更新。

使用 [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-all-at-once-configure-cli-update"></a>

如果您使用的是 AWS CLI，下列範例會示範如何使用 [update-endpoint](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/update-endpoint.html) 命令來啟動藍/綠全部部署。

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

若要設定一次全部流量轉移選項，請執行下列動作：
+ 在 `endpoint-name` 中，使用您想更新的端點名稱。
+ 在 `endpoint-config-name` 中，使用您要使用的端點組態名稱。
+ 在 `deployment-config` 中，使用 [BlueGreenUpdatePolicy](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_BlueGreenUpdatePolicy.html) JSON 物件。

**注意**  
如果您希望將 JSON 對象保存在文件中，請參閱[正在生成AWS CLI骨架和輸入參數](https://docs.aws.amazon.com/cli/latest/userguide/cli-usage-skeleton.html)在*AWS CLI用戶指南*。

# 使用 Canary 流量轉移
<a name="deployment-guardrails-blue-green-canary"></a>

透過 Canary 流量轉移，您可以在新機群上測試部分端點流量，而舊機群則為剩餘的流量提供服務。此測試步驟是安全防護機制，可在將所有流量轉移到新機群之前驗證新機群的功能。您仍然可以享有藍/綠部署的優點，而新增的 Canary 功能可讓您確保新的 (綠色) 機群能夠提供推論，然後再讓它處理 100% 的流量。

開啟接收流量的綠色機群的部分稱為 Canary，您可以選擇此 Canary 的大小。請注意，Canary 大小應小於或等於新容量的 50%。製作中期間結束，且觸發沒有預先指定的 Amazon CloudWatch 警示時，其餘流量就會從舊機群 (藍色) 轉移到綠色機群。Canary 流量轉移可在部署期間為您提供更高的安全性，因為更新模型的任何問題都只會影響 Canary。

下圖顯示了 Canary 流量轉移如何管理藍色和綠色機群之間的流量分佈。

![\[成功的兩步驟 Canary 流量從舊機群轉移到新機群。\]](http://docs.aws.amazon.com/zh_tw/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 使用者指南*中的[使用 Amazon CloudWatch 警示](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html)。

## 設定 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)
+ [

### 如何使用現有的藍色/綠色更新政策 (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 的綠色機群的百分比，然後設定 `Value` 為 `30`。在此範例中，您使用綠色機群 30% 的容量作為 Canary。請注意，Canary 大小應等於或小於綠色機群容量的 50％。
+ 對於 `WaitIntervalInSeconds`，請使用 `600`。參數會告知 SageMaker AI 等待每個間隔轉移之間的指定時間 (以秒為單位)。此間隔是 Canary 製作中期間的持續時間。在上述範例中，SageMaker AI 會在 Canary 轉移後等待 10 分鐘，然後完成第二個也是最後一個流量轉移。
+ 對於 `TerminationWaitInSeconds`，請使用 `600`。參數會告知 SageMaker AI 在綠色機群完全作用後等待指定的時間量 (以秒為單位)，然後才終止藍色機群中的執行個體。在此範例中，SageMaker AI 會在最後製作中期間後等待 10 分鐘，然後才終止藍色機群。
+ 對於 `MaximumExecutionTimeoutInSeconds`，請使用 `1800`。此參數設定部署在逾時前可以執行的時間上限。在上述範例中，您的部署時間上限為 30 分鐘。
+ 在 `AutoRollbackConfiguration` 中，`Alarms` 欄位，您可以依據名稱新增您的 CloudWatch 警示。為您要使用的每個警示建立一個 `AlarmName: <your-cw-alarm>` 項目。

### 如何使用現有的藍色/綠色更新政策 (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 行為沒有變更。指定部署組態不會自動在端點上執行藍/綠更新。

使用 [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) 命令，來啟動藍/綠 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骨架和輸入參數](https://docs.aws.amazon.com/cli/latest/userguide/cli-usage-skeleton.html)在*AWS CLI用戶指南*。

# 使用線性流量轉移
<a name="deployment-guardrails-blue-green-linear"></a>

線性流量轉移可讓您逐步將舊機群 (藍色機群) 的流量轉移到新機群 (綠色機群)。透過線性流量轉移，您可以透過多個步驟轉移流量，將端點中斷的機會降到最低。此藍/綠部署選項可讓您對流量轉移進行最精細的控制。

您可以選擇執行個體數量，或綠色機群在每個步驟中啟動的容量百分比。每個線性步驟應該只在綠色機群容量的 10-50％ 之間。對於每個步驟，都有一段製作中期間，您預先指定的 Amazon CloudWatch 警示會監控綠色機群上的指標。製作中期間結束並且沒有觸發警示後，綠色機群的作用中部分將繼續接收流量，並開始新步驟。如果在任何製作中期間觸發警示，則 100％ 的端點流量會回復到藍色機群。

下圖顯示線性流量轉移如何將流量路由至藍色和綠色機群。

![\[成功的三步驟線性流量從舊機群轉移到新機群。\]](http://docs.aws.amazon.com/zh_tw/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>

在設定具有線性流量轉移的部署之前，您必須先建立 CloudWatch 警示以監控端點中的指標。警示在製作中期間處於啟動中狀態，如果觸發任何警示，則所有端點流量都會回復到藍色機群。要瞭解如何在終端節點上設置 CloudWatch 警報，請參閱先決條件頁面[自動回復組態與監控](deployment-guardrails-configuration.md)。如需進一步了解 CloudWatch 警示，請參閱 *Amazon CloudWatch 使用者指南*中的[使用 Amazon CloudWatch 警示](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html)。

## 設定線性流量轉移
<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 或 AWS CLI 中的 [update-endpoint](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/update-endpoint.html) 命令來啟動部署。

**Topics**
+ [

### 如何更新端點 (API)
](#deployment-guardrails-blue-green-linear-configure-api-update)
+ [

### 如何使用現有的藍色/綠色更新政策 (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 範例示範如何透過線性流量轉移來更新端點。

```
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>"
                }
            ]
        }
    }
)
```

若要設定線性流量轉移選項，請執行下列動作：
+ 在 `EndpointName` 中，使用您要更新的現有端點名稱。
+ 在 `EndpointConfigName` 中，使用您要使用的端點組態名稱。
+ 在 `DeploymentConfig` 和 `BlueGreenUpdatePolicy` 下，在 `TrafficRoutingConfiguration` 中，將 `Type` 參數設定為 `LINEAR`。這會指定使用線性流量轉移的部署。
+ 在 `LinearStepSize` 欄位中，您可以透過修改 `Type` 和 `Value` 參數來變更步驟的大小。在 `Type` 中，使用 `CAPACITY_PERCENT`，表示您要用作刻度大小的綠色機群的百分比，然後設置 `Value` 為 `20`。在此範例中，您為每個流量轉移步驟開啟綠色機群容量的 20%。請注意，自訂線性刻度大小時，您應該只使用綠色機群容量 10-50% 的刻度。
+ 對於 `WaitIntervalInSeconds`，請使用 `300`。參數會告知 SageMaker AI 等待每個流量轉移之間的指定時間 (以秒為單位)。此間隔是每個線性步驟之間製作中期間的持續時間。在上述範例中，SageMaker AI 會在每個流量轉移之間等待 5 分鐘。
+ 對於 `TerminationWaitInSeconds`，請使用 `300`。參數會告知 SageMaker AI 在綠色機群完全作用後等待指定的時間量 (以秒為單位)，然後才終止藍色機群中的執行個體。在此範例中，SageMaker AI 會在最後製作中期間後等待 5 分鐘，然後才終止藍色機群。
+ 對於 `MaximumExecutionTimeoutInSeconds`，請使用 `3600`。此參數設定部署逾時前可以執行的時間上限。在上述範例中，您的部署有 1 小時的限制可完成。
+ 在 `AutoRollbackConfiguration` 中，在 `Alarms` 欄位內，您可以依據名稱新增您的 CloudWatch 警示。為您要使用的每個警示建立一個 `AlarmName: <your-cw-alarm>` 項目。

### 如何使用現有的藍色/綠色更新政策 (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 行為沒有變更。指定部署組態不會自動在端點上執行藍/綠更新。

使用 [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) 命令啟動藍色/綠色線性部署。

```
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>"}]}'
```

若要設定線性流量轉移選項，請執行下列動作：
+ 在 `endpoint-name` 中，使用您想更新的端點名稱。
+ 在 `endpoint-config-name` 中，使用您要使用的端點組態名稱。
+ 在 `deployment-config` 中，使用 [BlueGreenUpdatePolicy](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_BlueGreenUpdatePolicy.html) JSON 物件。

**注意**  
如果您希望將 JSON 對象保存在文件中，請參閱[正在生成AWS CLI骨架和輸入參數](https://docs.aws.amazon.com/cli/latest/userguide/cli-usage-skeleton.html)在*AWS CLI用戶指南*。

# 使用滾動式部署
<a name="deployment-guardrails-rolling"></a>

更新端點時，您可以指定滾動式部署，以逐步將流量從舊機群轉移到新機群。您可以控制流量轉移步驟的大小，並指定評估期間，以便在從舊機群終止執行個體之前，監控新執行個體是否存有問題。使用滾動式部署時，舊機群上的執行個體會在每次流量轉移到新機群之後清除，從而減少更新端點所需的額外執行個體數量。這對於需求量高的加速執行個體特別實用。

滾動式部署會以可設定的批次大小更新端點，逐漸將先前的模型版本部署取代為新版本。滾動式部署的流量轉移行為與藍/綠部署中的[線性流量轉移模式](https://docs.aws.amazon.com/sagemaker/latest/dg/deployment-guardrails-blue-green-linear.html)類似，但是與藍/綠部署相比，滾動式部署可提供您降低容量需求的好處。使用滾動式部署時，一次可以減少作用中的執行個體，而且您可以更精細地控制要在新機群中更新的執行個體數量。如有大型模型或具有許多執行個體的大型端點，則應考慮使用滾動式部署而非藍/綠部署。

下列清單說明 Amazon SageMaker AI 中滾動式部署的主要功能：
+ **製作期。**製作期是指在進入下一個部署階段之前監控新機群的設定時間。如果任何預先指定的警示在任何製作期間發生故障，則所有端點流量都會還原至舊的機群。製作期可以幫助您在永久轉移流量之前建立對更新的信心。
+ **滾動批次大小。**您可以精細控制流量轉移的每個批次大小，或是每個批次中要更新的執行個體數目。這個數字的範圍可以是您機群規模的 5-50%。您可以將批次大小指定為執行個體數目或機群的整體百分比。
+ **自動還原。**您可以指定 SageMaker AI 用來監控新機群的 Amazon CloudWatch 警示。如果更新的程式碼問題觸發任何警示，SageMaker AI 會啟動自動還原至舊機群，以維持可用性，進而將風險降至最低。

**注意**  
如果您的端點使用 [Exclusions](https://docs.aws.amazon.com/sagemaker/latest/dg/deployment-guardrails-exclusions.html) (排除項目) 頁面中列出的任何功能，則無法使用滾動式部署。

## 運作方式
<a name="deployment-guardrails-rolling-how-it-works"></a>

滾動部署期間，SageMaker AI 提供基礎結構，以便將流量從舊機群轉移至新機群，而無須一次佈建所有新執行個體。SageMaker AI 使用下列步驟來轉移流量：

1. SageMaker AI 會在新機群中佈建第一批執行個體。

1. 部分流量會從舊執行個體轉移到第一批新執行個體。

1. 製作期過後，如果沒有觸發任何 Amazon CloudWatch 警示，則 SageMaker AI 會清除一批舊執行個體。

1. SageMaker AI 會繼續分批佈建、轉移和清除執行個體，直到完成部署為止。

如果警示在其中一個製作期間觸發，則流量會以您指定的大小批次回復至舊機群。或者，您可以指定滾動部署，以便在警示中斷時將 100% 的流量轉移回舊機群。

下圖顯示成功的滾動式部署進展，如前面的步驟所述。

![\[滾動部署的流量從舊機群成功轉移至新機群的步驟。\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/deployment-guardrails-rolling-diagram.png)


若要建立滾動式部署，您只需要指定所需的部署組態。接著，SageMaker AI 會為您處理佈建新執行個體、終止舊執行個體並轉移流量。您可以透過現有的 [UpdateEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateEndpoint.html) 和 [CreateEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEndpoint.html) SageMaker API 和 AWS Command Line Interface 命令來建立和管理部署。

## 先決條件
<a name="deployment-guardrails-prereqs"></a>

在設定滾動式部署之前，您必須先建立 Amazon CloudWatch 警示以監看端點中的指標。如有任何警示在製作期間觸發，那麼流量就會開始回復到您的舊機群。如要了解如何在端點上設定 CloudWatch 警示，請參閱先決條件頁面的[自動回復組態和監控](https://docs.aws.amazon.com/sagemaker/latest/dg/deployment-guardrails-configuration.html)。如需有關 CloudWatch 警示的詳細資訊，請參閱 *Amazon CloudWatch 使用者指南*中的[使用 Amazon CloudWatch 警示](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html)。

此外，請檢閱 [Exclusions](https://docs.aws.amazon.com/sagemaker/latest/dg/deployment-guardrails-exclusions.html) (排除項目) 頁面，確定您的端點符合滾動式部署的需求。

## 確定滾動批次大小
<a name="deployment-guardrails-rolling-batch-size"></a>

在更新端點之前，請確定要用於將流量遞增轉移到新機群的批次大小。

對於滾動式部署，您可以指定機群容量的 5–50% 的批次大小。如果您選擇大型批次大小，部署會更快完成。不過請記住，端點在更新時需要更多容量，大致上是批次大小的額外負荷。如果您選擇較小的批次大小，部署會花費較長的時間，但在部署期間使用的容量較少。

## 設定滾動式部署
<a name="deployment-guardrails-rolling-configure"></a>

準備好部署並為您的端點設定 CloudWatch 警示後，您可以使用 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 Command Line Interface 來啟動部署。

**如何更新端點**

下列範例顯示如何透過 Boto3 SageMaker AI 用戶端的 [update\$1endpoint](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker/client/update_endpoint.html) 方法以使用滾動式部署來更新端點。

若要設定滾動式部署，請使用下列範例和欄位：
+ 針對 `EndpointName`，請使用您要更新的現有端點名稱。
+ 針對 `EndpointConfigName`，請使用您要使用的端點組態名稱。
+ 在 `AutoRollbackConfiguration` 物件的 `Alarms` 欄位中，您可以依名稱新增 CloudWatch 警示。為您要使用的每一個警示建立一個 `AlarmName: <your-cw-alarm>` 項目。
+ 在 `DeploymentConfig` 底下，為 `RollingUpdatePolicy` 物件指定下列欄位：
  + `MaximumExecutionTimeoutInSeconds` — 總部署的時間限制。超出此限制會導致逾時。您可以為此欄位指定的最大值為 28800 秒或 8 小時。
  + `WaitIntervalInSeconds` — 製作期間的長度，在此期間，SageMaker AI 會監控新機群上每個批次的警示。
  + `MaximumBatchSize` — 指定您要使用的批次之 `Type` (執行個體計數或機群的整體百分比) 及 `Value`，或每個批次的大小。
  + `RollbackMaximumBatchSize` — 使用此物件可指定回復策略，以防警示觸發。指定您要使用的批次之 `Type` (執行個體計數或機群的整體百分比) 及 `Value`，或每個批次的大小。如未指定這些欄位，或將該值設定為端點的 100%，則 SageMaker AI 會使用藍/綠復原策略，並在警示出現時將所有流量復原至舊機群。

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

response = client.update_endpoint(
    EndpointName="<your-endpoint-name>",
    EndpointConfigName="<your-config-name>",
    DeploymentConfig={
        "AutoRollbackConfiguration": {
            "Alarms": [
                {
                    "AlarmName": "<your-cw-alarm>"
                },
            ]
        },
        "RollingUpdatePolicy": { 
            "MaximumExecutionTimeoutInSeconds": number,
            "WaitIntervalInSeconds": number,
            "MaximumBatchSize": {
                "Type": "INSTANCE_COUNT" | "CAPACITY_PERCENTAGE" (default),
                "Value": number
            },
            "RollbackMaximumBatchSize": {
                "Type": "INSTANCE_COUNT" | "CAPACITY_PERCENTAGE" (default),
                "Value": number
            },
        }  
    }
)
```

更新端點後，您可能需要檢查滾動式部署的狀態並檢查端點的運作狀態。您可以在 SageMaker AI 主控台中檢閱端點狀態，也可以使用 [DescribeEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeEndpoint.html) API 檢閱端點的狀態。

在 `DescribeEndpoint` API 傳回的 `VariantStatus` 物件中，`Status` 欄位會告訴您端點目前的部署或操作狀態。如需有關可能狀態及其含義的詳細資訊，請參閱 [ProductionVariantStatus](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ProductionVariantStatus.html)。

如果您嘗試執行滾動式部署，且端點的狀態為 `UpdateRollbackFailed`，請參閱下一節以取得故障診斷說明。

## 失敗處理
<a name="deployment-guardrails-rolling-failures"></a>

如果您的滾動式部署失敗，並且自動回復也失敗，則您的端點可能會保留為 `UpdateRollbackFailed` 的狀態。此狀態表示不同的端點組態會部署到端點後面的執行個體，而您的端點會使用新舊端點組態的服務。

您可以再次呼叫 [UpdateEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateEndpoint.html) API，將您的端點回復為良好狀態。指定所需的端點組態和部署組態 (可以是滾動式部署、藍/綠部署，或兩者皆非) 以更新您的端點。

您可以呼叫 [DescribeEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeEndpoint.html) API 來再次檢查端點的運作狀態，這會在 `VariantStatus` 物件中以 `Status` 欄位的形式傳回。如果更新成功，則您端點的 `Status` 會返回 `InService`。

# Exclusions
<a name="deployment-guardrails-exclusions"></a>

執行藍/綠或滾動部署時，您的新端點組態必須具有與舊端點組態相同的變體名稱。還有基於功能的排除項目，會使您的端點此時與部署防護機制不相容。如果您的端點使用以下任何功能，則無法在端點上使用部署防護機制，且您的端點將回復為使用藍/綠部署以及一次全部流量轉移，而且沒有最後的製作中期間：
+ Marketplace 容器
+ 使用 Inf1 (推論型) 執行個體的端點

如果您正在進行滾動部署，還有其他基於功能的排除項目：
+ 無伺服器推論端點
+ 多變體推論端點