

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

# 設定
<a name="device-advisor-setting-up"></a>

第一次使用 Device Advisor 之前，請先完成以下任務：

## 建立 IoT 物件
<a name="da-create-thing-certificate"></a>

首先，建立 IoT 物件並將憑證連接至該物件。如需如何建立物件的教學課程，請參閱[建立物件](https://docs.aws.amazon.com/iot/latest/developerguide/create-iot-resources.html#create-aws-thing)。

## 建立要用作裝置角色的 IAM 角色
<a name="da-iam-role"></a>

**注意**  
您可以使用 Device Advisor 主控台快速建立裝置角色。若要了解如何使用 Device Advisor 主控台設定裝置角色，請參閱[在主控台中開始使用 Device Advisor](https://docs.aws.amazon.com/iot/latest/developerguide/da-console-guide.html)。

1. 前往 [AWS Identity and Access Management 主控台](https://console.aws.amazon.com/iam/home?region=us-west-2#/home)，並登入 AWS 帳戶 您用於 Device Advisor 測試的 。

1. 在左側導覽窗格上，選擇 **Policies** (政策)。

1. 選擇 **Create policy (建立政策)**。

1. 在 **Create policy** (建立政策) 下，執行下列操作：

   1. 針對 **Service** (服務)，選擇 **IoT**。

   1. 在**動作**下，執行下列其中一個動作：
      + (建議) 根據連接至您在上一節中建立之 IoT 物件或憑證的政策選取動作。
      + 在**篩選動作**方塊中搜尋下列動作，並選取它們：
        + `Connect`
        + `Publish`
        + `Subscribe`
        + `Receive`
        + `RetainPublish`

   1. 在**資源**下，限制用戶端、主題和主題資源。限制這些資源是安全最佳實務。若要限制資源，請執行下列動作：

      1. 選擇 **Specify client resource ARN for the Connect action** (指定 Connect 動作的用戶端資源 ARN)。

      1. 選擇**新增 ARN**，然後執行下列任一動作：
**注意**  
此 *clientId* 是您裝置用來與 Device Advisor 互動的 MQTT 用戶端 ID。
         + 在視覺化 ARN 編輯器中指定**區域**、**accountID** 和 **clientID**。
         + 手動輸入您想要透過其執行測試案例之 IoT 主題的 Amazon Resource Name (ARN)。

      1. 選擇**新增**。

      1. 選擇**指定 Receive 動作和另外 1 個動作的主題資源 ARN**。

      1. 選擇**新增 ARN**，然後執行下列任一動作：
**注意**  
*主題名稱*是您裝置將訊息發佈至其中的 MQTT 主題。
         + 在視覺化 ARN 編輯器中指定**區域**、**accountID** 和**主題名稱**。
         + 手動輸入您想要透過其執行測試案例之 IoT 主題的 ARN。

      1. 選擇 **Add (新增)**。

      1. 選擇**指定 Subscribe 動作的 topicFilter 資源 ARN**。

      1. 選擇**新增 ARN**，然後執行下列任一動作：
**注意**  
*主題名稱*是您裝置訂閱的 MQTT 主題。
         + 在視覺化 ARN 編輯器中指定**區域**、**accountID** 和**主題名稱**。
         + 手動輸入您想要透過其執行測試案例之 IoT 主題的 ARN。

      1. 選擇**新增**。

1. 選擇下**一步：標籤**。

1. 選擇下**一步：檢閱**。

1. 在**檢閱政策**下，針對您的政策輸入一個**名稱**。

1. 選擇**建立政策**。

1. 在左側導覽窗格上，選擇 **Roles** (角色)。

1. 選擇**建立角色**。

1. 在**選取信任的實體**下，選擇**自訂信任政策**。

1. 在**自訂信任政策**方塊中輸入下列信任政策。建議您新增全域條件內容金鑰 `[aws:SourceArn](https://docs.aws.amazon.com//IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn)` 和 `[aws:SourceAccount](https://docs.aws.amazon.com//IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount)` 至政策，保護自己免受混淆代理人問題的困擾。
**重要**  
您的 `aws:SourceArn` 必須與 `format: arn:aws:iotdeviceadvisor:region:account-id:*.` 相符。請確認 `region` 與您的  AWS IoT  區域符合，且 `account-id` 與您的客戶帳戶 ID 相符。如需詳細資訊，請參閱[預防跨服務混淆代理人](https://docs.aws.amazon.com/iot/latest/developerguide/security-best-practices.html#cross-service-confused-deputy-prevention-DA)。  
****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "AllowAwsIoTCoreDeviceAdvisor",
               "Effect": "Allow",
               "Principal": {
                   "Service": "iotdeviceadvisor.amazonaws.com"
           },
               "Action": "sts:AssumeRole",
               "Condition": {
                   "StringEquals": {
                       "aws:SourceAccount": "123456789012"
               },
                   "ArnLike": {
                       "aws:SourceArn": "arn:aws:iotdeviceadvisor:*:123456789012:suitedefinition/*"
               }
           }
           }
       ]
   }
   ```

1. 選擇**下一步**。

1. 選擇您在步驟 4 所建立的政策。

1. (選用) 在**設定許可界限**下，選擇**使用許可界限來控制角色許可上限**，然後選取您已建立的政策。

1. 選擇**下一步**。

1. 輸入 **Role name** (角色名稱) 和 **Role description** (角色描述)。

1. 選擇 **Create Role** (建立角色)。

## 為要使用 Device Advisor 的 IAM 使用者建立自訂受管政策
<a name="da-managed-policy"></a>

1. 導覽至 IAM 主控台，網址為 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)。若出現提示，請輸入 AWS 憑證以進行登入。

1. 在左側導覽窗格中選擇 **Policies** (政策)。

1. 選擇 **Create Policy** (建立政策)，然後選擇 **JSON** 標籤。

1. 新增必要的許可以使用 Device Advisor。政策文件可在[安全最佳實務](https://docs.aws.amazon.com/iot/latest/developerguide/security-best-practices.html#device-advisor-perms)主題中找到。

1. 選擇**檢閱政策**。

1. 輸入 **Name (名稱)** 和 **Description (描述)**。

1. 選擇 **Create Policy** (建立政策)。

## 建立要使用 Device Advisor 的 IAM 使用者
<a name="da-iam-user"></a>

**注意**  
我們建議您建立要在執行 Device Advisor 測試時使用的 IAM 使用者。從管理員使用者執行 Device Advisor 測試可能會造成安全風險，因此不建議此操作。

1. 導覽至位於 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 的 IAM 主控台；若出現提示，請輸入 AWS 憑證以進行登入。

1. 在左側導覽窗格中，選擇 **Users** (使用者)。

1. 選擇 **Add User** (新增使用者)。

1. 輸入 **User name** (使用者名稱)。

1. 如果使用者想要與 AWS 外部互動，則需要程式設計存取 AWS 管理主控台。授予程式設計存取權的方式取決於正在存取的使用者類型 AWS。

   若要授予使用者程式設計存取權，請選擇下列其中一個選項。  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/iot/latest/developerguide/device-advisor-setting-up.html)

1. 選擇**下一步：許可**。

1. 若要提供存取權，請新增權限至您的使用者、群組或角色：
   + 中的使用者和群組 AWS IAM Identity Center：

     建立權限合集。請按照《*AWS IAM Identity Center 使用者指南*》中的[建立權限合集](https://docs.aws.amazon.com//singlesignon/latest/userguide/howtocreatepermissionset.html)說明進行操作。
   + 透過身分提供者在 IAM 中管理的使用者：

     建立聯合身分的角色。遵循《*IAM 使用者指南*》的[為第三方身分提供者 (聯合) 建立角色](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-idp.html)中的指示。
   + IAM 使用者：
     + 建立您的使用者可擔任的角色。請按照《*IAM 使用者指南*》的[為 IAM 使用者建立角色](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-user.html)中的指示。
     + (不建議) 將政策直接附加至使用者，或將使用者新增至使用者群組。請遵循《*IAM 使用者指南*》的[新增許可到使用者 (主控台)](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_users_change-permissions.html#users_change_permissions-add-console) 中的指示。

1. 在搜尋方塊中，輸入您已建立之客戶管理政策的名稱。然後，選取**政策名稱**的核取方塊。

1. 選擇下**一步：標籤**。

1. 選擇 **Next:Review (下一步：檢閱)**。

1. 選擇 **Create user** (建立使用者)。

1. 選擇**關閉**。

Device Advisor 需要代表您存取您的 AWS 資源 （物件、憑證和端點）。您的 IAM 使用者必須擁有必要的許可。如果您將必要的許可政策連接到 IAM 使用者，Device Advisor 也會將記錄發佈到 Amazon CloudWatch。

## 設定您的裝置
<a name="da-configure-device"></a>

Device Advisor 會使用伺服器名稱指示 (SNI) TLS 延伸來套用 TLS 組態。在裝置連線並傳遞與 Device Advisor 測試端點相同的伺服器名稱時，它們必須使用此延伸。

當測試處於 `Running` 狀態時，Device Advisor 允許 TLS 連線。它會在每次測試執行的前後拒絕 TLS 連線。基於這個原因，我們建議您使用裝置連線重試機制，以取得 Device Advisor 的全自動化測試體驗。您可以執行測試套件，其中包含多個測試案例，例如 TLS 連線、MQTT 連線和 MQTT 發佈。如果您執行多個測試案例，我們建議您的裝置每五秒嘗試連線到我們的測試端點。然後，您可以使多個測試案例依序自動執行。

**注意**  
若要準備好您的裝置軟體進行測試，我們建議您使用可以連線至 AWS IoT Core的 SDK。然後，您應該使用為 AWS 帳戶提供的 Device Advisor 測試端點來更新 SDK。

Device Advisor 支援兩種類型的端點：帳戶層級和裝置層級端點。選擇最適合您使用案例的端點。若要針對不同裝置同時執行多個測試套件，請使用裝置層級端點。

請執行下列命令來取得裝置層級端點：

若為使用 X.509 用戶端憑證的 MQTT 客戶：

```
aws iotdeviceadvisor get-endpoint --thing-arn your-thing-arn
```

或

```
aws iotdeviceadvisor get-endpoint --certificate-arn your-certificate-arn
```

若為使用簽章第 4 版的 MQTT over WebSocket 客戶：

```
aws iotdeviceadvisor get-endpoint --device-role-arn your-device-role-arn --authentication-method SignatureVersion4
```

若要一次執行一個測試套件，請選擇 Account-level endpoint (帳戶層級端點)。請執行下列命令來取得帳戶層級端點：

```
aws iotdeviceadvisor get-endpoint
```