

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

# 打包模型 (Boto3)
<a name="edge-packaging-job-boto3"></a>

您可以使用创建 SageMaker Edge Manager 打包作业 适用于 Python (Boto3) 的 AWS SDK。在继续之前，请确保您已经满足[满足先决条件](edge-packaging-job-prerequisites.md)。

要请求边缘打包作业，请使用 `CreateEdgePackagingJob`。您需要为边缘打包任务提供名称、 SageMaker Neo 编译任务的名称、角色的亚马逊资源名称 (ARN)、模型的名称、模型的版本以及要存储打包任务输出的 Amazon S3 存储桶 URI。请注意，Edge Manager 打包作业名称和 SageMaker Neo 编译作业名称区分大小写。

```
# Import AWS SDK for Python (Boto3)
import boto3

# Create Edge client so you can submit a packaging job
sagemaker_client = boto3.client("sagemaker", region_name={{'aws-region'}})

sagemaker_client.create_edge_packaging_job(
    EdgePackagingJobName={{"edge-packaging-name"}},
    CompilationJobName={{"neo-compilation-name"}},
    RoleArn={{"arn:aws:iam::99999999999:role/rolename"}},
    ModelName={{"sample-model-name"}},
    ModelVersion={{"model-version"}},
    OutputConfig={
        "S3OutputLocation": "s3://{{your-bucket}}/",
    }
)
```

您可以使用 `DescribeEdgePackagingJob` 并提供区分大小写的边缘打包作业名称来检查边缘打包作业的状态：

```
response = sagemaker_client.describe_edge_packaging_job(
                                    EdgePackagingJobName={{"edge-packaging-name"}})
```

这将返回一个可用于轮询打包作业状态的字典：

```
# Optional - Poll every 30 sec to check completion status
import time

while True:
    response = sagemaker_client.describe_edge_packaging_job(
                                         EdgePackagingJobName={{"edge-packaging-name"}})
    
    if response['EdgePackagingJobStatus'] == 'Completed':
        break
    elif response['EdgePackagingJobStatus'] == 'Failed':
        raise RuntimeError('Packaging job failed')
    print('Packaging model...')
    time.sleep(30)
print('Done!')
```

有关打包作业的列表，请使用 `ListEdgePackagingJobs`。您可以使用此 API 搜索特定的打包作业。提供部分名称以筛选 `NameContains` 的打包作业名称，提供 `ModelNameContains` 的部分名称以筛选模型名称中包含您提供的名称的作业。还可以指定使用 `SortBy` 对哪一列进行排序，以及使用 `SortOrder` 按哪个方向排序（`Ascending` 或 `Descending`）。

```
sagemaker_client.list_edge_packaging_jobs(
    "NameContains": {{"sample"}},
    "ModelNameContains": {{"sample"}},
    "SortBy": {{"column-name"}},
    "SortOrder": "Descending"
)
```

要停止打包作业，请使用 `StopEdgePackagingJob` 并提供边缘打包作业的名称。

```
sagemaker_client.stop_edge_packaging_job(
        EdgePackagingJobName={{"edge-packaging-name"}}
)
```

有关 Edge Manager API 的完整列表，请参阅 [Boto3 文档](https://boto3.amazonaws.com/v1/documentation/api/latest/index.html)。