配置您的設備以運行 IDT 測試 - AWS IoT Greengrass

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

配置您的設備以運行 IDT 測試

若要讓 IDT 執行裝置資格測試,您必須將主機電腦設定為存取裝置,並在裝置上設定使用者權限。

在主機電腦上安裝 Java

從 IDT v4.2.0 開始, AWS IoT Greengrass 需要 Java 才能執行的選擇性資格測試。

您可以使用 Java 版本 8 或更高版本。我們建議您使用 Amazon CorrettoOpenJDK 長期支持版本。需要版本 8 或更高版本。

設定主機電腦以存取待測裝置

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

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

  2. 提供 device.json 檔案中每個裝置的使用者名稱和密碼。如需詳細資訊,請參閱 設定 device.json

您可以使用任何 SSL 實作來建立 SSH 金鑰。以下指示展示如何使用 SSH-KEYGEN PuTTYgen (適用於 Windows)。如果您使用的是另一個 SSL 實作,請參閱該實作的文件。

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

使用 SSH-KEYGEN 建立 SSH 金鑰
  1. 建立 SSH 金鑰。

    您可以使用 Open SSH ssh-keygen 命令建立 SSH 金鑰對。如果您的主機電腦上已有 SSH 金鑰對,則最佳實務是特別為 IDT 建立 SSH 金鑰對。如此一來,在您完成測試之後,若沒有輸入密碼,主機電腦再也無法連接至您的裝置。它還可讓您限制只有需要遠端裝置的人,才能存取該裝置。

    注意

    Windows 沒有安裝的 SSH 用戶端。如需在 Windows 上安裝 SSH 用戶端的詳細資訊,請參閱下載 SSH 用戶端軟體

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

    出現提示時,請輸入金鑰字詞來保護您的 SSH 金鑰。如需詳細資訊,請參閱產生新的 SSH 金鑰

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

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

    $ 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 ~/my/path/myKey.pub)。如需有關建立 SSH 金鑰和複製公有金鑰的詳細資訊,請參閱 SSH-COPY-ID

使用 PuTTYgen 建立 SSH 金鑰 (僅限 Windows)
  1. 確定您的待測裝置上已安裝 OpenSSH 伺服器和用戶端。如需詳細資訊,請參閱 OpenSSH

  2. 在您的待測裝置上安裝 PuTTYgen

  3. 開啟 PuTTYgen。

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

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

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

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

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

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

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

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

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

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

設定 Windows 裝置的使用者身份證明

若要符合 Windows 裝置的資格,您必須在受測裝置的LocalSystem 帳戶中為下列使用者設定使用者認證:

  • 默認使用者 ()。ggc_user

  • 您用來連接到被測設備的用戶。您可以在device.json檔案中設定此使用者。

您必須在被測裝置上的 LocalSystem 帳戶中建立每個使用者,然後將該使用者的使用者名稱和密碼儲存在該LocalSystem 帳戶的憑證管理員執行個體中。

在 Windows 裝置上設定使用者
  1. 以系統管理員身分開啟 Windows 命令提示字元 (cmd.exe)。

  2. 在 Windows 裝置上的 LocalSystem 帳戶中建立使用者。針對您要建立的每個使用者執行下列命令。對於預設的 Greengrass 使用者,請將使用者名稱取代為。 ggc_user以安全密碼取代密碼。

    net user /add user-name password
  3. 在設備上從 Microsoft 下載並安裝該PsExec實用程序

  4. 使用此 PsExec 公用程式將預設使用者的使用者名稱和密碼儲存在 LocalSystem 帳戶的認證管理員執行個體中。

    針對您要在認證管理員中設定的每個使用者執行下列命令。對於預設的 Greengrass 使用者,請將使用者名稱取代為。 ggc_user以您先前設定的使用者密碼取代密碼。

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

    如果打PsExec License Agreement開,請選Accept擇同意許可證並運行命令。

    注意

    在 Windows 裝置上, LocalSystem 帳戶會執行 Greengrass 核心,而且您必須使用公用 PsExec 程式將使用者資訊儲存在帳戶中。 LocalSystem使用認證管理員應用程式會將此資訊儲存在目前登入使用者的 Windows 帳戶中,而非 LocalSystem帳戶中。

在您的裝置上設定使用者許可

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

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

注意

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

將使用者新增至 sudo 群組
  1. 在待測裝置上,執行 sudo usermod -aG sudo <username>

  2. 登出後再重新登入,以使變更生效。

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

  4. 開啟 /etc/sudoers 檔案,然後在檔案結尾處新增以下一行:

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

設定自訂權杖交換角色

您可以選擇使用自定義 IAM 角色作為被測設備假定與 AWS 資源進行交互的令牌交換角色。如需建立 IAM 角色的相關資訊,請參閱 IAM 使用者指南中的建立 IAM 角色。

