

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

# 設定您的裝置以執行 IDT 測試
<a name="device-config-setup"></a>

若要讓 IDT 執行裝置資格測試，您必須設定主機電腦以存取您的裝置，並在裝置上設定使用者許可。

## 在主機電腦上安裝 Java
<a name="install-java-for-idt"></a>

從 IDT v4.2.0 開始， 的選用資格測試 AWS IoT Greengrass 需要執行 Java。

您可以使用 Java 第 8 版或更新版本。我們建議您使用 [Amazon Corretto](https://aws.amazon.com/corretto/) 或 [OpenJDK](https://openjdk.java.net/) 長期支援版本。第 8 版或更新版本為必要項目。

## 設定主機電腦以存取待測裝置
<a name="configure-host"></a>

IDT 是在您的主機電腦上執行，而且必須能夠使用 SSH 連線到您的裝置。有兩個選項允許 IDT 取得待測裝置的 SSH 存取權：

1. 依照此處的指示來建立 SSH 金鑰對，並授權您的金鑰可以登入待測裝置，無需指定密碼。

1. 提供 `device.json` 檔案中每個裝置的使用者名稱和密碼。如需詳細資訊，請參閱[設定 device.json](set-config.md#device-config)。

您可以使用任何 SSL 實作來建立 SSH 金鑰。以下指示展示如何使用 [SSH-KEYGEN](https://www.ssh.com/ssh/keygen/) 或 [ PuTTYgen](https://www.ssh.com/ssh/putty/windows/puttygen) (適用於 Windows)。如果您使用的是另一個 SSL 實作，請參閱該實作的文件。

IDT 使用 SSH 金鑰向待測裝置進行驗證。

**使用 SSH-KEYGEN 建立 SSH 金鑰**

1. 建立 SSH 金鑰。

   您可以使用 Open SSH **ssh-keygen** 命令建立 SSH 金鑰對。如果您的主機電腦上已有 SSH 金鑰對，則最佳實務是特別為 IDT 建立 SSH 金鑰對。如此一來，在您完成測試之後，若沒有輸入密碼，主機電腦再也無法連接至您的裝置。它還可讓您限制只有需要遠端裝置的人，才能存取該裝置。
**注意**  
Windows 沒有安裝的 SSH 用戶端。如需在 Windows 上安裝 SSH 用戶端的詳細資訊，請參閱[下載 SSH 用戶端軟體](https://www.ssh.com/ssh/#sec-Download-client-software)。

   **ssh-keygen** 命令會提示您提供金鑰對的存放名稱和路徑。根據預設，該金鑰對檔案會命名為 `id_rsa` (私有金鑰) 和 `id_rsa.pub` (公有金鑰)。在 macOS 和 Linux 上，這些檔案的預設位置是 `~/.ssh/`。在 Windows 上，預設位置為 `C:\Users\<user-name>\.ssh`。

   出現提示時，請輸入金鑰字詞來保護您的 SSH 金鑰。如需詳細資訊，請參閱[產生新的 SSH 金鑰](https://www.ssh.com/ssh/keygen/)。

1. 將授權的 SSH 金鑰新增至待測裝置。

   IDT 必須使用您的 SSH 私有金鑰登入待測裝置。請從您的主機電腦使用 **ssh-copy-id** 命令，授權您的 SSH 私有金鑰登入待測裝置。此命令會將您的公有金鑰新增至待測裝置上的 `~/.ssh/authorized_keys` 檔案。例如：

   **\$1 ssh-copy-id *<remote-ssh-user>*@*<remote-device-ip>***

   *remote-ssh-user* 是用來登入測試裝置的使用者名稱，而 *remote-device-ip* 是要執行測試的測試裝置 IP 地址。例如：

   **ssh-copy-id pi@192.168.1.5**

   出現提示時，請輸入您在 **ssh-copy-id** 命令中指定的使用者名稱密碼。

   **ssh-copy-id** 假設公有金鑰名為 `id_rsa.pub`，並存放在預設位置 (macOS 和 Linux 為 `~/.ssh/`，Windows 為 `C:\Users\<user-name>\.ssh`)。如果您給公有金鑰不同的名稱，或將其存放在不同的位置中，則必須在 **ssh-copy-id** 中使用 **-i** 選項，以指定 SSH 公有金鑰的完整路徑 (例如，**ssh-copy-id -i \$1/my/path/myKey.pub**)。如需有關建立 SSH 金鑰和複製公有金鑰的詳細資訊，請參閱 [SSH-COPY-ID](https://www.ssh.com/ssh/copy-id)。

**使用 PuTTYgen 建立 SSH 金鑰 (僅限 Windows)**

1. 確定您的待測裝置上已安裝 OpenSSH 伺服器和用戶端。如需詳細資訊，請參閱 [OpenSSH](https://www.openssh.com/)。

1. 在您的待測裝置上安裝 [PuTTYgen](https://www.puttygen.com/)。

1. 開啟 PuTTYgen。

1. 選擇 **Generate (產生)**，並將滑鼠游標移到方塊內以產生私有金鑰。

1. 從 **Conversions (轉換)** 功能表中，選擇 **Export OpenSSH key (匯出 OpenSSH 金鑰)**，然後以 `.pem` 副檔名儲存私有金鑰。

1. 將公有金鑰新增至待測裝置上的 `/home/<user>/.ssh/authorized_keys` 檔案。

   1. 從 PuTTYgen 視窗複製公有金鑰文字。

   1. 使用 PuTTY 在您的待測裝置上建立工作階段。

      1. 從命令提示字元或 Windows Powershell 視窗中，執行下列命令：

          **C:/*<path-to-putty>*/putty.exe -ssh *<user>*@*<dut-ip-address>* ** 

      1. 出現提示時，請輸入您裝置的密碼。

      1. 使用 vi 或其他文字編輯器，將公有金鑰附加到待測裝置上的 `/home/<user>/.ssh/authorized_keys` 檔案。

1. 使用您的使用者名稱、IP 地址，以及私有金鑰檔案的路徑 (您剛針對待測裝置將該檔案儲存在主機電腦上) 來更新 `device.json` 檔案。如需詳細資訊，請參閱[設定 device.json](set-config.md#device-config)。請務必提供私有金鑰的完整路徑和檔案名稱，並使用正斜線 ('/')。例如，若為 Windows 路徑 `C:\DT\privatekey.pem`，請在 `device.json` 檔案中使用 `C:/DT/privatekey.pem`。

## 設定 Windows 裝置的使用者登入資料
<a name="configure-windows-user-for-idt"></a>

若要符合 Windows 型裝置的資格，您必須在測試裝置上的 LocalSystem 帳戶中為下列使用者設定使用者憑證：
+ 預設 Greengrass 使用者 (`ggc_user`)。
+ 您用來連線至待測裝置的使用者。您可以在 [`device.json` 檔案中](set-config.md#device-config)設定此使用者。

您必須在待測裝置的 LocalSystem 帳戶中建立每個使用者，然後將使用者的使用者名稱和密碼存放在 LocalSystem 帳戶的 Credential Manager 執行個體中。<a name="set-up-windows-device-environment-procedure"></a>

**在 Windows 裝置上設定使用者**

1. 以管理員身分開啟 Windows 命令提示字元 (`cmd.exe`)。

1. 在 Windows 裝置的 LocalSystem 帳戶中建立使用者。針對您要建立的每個使用者執行下列命令。對於預設 Greengrass 使用者，請以 取代 *user-name*`ggc_user`。將*密碼*取代為安全密碼。

   ```
   net user /add user-name password
   ```

1. 從 Microsoft 在裝置上下載並安裝 [PsExec 公用程式](https://docs.microsoft.com/en-us/sysinternals/downloads/psexec)。

1. 使用 PsExec 公用程式，將預設使用者的使用者名稱和密碼存放在 LocalSystem 帳戶的 Credential Manager 執行個體中。

   針對您要在 Credential Manager 中設定的每個使用者執行下列命令。對於預設 Greengrass 使用者，請以 取代 *user-name*`ggc_user`。將*密碼*取代為您先前設定的使用者密碼。

   ```
   psexec -s cmd /c cmdkey /generic:user-name /user:user-name /pass:password
   ```

   如果 **PsExec License Agreement** 開啟，請選擇 以**Accept**同意授權並執行 命令。
**注意**  
在 Windows 裝置上，LocalSystem 帳戶會執行 Greengrass 核，而且您必須使用 PsExec 公用程式將使用者資訊存放在 LocalSystem 帳戶中。使用 Credential Manager 應用程式會將此資訊存放在目前登入使用者的 Windows 帳戶中，而不是 LocalSystem 帳戶。

## 在您的裝置上設定使用者許可
<a name="root-access"></a>

IDT 會在待測裝置的各種目錄和檔案上執行操作。其中某些操作需要較高的許可 (使用 **sudo**)。若要自動化這些操作，IDT for AWS IoT Greengrass V2 必須能夠使用 sudo 執行命令，而不會提示您輸入密碼。

在待測裝置上依照以下步驟，在不提示輸入密碼的情況下允許 sudo 存取。

**注意**  
`username` 是指 IDT 存取待測裝置時所使用的 SSH 使用者。

**將使用者新增至 sudo 群組**

1. 在待測裝置上，執行 `sudo usermod -aG sudo <username>`。

1. 登出後再重新登入，以使變更生效。

1. 若要驗證是否已成功新增您的使用者名稱，請執行 **sudo echo test**。如果未提示您輸入密碼，表示已正確設定您的使用者。

1. 開啟 `/etc/sudoers` 檔案，然後在檔案結尾處新增以下一行：

   `<ssh-username> ALL=(ALL) NOPASSWD: ALL`

## 設定自訂權杖交換角色
<a name="configure-custom-tes-role-for-idt"></a>

您可以選擇使用自訂 IAM 角色做為待測裝置與 AWS 資源互動時所擔任的權杖交換角色。如需建立 IAM 角色的資訊，請參閱《[IAM 使用者指南》中的建立 IAM 角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create.html)。 **

您必須符合下列要求，才能允許 IDT 使用您的自訂 IAM 角色。我們強烈建議您只將最低必要政策動作新增至此角色。
+ [userdata.json](set-config.md#custom-token-exchange-role-idt) 組態檔案必須更新，才能將 `GreengrassV2TokenExchangeRole` 參數設定為 `true`。
+ 自訂 IAM 角色必須使用下列最低信任政策設定：

------
#### [ JSON ]

****  

  ```
  {
     "Version":"2012-10-17",		 	 	 
     "Statement":[
        {
           "Effect":"Allow",
           "Principal":{
              "Service":[
                 "credentials.iot.amazonaws.com",
                 "lambda.amazonaws.com", 
                 "sagemaker.amazonaws.com" 
              ]
           },
           "Action":"sts:AssumeRole"
        }
     ]
  }
  ```

------
+ 自訂 IAM 角色必須使用下列最低許可政策設定：

------
#### [ JSON ]

****  

  ```
  {
     "Version":"2012-10-17",		 	 	 
     "Statement":[
        {
           "Effect":"Allow",
           "Action":[
              "iot:DescribeCertificate",
              "logs:CreateLogGroup",
              "logs:CreateLogStream",
              "logs:PutLogEvents",
              "logs:DescribeLogStreams",
              "iot:Connect",
              "iot:Publish",
              "iot:Subscribe",
              "iot:Receive",
              "iot:ListThingPrincipals", 
              "iot:GetThingShadow",
              "iot:UpdateThingShadow",
              "s3:GetBucketLocation",
              "s3:GetObject",
              "s3:PutObject",
              "s3:AbortMultipartUpload",
              "s3:ListMultipartUploadParts"
           ],
           "Resource":"*"
        }
     ]
  }
  ```

------
+ 自訂 IAM 角色的名稱必須符合您在測試使用者的 IAM 許可中指定的 IAM 角色資源。根據預設，[測試使用者政策](dev-tst-prereqs.md#configure-idt-permissions)允許存取在其角色名稱中具有 `idt-`字首的 IAM 角色。如果您的 IAM 角色名稱不使用此字首，請將 `arn:aws:iam::*:role/custom-iam-role-name` 資源新增至 `roleAliasResources`陳述式和測試使用者政策中的 `passRoleForResources`陳述式，如下列範例所示：

    
**Example `passRoleForResources` 陳述式**  

  ```
  {
     "Sid":"passRoleForResources",
     "Effect":"Allow",
     "Action":"iam:PassRole",
     "Resource":"arn:aws:iam::*:role/custom-iam-role-name",
     "Condition":{
        "StringEquals":{
           "iam:PassedToService":[
              "iot.amazonaws.com",
              "lambda.amazonaws.com",
              "greengrass.amazonaws.com"
           ]
        }
     }
  }
  ```  
**Example `roleAliasResources` 陳述式**  

  ```
  {
     "Sid":"roleAliasResources",
     "Effect":"Allow",
     "Action":[
        "iot:CreateRoleAlias",
        "iot:DescribeRoleAlias",
        "iot:DeleteRoleAlias",
        "iot:TagResource",
        "iam:GetRole"
     ],
     "Resource":[
        "arn:aws:iot:*:*:rolealias/idt-*",
        "arn:aws:iam::*:role/custom-iam-role-name"
     ]
  }
  ```

## 設定您的裝置以測試選用功能
<a name="optional-feature-config"></a>

本節說明針對選用的 Docker 和機器學習 (ML) 功能執行 IDT 測試的裝置需求。ML 功能僅在 IDT v4.9.3 中受支援。只有當您想要測試這些功能時，才必須確定您的裝置符合這些要求。否則，請繼續進行[設定 IDT AWS IoT Greengrass 設定以執行資格套件](set-config.md)。

**Topics**
+ [Docker 資格要求](#idt-config-docker-components)
+ [ML 資格要求](#idt-config-ml-components)
+ [HSM 資格要求](#idt-config-hsm-components)

### Docker 資格要求
<a name="idt-config-docker-components"></a>

IDT for AWS IoT Greengrass V2 提供 Docker 資格測試，以驗證您的裝置是否可以使用 AWS提供的 [Docker 應用程式管理員](docker-application-manager-component.md)元件來下載您可以使用自訂 Docker 容器元件執行的 Docker 容器映像。如需建立自訂 Docker 元件的詳細資訊，請參閱 [執行 Docker 容器](run-docker-container.md)。

若要執行 Docker 資格測試，待測裝置必須符合下列需求，才能部署 Docker 應用程式管理員元件。
+ <a name="docker-engine-requirement"></a>[Docker 引擎](https://docs.docker.com/engine/) 1.9.1 或更新版本安裝在 Greengrass 核心裝置上。20.10 版是經過驗證可與 AWS IoT Greengrass Core 軟體搭配使用的最新版本。您必須先直接在核心裝置上安裝 Docker，才能部署執行 Docker 容器的元件。
+ <a name="docker-daemon-requirement"></a>在部署此元件之前，Docker 協助程式會在核心裝置上啟動和執行。
+ <a name="docker-user-permissions-requirement"></a>執行 Docker 容器元件的系統使用者必須具有根或管理員許可，或者您必須將 Docker 設定為以非根或非註冊使用者身分執行。
  + 在 Linux 裝置上，您可以將使用者新增至 `docker`群組，在沒有 的情況下呼叫`docker`命令`sudo`。
  + 在 Windows 裝置上，您可以將使用者新增至 `docker-users`群組，在沒有管理員權限的情況下呼叫`docker`命令。

------
#### [ Linux or Unix ]

  若要將 `ggc_user`或您用來執行 Docker 容器元件的非根使用者新增至 `docker`群組，請執行下列命令。

  ```
  sudo usermod -aG docker ggc_user
  ```

  如需詳細資訊，請參閱[以非根使用者的身分管理 Docker](https://docs.docker.com/engine/install/linux-postinstall/#manage-docker-as-a-non-root-user)。

------
#### [ Windows Command Prompt (CMD) ]

  若要將 `ggc_user`或您用來執行 Docker 容器元件的使用者新增至 `docker-users`群組，請以管理員身分執行下列命令。

  ```
  net localgroup docker-users ggc_user /add
  ```

------
#### [ Windows PowerShell ]

  若要將 `ggc_user`或您用來執行 Docker 容器元件的使用者新增至 `docker-users`群組，請以管理員身分執行下列命令。

  ```
  Add-LocalGroupMember -Group docker-users -Member ggc_user
  ```

------

### ML 資格要求
<a name="idt-config-ml-components"></a>

**注意**  
機器學習功能僅在 IDT v4.9.3 中受支援。

IDT for AWS IoT Greengrass V2 提供 ML 資格測試，以驗證您的裝置是否可以使用 AWS提供的[機器學習元件](machine-learning-components.md)，使用[深度學習執行期](https://github.com/neo-ai/neo-ai-dlr)或 [TensorFlow Lite](https://www.tensorflow.org/lite/guide/python) ML 架構在本機執行 ML 推論。如需在 Greengrass 裝置上執行 ML 推論的詳細資訊，請參閱 [執行機器學習推論](perform-machine-learning-inference.md)。

若要執行 ML 資格測試，受測裝置必須符合下列要求，才能部署機器學習元件。<a name="ml-component-requirements"></a>
+ 在執行 Amazon Linux 2 或 Ubuntu 18.04 的 Greengrass 核心裝置上，[GNU C Library](https://www.gnu.org/software/libc/) (glibc) 2.27 版或更新版本安裝在裝置上。
+ 在 Armv7l 裝置上，例如 Raspberry Pi，安裝在裝置上的 OpenCV-Python 相依性。執行下列命令來安裝相依性。

  ```
  sudo apt-get install libopenjp2-7 libilmbase23 libopenexr-dev libavcodec-dev libavformat-dev libswscale-dev libv4l-dev libgtk-3-0 libwebp-dev
  ```
+ 執行 Raspberry Pi OS Bullseye 的 Raspberry Pi 裝置必須符合下列要求：
  + 裝置上已安裝 NumPy 1.22.4 或更新版本。Raspberry Pi OS Bullseye 包含舊版的 NumPy，因此您可以執行下列命令以在裝置上升級 NumPy。

    ```
    pip3 install --upgrade numpy
    ```
  + 在裝置上啟用的舊版攝影機堆疊。Raspberry Pi OS Bullseye 包含預設啟用且不相容的新攝影機堆疊，因此您必須啟用舊版攝影機堆疊。<a name="raspberry-pi-bullseye-enable-legacy-camera-stack"></a>

**啟用舊版攝影機堆疊**

    1. 執行下列命令以開啟 Raspberry Pi 組態工具。

       ```
       sudo raspi-config
       ```

    1. 選取**界面選項**。

    1. 選取**舊版攝影機**以啟用舊版攝影機堆疊。

    1. 重新啟動 Raspberry Pi。

### HSM 資格要求
<a name="idt-config-hsm-components"></a>

AWS IoT Greengrass 提供 [PKCS\$111 提供者元件](pkcs11-provider-component.md)，可與裝置上的 PKCS 硬體安全模組 (HSM) 整合。HSM 設定取決於您的裝置和您選擇的 HSM 模組。只要提供 [IDT 組態設定](set-config.md)中記錄的預期 HSM 組態，IDT 就會擁有執行此選用功能資格測試所需的資訊。