一次性全部流量转移 - Amazon SageMaker
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

一次性全部流量转移

使用一次性全部流量转移,您可以通过蓝绿部署这种安全防护机制,快速推出端点更新。您可以使用此流量转移选项来尽可能缩短更新的持续时间,同时仍可利用蓝绿部署提供的可用性保障。烘焙期功能可协助您在终止旧实例之前监控新实例的性能和功能性,确保您的新实例集可以完全正常工作。

下图显示了一次性全部流量转移如何管理新旧实例集。

100% 的流量从旧实例集成功转移到新实例集。

当您同时使用所有流量转移时,会将 100% 的流量 SageMaker 路由到新车队(绿色车队)。一旦绿色实例集开始接收流量,烘焙期即开始。烘焙周期是预先指定的 Amazon CloudWatch 警报监控绿色车队性能的设定时间。如果在烘焙期间没有警报跳动,则 SageMaker 终止旧舰队(蓝色舰队)。如果在烘焙期间触发了任何警报,则会启动自动回滚,将 100% 的流量转移回蓝色实例集。

先决条件

在设置同时进行流量转移的部署之前,您必须创建 Amazon CloudWatch 警报以监视来自终端节点的指标。如果在烘焙期间触发了任何警报,则流量将回滚到您的蓝色实例集。要了解如何在端点上设置 CloudWatch 警报,请参阅先决条件页面自动回滚配置和监控。要了解有关 CloudWatch 警报的更多信息,请参阅亚马逊 CloudWatch 用户指南中的使用亚马逊 CloudWatch 警报

配置一次性全部流量转移

准备好部署并设置终端节点 CloudWatch 警报后,即可使用中的 SageMaker UpdateEndpointAPI 或 update-endpoin t 命令 Amazon 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字段中,您可以按名称添加 CloudWatch 警报。AutoRollbackConfiguration为要使用的每个警报创建一个 AlarmName: <your-cw-alarm> 条目。

如何使用现有的蓝绿更新政策更新端点 (API)

使用 CreateEndpointAPI 创建终端节点时,您可以选择指定部署配置,以便在将来的终端节点更新中重复使用。您可以使用与前面的 UpdateEndpoint API 示例相同的DeploymentConfig选项。 CreateEndpoint API 行为没有变化。指定部署配置不会自动在端点上执行蓝绿更新。

使用 UpdateEndpointAPI 更新您的终端节点时,可以选择使用先前的部署配置。更新端点时,您可以使用 RetainDeploymentConfig 选项,以保留创建端点时您指定的部署配置。

调用 UpdateEndpointAPI 时,请RetainDeploymentConfig将设置True为以保留原始端点配置中的DeploymentConfig选项。

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

如何更新端点 (CLI)

如果您使用的是 Amazon CLI,则以下示例说明如何使用 update-end p oint 命令一次性启动蓝/绿部署。

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 对象保存在文件中,请参阅Amazon CLI 用户指南中的生成 Amazon CLI 框架和输入参数