您必須符合以下要求,才能允許 IDT 使用您的自訂 IAM 角色。強烈建議您只將必要的最低原則動作新增至此角色。

  • 必須更新使用者資料 .json 組態檔案,才能將參數設定GreengrassV2TokenExchangeRole為。true

  • 自訂 IAM 角色必須設定下列最低信任政策:

    { "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Principal":{ "Service":[ "credentials.iot.amazonaws.com", "lambda.amazonaws.com", "sagemaker.amazonaws.com" ] }, "Action":"sts:AssumeRole" } ] }
  • 自訂 IAM 角色必須設定下列最低許可政策:

    { "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 角色資源相符。根據預設,測試使用者政策允許存取角色名稱中具有idt-前綴的 IAM 角色。如果您的 IAM 角色名稱不使用此前綴,請將arn:aws:iam::*:role/custom-iam-role-name資源添加到roleAliasResources語句和測試用戶策略中的passRoleForResources語句中,如以下示例所示:

    範例 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" ] } } }
    範例 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" ] }

設定您的裝置以測試選用功能

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

泊塢工人資格要求

IDT for AWS IoT Greengrass V2 提供 Docker 資格測試,以驗證您的設備是否可以使用提 AWS供的 Docker 應用程序管理器組件來下載可以使用自定義 Docker 容器組件運行的 Docker 容器映像。如需建立自訂 Docker 元件的詳細資訊,請參閱運行碼頭容器

要運行 Docker 資格測試,被測設備必須滿足以下要求才能部署 Docker 應用程序管理器組件。

  • 碼頭引擎 1.9.1 或更高版本安裝在 Greengrass 核心設備上。版本 20.10 是經過驗證可與 AWS IoT Greengrass 核心軟件配合使用的最新版本。在部署執行 Docker 容器的元件之前,您必須直接在核心裝置上安裝 Docker。

  • 在您部署此元件之前,Docker 精靈會在核心裝置上啟動並執行。

  • 執行 Docker 容器元件的系統使用者必須具有根或系統管理員權限,或者您必須將 Docker 設定為以非 root 使用者或非管理員使用者身分執行。

    • 在 Linux 裝置上,您可以將使用者新增至docker群組,以便在不使用的情況下呼叫docker指令sudo

    • 在 Windows 裝置上,您可以將使用者新增至docker-users群組,以便在沒有系統管理員權限的情況下呼叫docker命令。

    Linux or Unix

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

    sudo usermod -aG docker ggc_user

    如需詳細資訊,請參閱以非 root 使用者身分管理 Docker

    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 資格要求

注意

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

IDT for AWS IoT Greengrass V2 提供 ML 資格測試,以驗證您的裝置是否可以使用提 AWS供的機器學習元件,使用深度學習執行階段TensorFlow Lite ML 架構在本機執行 ML 推論。如需有關在 Greengrass 裝置上執行 ML 推論的詳細資訊,請參閱。執行機器學習推論

若要執行 ML 資格測試,受測裝置必須符合下列需求,才能部署機器學習元件。

  • 在運行 Amazon Linux 2 或 Ubuntu 18.04 的 Greengrass 核心設備上,GNU C 庫(glibc)2.27 版或更高版本安裝在設備上。

  • 在 ARMV7L 設備上,如樹莓派,對於設備上安裝了 OpenCV-Python 的依賴關係。執行下列命令以安裝相依性。

    sudo apt-get install libopenjp2-7 libilmbase23 libopenexr-dev libavcodec-dev libavformat-dev libswscale-dev libv4l-dev libgtk-3-0 libwebp-dev
  • 樹莓派運行樹莓派 OS 靶心設備必須滿足以下要求:

    • NumPy 1.22.4 或更新版本已安裝在裝置上。樹莓派 OS 靶心包括早期版本的 NumPy,因此您可以運行以下命令在設備 NumPy 上升級。

      pip3 install --upgrade numpy
    • 裝置上啟用的舊式攝影機堆疊。樹莓派 OS Bullseye 包括一個新的相機堆疊,預設情況下啟用且不相容,因此您必須啟用傳統的相機堆疊。

      啟用舊式相機堆疊的步驟
      1. 運行以下命令以打開樹莓派配置工具。

        sudo raspi-config
      2. 選取介面選項

      3. 選取「舊式相機」以啟用舊式相機堆疊。

      4. 重新啟動 Raspberry Pi。

HSM 資格要求

AWS IoT Greengrass 提供 PKCS #11 提供者元件,以與裝置上的 PKCS 硬體安全模組 (HSM) 整合。HSM 設定取決於您的裝置和您選擇的 HSM 模組。只要提供預期的 HSM 組態 (如 IDT 組態設定中所述),IDT 就會擁有執行此選用功能限定測試所需的資訊。