

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

# 使用 SageMaker 边缘管理器部署 API 直接部署 Model Package
<a name="edge-deployment-plan-api"></a>

SageMaker Edge Manager 提供了一个部署 API，您无需使用该API即可将模型部署到设备目标 AWS IoT Greengrass。当您想独立于固件更新或应用程序部署机制来更新模型时，它很有用。您可以使用 API 将边缘部署集成到 CI/CD 工作流程中，以便在验证模型的准确性后自动部署模型。API 还为您提供了便捷的回滚和分段推出选项，可确保模型在更大范围推出之前在特定环境中运行良好。

要使用 Edge Manager 部署 API，请先编译并打包您的模型。有关如何编译和打包模型的信息，请参阅[为部署模型做好准备](edge-getting-started-step2.md)。本指南的以下部分说明了在编译和打包模型之后，如何使用 SageMaker API 创建边缘部署。

**Topics**
+ [创建边缘部署计划](#create-edge-deployment-plan)
+ [启动边缘部署](#start-edge-deployment-stage)
+ [检查部署的状态](#describe-edge-deployment-status)

## 创建边缘部署计划
<a name="create-edge-deployment-plan"></a>

您可以使用 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEdgeDeploymentPlan.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEdgeDeploymentPlan.html) API 创建边缘部署计划。部署计划可以分为多个阶段。您可以将每个阶段配置为将部署推广到部分边缘设备（按百分比或按设备名称）。您还可以配置在每个阶段如何处理部署失败。

以下代码片段显示了如何创建边缘部署计划（包含一个将编译后的模型打包部署到 2 个特定边缘设备的阶段）：

```
import boto3

client = boto3.client("sagemaker")

client.create_edge_deployment_plan(
    EdgeDeploymentPlanName="edge-deployment-plan-name",
    DeviceFleetName="device-fleet-name",
    ModelConfigs=[
        {
            "EdgePackagingJobName": "edge-packaging-job-name",
            "ModelHandle": "model-handle"
        }
    ],
    Stages=[
        {
            "StageName": "stage-name",
            "DeviceSelectionConfig": {
                "DeviceSubsetType": "SELECTION",
                "DeviceNames": ["device-name-1", "device-name-2"]
            },
            "DeploymentConfig": {
                "FailureHandlingPolicy": "ROLLBACK_ON_FAILURE"
            }
        }
    ]
)
```

如果要将模型部署到在设备队列中占有一定百分比的设备，则在上面的示例中将 `DeviceSubsetType` 的值设置为 `"PERCENTAGE"`，并将 `"DeviceNames": ["device-name-1", "device-name-2"]` 替换为 `"Percentage": desired-percentage`。

如果您想在验证测试部署成功后开始推出新阶段，则可以在使用 [CreateEdgeDeploymentStage](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEdgeDeploymentStage.html)API 创建部署计划后添加阶段。有关部署阶段的更多信息，请参阅[DeploymentStage。](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DeploymentStage.html)

## 启动边缘部署
<a name="start-edge-deployment-stage"></a>

创建部署计划和部署阶段后，您可以使用 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_StartEdgeDeploymentStage.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_StartEdgeDeploymentStage.html) API 开始部署。

```
client.start_edge_deployment_stage(
    EdgeDeploymentPlanName="edge-deployment-plan-name",
    StageName="stage-name"
)
```

## 检查部署的状态
<a name="describe-edge-deployment-status"></a>

您可以使用 [DescribeEdgeDeploymentPlan](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeEdgeDeploymentPlan.html)API 检查边缘部署的状态。

```
client.describe_edge_deployment_plan(
    EdgeDeploymentPlanName="edge-deployment-plan-name"
)
```