一次全部流量轉移 - Amazon SageMaker

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

一次全部流量轉移

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

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

從舊機群成功將 100% 流量轉移到新機群。

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

必要條件

在設定具有所有流量轉移的部署之前,您必須先建立 Amazon CloudWatch 警示以觀看端點中的指標。如果有任何警報在製作中期間觸發,那麼流量就會回復到您的藍色機群。要了解如何在端點上設置 CloudWatch 警報,請參閱先決條件頁面自動回復組態與監控。若要進一步了解 CloudWatch 警示,請參閱 Amazon 使用 CloudWatch 者指南中的使用 Amazon CloudWatch 警示

設定一次全部流量轉移

準備好進行部署並為端點設定 CloudWatch 警示後,您可以使用中的 SageMaker UpdateEndpointAPI 或更新端點命令 AWS Command Line Interface 來啟動部署。

如何更新端點 (API)

下列範例顯示如何使用 Amazon SageMaker API UpdateEndpoint中的流量轉移一次更新端點。

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 中,使用您要使用的端點組態名稱。

  • DeploymentConfigBlueGreenUpdatePolicy 下,在 TrafficRoutingConfiguration 中,將 Type 參數設定為 ALL_AT_ONCE。這會指定使用一次全部流量轉移模式的部署。

  • 對於 TerminationWaitInSeconds,請使用 600。此參數會告知 SageMaker 在綠色叢集完全啟動後等待指定的時間量 (以秒為單位),然後終止藍色叢集中的執行個體。在此範例中,在最後烘烤期間之後 SageMaker 等待 10 分鐘,然後才終止藍色車隊。

  • 對於 MaximumExecutionTimeoutInSeconds,請使用 1800。此參數設定部署在逾時前可以執行的時間上限。在上述範例中,您的部署時間上限為 30 分鐘。

  • Alarms欄位中AutoRollbackConfiguration,您可以依名稱新增 CloudWatch 警報。為您要使用的每個警示建立一個 AlarmName: <your-cw-alarm> 項目。

如何使用現有的藍色/綠色更新政策 (API) 來更新端點

使用 CreateEndpointAPI 建立端點時,您可以選擇性地指定部署組態,以便在 future 的端點更新時重複使用。您可以使用與上一個 UpdateEndpoint API 範例相同的DeploymentConfig選項。 CreateEndpoint API 行為沒有變更。指定部署組態不會自動在端點上執行藍/綠更新。

使用 UpdateEndpointAPI 更新端點時,會發生使用先前部署設定的選項。更新端點時,您可以使用 RetainDeploymentConfig 選項來保留您在建立端點時指定的部署組態。

呼叫 UpdateEndpointAPI 時,請設定RetainDeploymentConfigTrue保留原始端點設定中的DeploymentConfig選項。

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

如何更新端點 (CLI)

如果您使用的是 AWS CLI,下列範例會示範如何使用 update 端點令來啟動藍色/綠色全部部署。

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,請使用 BlueGreenUpdatePolicyJSON 物件。

注意

如果您想要將 JSON 物件儲存在檔案中,請參閱《AWS CLI 使用指南》中的〈產生 AWS CLI 架構和輸入參數