

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

# 在 SageMaker Edge Manager 中为设备和队列进行设置
<a name="edge-device-fleet"></a>

队列是可用于收集和分析数据的逻辑分组设备的集合。您可以使用 SageMaker Edge Manager 在一组智能相机、智能扬声器、机器人和其他边缘设备上操作机器学习模型。

创建队列并通过 AI 控制台以编程方式注册您的设备， 适用于 Python (Boto3) 的 AWS SDK 或者通过 SageMaker AI 控制台注册您的设备。

**Topics**
+ [创建实例集](edge-device-fleet-create.md)
+ [注册设备](edge-device-fleet-register.md)
+ [检查状态](edge-device-fleet-check-status.md)

# 创建实例集
<a name="edge-device-fleet-create"></a>

你可以使用 AI 控制台 /sagemaker 以编程方式创建舰队， 适用于 Python (Boto3) 的 AWS SDK 也可以通过 SageMaker AI 控制台 [https://console.aws.amazon.com/](https://console.aws.amazon.com/sagemaker/)sagemaker 创建舰队。

## 创建队列 (Boto3)
<a name="edge-device-fleet-create-boto3"></a>

使用 `CreateDeviceFleet` API 创建队列。为队列指定名称，为该`RoleArn`字段指定您的 AWS IoT 角色 ARN，以及您希望设备存储采样数据的 Amazon S3 URI。

您可以选择添加舰队的描述、标签和 AWS KMS 密钥 ID。

```
import boto3

# Create SageMaker client so you can interact and manage SageMaker resources
sagemaker_client = boto3.client("sagemaker", region_name="aws-region")

sagemaker_client.create_device_fleet(
    DeviceFleetName="sample-fleet-name",
    RoleArn="arn:aws:iam::999999999:role/rolename", # IoT Role ARN
    Description="fleet description",
    OutputConfig={
        S3OutputLocation="s3://bucket/",
        KMSKeyId: "1234abcd-12ab-34cd-56ef-1234567890ab",
    },
        Tags=[
        {
            "Key": "string", 
            "Value" : "string"
         }
     ],
)
```

创建设备队列时会为您创建 AWS IoT 角色别名。 AWS IoT 角色别名提供了一种机制，让连接的设备 AWS IoT 使用 X.509 证书进行身份验证，然后从与角色别名关联的 IAM 角色获取短期 AWS 证书。 AWS IoT 

使用 `DescribeDeviceFleet` 获取角色别名和 ARN。

```
# Print Amazon Resource Name (ARN) and alias that has access 
# to AWS Internet of Things (IoT).
sagemaker_client.describe_device_fleet(DeviceFleetName=device_fleet_name)['IotRoleAlias']
```

使用 `DescribeDeviceFleet` API 获取您创建的队列的描述。

```
sagemaker_client.describe_device_fleet(
    DeviceFleetName="sample-fleet-name"
)
```

默认情况下，它会返回队列名称、设备队列 ARN、Amazon S3 存储桶 URI、IAM 角色 AWS IoT、在中创建的角色别名、创建队列的时间戳以及上次修改队列的时间戳。

```
{ "DeviceFleetName": "sample-fleet-name",
  "DeviceFleetArn": "arn:aws:sagemaker:us-west-2:9999999999:device-fleet/sample-fleet-name",
  "IAMRole": "arn:aws:iam::999999999:role/rolename",
  "Description": "this is a sample fleet",
  "IoTRoleAlias": "arn:aws:iot:us-west-2:9999999999:rolealias/SagemakerEdge-sample-fleet-name"
  "OutputConfig": {
              "S3OutputLocation": "s3://bucket/folder",
              "KMSKeyId": "1234abcd-12ab-34cd-56ef-1234567890ab"
   },
   "CreationTime": "1600977370",
   "LastModifiedTime": "1600977370"}
```

## 创建队组 (控制台)
<a name="edge-device-fleet-create-console"></a>

你可以使用 [https://console.aws.amazon.com/s](https://console.aws.amazon.com/sagemaker/) agemaker 上的亚马逊 A SageMaker I 控制台创建 Edge Manager 打包任务。

1. 在 SageMaker AI 控制台中，选择**边缘管理器**，然后选择**边缘设备队列**。

1. 选择**创建设备队列**。  
![\[管理控制台中创建设备实例集的位置。\]](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/images/smith/create-device-button-edited.png)

1. 在**设备队列名称**字段中输入设备队列的名称。选择**下一步**。  
![\[管理控制台中设备实例集属性部分中下一步按钮的位置。\]](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/images/smith/create-device-fleet-filled.png)

1. 在**输出配置**页面上，指定要存储设备队列中的示例数据的 Amazon S3 存储桶 URI。您也可以选择通过从下拉列表中选择现有 AWS KMS 密钥或输入密钥的 ARN 来添加加密密钥。选择**提交**。  
![\[管理控制台中的示例输出配置页面。\]](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/images/smith/create-device-fleet-output-filled.png)

1. 选择要重定向到设备队列详细信息的设备队列的名称。此页面显示设备队列的名称、ARN、描述（如果您提供的话）、队列的创建日期、上次修改队列的时间、Amazon S3 存储桶 URI、 AWS KMS 密钥 ID（如果提供）、 AWS IoT 别名（如果提供）和 IAM 角色。如果添加了标签，它们将在**设备队列标签**部分显示。

# 注册设备
<a name="edge-device-fleet-register"></a>

**重要**  
使用 SageMaker 边缘管理器的任何部分都需要注册设备。

你可以使用 适用于 Python (Boto3) 的 AWS SDK 或通过 [https://console.aws.amazon.com/](https://console.aws.amazon.com/sagemaker/)sagemaker 上的 SageMaker AI 控制台以编程方式创建舰队。

## 注册设备 (Boto3)
<a name="edge-device-fleet-register-boto3"></a>

要注册您的设备，请先创建并注册一个 AWS IoT 事物对象，然后配置一个 IAM 角色。 SageMaker Edge Manager 利用这些 AWS IoT Core 服务来促进边缘设备和云之间的连接。将设备设置为与 Edge Manager 配合使用后，您可以利用现有 AWS IoT 功能。

要将设备连接到设备， AWS IoT 您需要创建 AWS IoT 事物对象、创建和注册客户端证书 AWS IoT，以及为设备创建和配置 IAM 角色。

有关深入的示例，请参阅《[入门指南》](https://docs.aws.amazon.com/sagemaker/latest/dg/edge-manager-getting-started.html)，或者参阅 “[探索 AWS 物联网核心服务” 动手教程](https://docs.aws.amazon.com/iot/latest/developerguide/iot-gs-first-thing.html)。

使用 `RegisterDevices` API 注册您的设备。提供您希望设备加入的队列的名称以及设备的名称。您可以选择为与设备关联的设备、标签和 AWS IoT 事物名称添加描述。

```
sagemaker_client.register_devices(
    DeviceFleetName="sample-fleet-name",
    Devices=[
        {          
            "DeviceName": "sample-device-1",
            "IotThingName": "sample-thing-name-1",
            "Description": "Device #1"
        }
     ],
     Tags=[
        {
            "Key": "string", 
            "Value" : "string"
         }
     ],
)
```

## 注册设备（控制台）
<a name="edge-device-fleet-register-console"></a>

你可以使用 [https://console.aws.amazon.com/s](https://console.aws.amazon.com/sagemaker/) agemaker 上的 SageMaker AI 控制台注册你的设备。

1. 在 SageMaker AI 控制台中，选择**边缘推理**，然后选择**边缘设备**。

1. 选择**注册设备**。  
![\[管理控制台的边缘设备部分中注册设备的位置。\]](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/images/smith/register-device-button.png)

1. 在**设备属性**部分中，在**设备队列名称**字段下输入设备所属队列的名称。选择**下一步**。  
![\[管理控制台中的设备属性部分。\]](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/images/smith/register-devices-empty.png)

1. 在**设备源**部分，逐一添加您的设备。您必须为队列中的每台设备提供**设备名称**。您可以选择提供描述（在**描述**字段中）和物联网 (IoT) 对象名称（在 **IoT 名称**字段中)。添加完所有设备后，选择**提交**。  
![\[管理控制台中的设备源部分。\]](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/images/smith/register-devices-device-source.png)

   **设备**页面显示您添加的设备的名称、它所属的队列、注册时间、上次心跳以及描述和名称（如果您提供了描述和 AWS IoT 名称）。

   选择设备可查看设备的详细信息，包括设备名称、队列、ARN、描述、IoT 事物名称、设备的注册时间和最后一次心跳。

# 检查状态
<a name="edge-device-fleet-check-status"></a>

检查您的设备或队列是否已连接并对数据进行采样。通过手动或自动执行定期检查，您可以检查设备或队列是否正常工作。

使用位于的 Amazon S3 控制台[https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)以交互方式选择队列进行状态检查。您也可以使用 适用于 Python (Boto3) 的 AWS SDK。以下内容与可用于检查设备或机队状态的 Boto3 有所不同 APIs 。使用最适合您的使用案例的 API。
+ **检查单个设备。**

  要检查单个设备的状态，请使用 `DescribeDevice` API。如果已将模型部署到设备上，则会提供包含一个或多个模型的列表。

  ```
  sagemaker_client.describe_device(
      DeviceName="sample-device-1",
      DeviceFleetName="sample-fleet-name"
  )
  ```

  运行 `DescribeDevice` 会返回：

  ```
  { "DeviceName": "sample-device".
    "Description": "this is a sample device",
    "DeviceFleetName": "sample-device-fleet",
    "IoTThingName": "SampleThing",
    "RegistrationTime": 1600977370,
    "LatestHeartbeat": 1600977370,
    "Models":[
          {
           "ModelName": "sample-model", 
           "ModelVersion": "1.1",
           "LatestSampleTime": 1600977370,
           "LatestInference": 1600977370 
          }
     ]
  }
  ```
+ **检查设备队列。**

  要检查队列的状态，请使用 `GetDeviceFleetReport` API。提供设备队列的名称以获取队列摘要。

  ```
  sagemaker_client.get_device_fleet_report(
      DeviceFleetName="sample-fleet-name"
  )
  ```
+ **检查心跳。**

  队列中的每个设备都会定期生成信号或“心跳”。心跳可用于检查设备是否正在与 Edge Manager 进行通信。如果最后一个心跳的时间戳没有更新，设备可能出现了故障。

  使用 `DescribeDevice` API 检查设备发出的最后一次心跳。指定设备的名称和边缘设备所属的队列。

  ```
  sagemaker_client.describe_device(
      DeviceName="sample-device-1",
      DeviceFleetName="sample-fleet-name"
  )
  ```