

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

# Package 一個模型 (Boto3)
<a name="edge-packaging-job-boto3"></a>

您可以使用 適用於 Python (Boto3) 的 AWS SDK建立 SageMaker Edge Manager 封裝任務。繼續之前，請確認您已滿足[完成事前準備](edge-packaging-job-prerequisites.md)。

若要請求 Edge 封裝任務，請使用 `CreateEdgePackagingJob`。您需要提供 Edge 封裝任務的名稱、SageMaker Neo 編譯任務的名稱、角色 Amazon Resource Name (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` 並提供區分大小寫的 Edge 封裝任務名稱來檢查 Edge 封裝任務的狀態：

```
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` 並提供 Edge 封裝任務的名稱。

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

如需 Edge Manager API 的完整清單，請參閱 [Boto3 文件](https://boto3.amazonaws.com/v1/documentation/api/latest/index.html)。