

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

# 蓝绿部署
<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>

利用蓝绿部署中的各种流量转移模式，您可以更精细地控制蓝色实例集和绿色实例集之间的流量转移。在蓝绿部署中，可用的流量转移模式包括一次性全部流量转移、金丝雀流量转移和线性流量转移。下表显示了各个选项的比较。

**重要**  
对于涉及多阶段流量转移或烘焙期的蓝绿部署，无论发送到实例集的流量如何，您都需要为更新期间的两个实例集付费。与之对比的是使用一次性全部流量转移且没有烘焙期的蓝绿部署，在此模式下，更新期间您只需为一个实例集付费。


| 名称 | 这是什么？ | 优点 | 缺点 | 建议 | 
| --- | --- | --- | --- | --- | 
| 一次性全部 | 在一个步骤中将所有流量转移到新的实例集。 | 最大限度地缩短更新整体持续时间。 | 回归更新会影响 100% 的流量。 | 使用此选项可以将更新时间和成本降至最低。 | 
| 金丝雀 | 流量转移分两个步骤。第一个（金丝雀）步骤转移了一小部分流量，然后是第二步，这将转移其余流量。 | 将回归更新的影响范围限制为仅限于金丝雀实例集。 | 两个实例集在整个部署中都并行运行。 | 使用此选项，可在尽可能减少回归更新的影响范围，与尽可能减少两个实例集运行时间之间取得平衡。 | 
| 线性 | 按照预先指定的等距步骤数，转移固定比例的流量。 | 通过多个步骤来转移流量，最大限度地降低回归更新的风险。 | 更新持续时间和成本与步骤数成正比。 | 使用此选项可以将部署分散到多个步骤，从而最大限度地降低风险。 | 

## 开始使用
<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 命令创建和管理部署。请注意，如果您的端点使用[排除项](deployment-guardrails-exclusions.md)页面中列出的任何功能，则无法使用部署防护机制。有关如何设置部署的更多详细信息，请参阅各个部署页面：
+ [蓝绿更新与一次性全部流量转移](deployment-guardrails-blue-green-all-at-once.md)
+ [蓝绿更新与金丝雀流量转移](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_cn/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 用户指南》**中的[生成 AWS CLI 骨架和输入参数](https://docs.aws.amazon.com/cli/latest/userguide/cli-usage-skeleton.html)。

# 使用金丝雀流量转移
<a name="deployment-guardrails-blue-green-canary"></a>

借助金丝雀流量转移，您可以在新实例集上测试部分端点流量，而旧实例集为其余流量提供服务。此测试步骤是一个安全防护机制，可在将所有流量转移到新实例集之前验证新实例集是否正常运转。您仍然可获得蓝绿部署的益处，而增加的金丝雀功能则在让新（绿色）实例集处理全部流量之前，确保该实例集可以处理推理请求。

在您的绿色实例集内，开启接收流量的部分称为金丝雀，您可以选择此金丝雀的大小。请注意，金丝雀的大小应小于或等于新实例集容量的 50%。在烘焙期结束且没有触发预先指定的 Amazon CloudWatch 警报，其余流量就会从旧的（蓝色）实例集转移到绿色实例集。金丝雀流量转移可在部署期间提供更高的安全性，因为更新后模型的任何问题都只会影响金丝雀。

下图显示了金丝雀流量转移如何管理蓝色实例集和绿色实例集之间的流量分布。

![\[成功完成的从旧实例集到新实例集的两步金丝雀流量转移。\]](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/images/deployment-guardrails-blue-green-canary.png)


在 SageMaker AI 预调配了绿色实例集之后，SageMaker AI 会将一部分传入流量（例如 25%）路由到金丝雀。然后烘焙期开始，在此期间，您的 CloudWatch 警报将监控绿色实例集的性能。在此期间，蓝色实例集和绿色实例集均有一部分资源处于活动状态来接收流量。如果在烘焙期间触发了任何警报，则 SageMaker AI 会启动回滚，所有流量都路由到蓝色实例集。如果没有触发任何警报，那么所有的流量都会转移到绿色实例集，并且还有最后的烘焙期。如果最后的烘焙期结束且没有触发任何警报，则绿色实例集将为所有流量提供服务，SageMaker AI 将终止蓝色实例集。

## 先决条件
<a name="deployment-guardrails-blue-green-canary-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-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 示例展示了如何使用金丝雀流量转移来更新端点。

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

要配置金丝雀流量转移选项，请执行以下操作：
+ 对于 `EndpointName`，请使用要更新的现有端点的名称。
+ 对于 `EndpointConfigName`，请使用要使用的端点配置的名称。
+ 在 `DeploymentConfig` 和 `BlueGreenUpdatePolicy` 下的 `TrafficRoutingConfiguration` 中，将 `Type` 参数设置为 `CANARY`。这指定了部署使用金丝雀流量转移。
+ 在 `CanarySize` 字段中，您可以通过修改 `Type` 和 `Value` 参数来更改金丝雀的大小。对于 `Type`，请使用 `CAPACITY_PERCENT`，此值表示您要用作金丝雀的绿色实例集的百分比，然后将 `Value` 设置为 `30`。在此示例中，您将绿色实例集的 30% 容量用作金丝雀。请注意，金丝雀规模应等于或小于绿色实例集容量的 50%。
+ 对于 `WaitIntervalInSeconds`，请使用 `600`。该参数告知 SageMaker AI 在每次间隔转移之间等待指定的时间量（以秒为单位）。此间隔是金丝雀烘焙期的持续时间。在前面的示例中，SageMaker AI 在金丝雀转移后等待 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) 命令启动蓝绿金丝雀部署。

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

要配置金丝雀流量转移选项，请执行以下操作：
+ 对于 `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)。

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

利用线性流量转移，您可以逐步将流量从旧实例集（蓝色实例集）转移到新实例集（绿色实例集）。通过线性流量转移，您可以分多个步骤转移流量，从而最大限度地减少端点中断的可能性。此蓝绿部署选项让您可对流量转移进行最精细的控制。

您可以选择在每个步骤中，激活的实例数或者绿色实例集容量的百分比。每个线性步骤选择的容量只应为绿色实例集容量的 10-50% 之间。每个步骤都有一个烘焙期，在此期间，您预先指定的 Amazon CloudWatch 警报会监控蓝色实例集上的指标。烘焙期结束并且没有触发警报后，绿色实例集的活跃部分将继续接收流量，并开始新的步骤。如果在任意烘焙期中触发警报，则所有端点流量回滚到蓝色实例集。

下图显示了线性流量转移如何将流量路由到蓝色和绿色实例集。

![\[成功完成的从旧实例集到新实例集的三步线性流量转移。\]](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/images/deployment-guardrails-blue-green-linear.png)


SageMaker AI 预调配新实例集之后，将弃用绿色实例集的第一部分并接收流量。SageMaker AI 在蓝色实例集内停用相同大小的部分，烘焙期开始。如果触发了任意警报，所有端点流量都会回滚到蓝色实例集。如果烘焙期结束，则开始下一步。继续激活绿色实例集的另一部分并接收流量，停用一部分蓝色实例集，开始下一个烘焙期。重复相同的流程，直到蓝色实例集完全停用，绿色实例集全部处于活动状态并接收所有流量。如果在任何时间触发了警报，SageMaker AI 就会终止切换过程，所有流量将回滚到蓝色实例集。

## 先决条件
<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 用户指南》**中的[生成 AWS CLI 骨架和输入参数](https://docs.aws.amazon.com/cli/latest/userguide/cli-usage-skeleton.html)。