

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

# SageMaker Edge Manager 中裝置和機群設定
<a name="edge-device-fleet"></a>

機群是邏輯分組裝置的集合，可用來收集和分析資料。您可以使用 SageMaker Edge Manager 在智慧型相機、智慧型喇叭、機器人和其他 Edge 裝置的機群上操作機器學習模型。

使用 適用於 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>

您可以使用 適用於 Python (Boto3) 的 AWS SDK 或透過 SageMaker AI 主控台 [https://console.aws.amazon.com/sagemaker](https://console.aws.amazon.com/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 憑證向 進行身分驗證，然後從與 AWS IoT 角色別名相關聯的 IAM 角色取得短期 AWS 憑證。

用 `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>

您可以使用 Amazon SageMaker AI 主控台建立 Edge Manager 封裝任務，網址為 [https://console.aws.amazon.com/sagemaker](https://console.aws.amazon.com/sagemaker/)。

1. 在 SageMaker AI 主控台中，選擇 **Edge Manager**，然後選擇 **Edge 裝置機群**。

1. 選擇**建立裝置機群**。  
![\[主控台中建立裝置機群的位置。\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/smith/create-device-button-edited.png)

1. 在**裝置機群名稱**欄位中輸入裝置機群的名稱。選擇**下一步**。  
![\[主控台中裝置機群屬性區段內下一步按鈕的位置。\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/smith/create-device-fleet-filled.png)

1. 在**輸出組態**頁面上，指定要在其中儲存裝置機群範例資料的 Amazon S3 儲存貯體 URI。您也可以選擇性地新增加密金鑰，方法是從下拉式清單中選擇現有的 AWS KMS 金鑰，或輸入金鑰的 ARN。選擇**提交**。  
![\[主控台中範例輸出組態頁面。\]](http://docs.aws.amazon.com/zh_tw/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 Edge Manager 的任何部分，都需要進行裝置註冊。

您可以使用 適用於 Python (Boto3) 的 AWS SDK 或透過位於 https：//[https://console.aws.amazon.com/sagemaker](https://console.aws.amazon.com/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 角色。

如需深入範例或[實作教學中的 Explore AWS IoT Core 服務](https://docs.aws.amazon.com/iot/latest/developerguide/iot-gs-first-thing.html)，請參閱 [入門指南](https://docs.aws.amazon.com/sagemaker/latest/dg/edge-manager-getting-started.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>

您可以使用 SageMaker AI 主控台註冊您的裝置，網址為 [https://console.aws.amazon.com/sagemaker](https://console.aws.amazon.com/sagemaker/)。

1. 在 SageMaker AI 主控台中，選擇 **Edge 推論**，然後選擇 **Edge 裝置**。

1. 選擇**註冊裝置**。  
![\[主控台其 Edge 裝置區段中註冊裝置的位置。\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/smith/register-device-button.png)

1. 在**裝置屬性**區段中，在**裝置機群名稱**欄位下輸入裝置所屬的機群名稱。選擇**下一步**。  
![\[主控台中的裝置屬性區段。\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/smith/register-devices-empty.png)

1. 在**裝置來源**區段中，逐一新增您的裝置。您必須為機群中的每個裝置包含一個**裝置名稱**。您可以選擇性地提供描述 (在**描述**欄位中) 和物聯網 (IoT) 物件名稱 (在 **IoT 名稱**欄位中)。新增所有裝置後，選擇**提交**。  
![\[主控台中的裝置來源區段。\]](http://docs.aws.amazon.com/zh_tw/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 的不同 API。使用最適合您使用案例的 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 檢查裝置製作的上個活動訊號。指定裝置的名稱和 Edge 裝置所屬的機群。

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