設定您的裝置以執行 IDT 測試 - AWS IoT Greengrass

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

設定您的裝置以執行 IDT 測試

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

在主機電腦上安裝 Java

IDT v4.2.0 版開始,可選資格測試AWS IoT Greengrass需要 Java 才能運行。

您可以使用 Java 版本 8 或更新版本。我們建議Amazon Corretto 11或者OpenJDK 11

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

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>

    whereremote-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 測試以下用戶的帳戶:

  • 默 Greengrass 者 (ggc_user

  • 您用來連接測試裝置的使用者。您可以在device.json文件

您必須建立每個使用者 LocalSystem 在被測設備上的帳戶,然後將用戶的用戶名和密碼存儲在憑據管理器實例中LocalSystem 帳戶。

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

  2. 在中建立使用者 LocalSystem 視窗設備上的帳戶。針對想要建立的每個使用者執行以下命令。對於默認的使用者,請取代user name取代為ggc_user。Replace密碼使用安全密碼。

    net user /add user-name password
  3. 下載並安裝PsExec效用來自設備上的微軟。

  4. 使用 PsExec 公用程式,可將預設使用者的使用者名稱和密碼儲存在登入資料管理員執行個體中 LocalSystem 帳戶。

    針對想要在認證管理員中設定的每位使用者,執行以下命令。對於默認的使用者,請取代user name取代為ggc_user。Replace密碼使用您先前設定的使用者密碼。

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

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

    注意

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

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

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

在待測裝置上依照以下步驟,在不提示輸入密碼的情況下允許 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 User Guide

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

  • 所以此用戶數據必須更新組態檔案才能設定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 角色名稱不使用此前綴,請添加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 設定以執行AWS IoT Greengrass資格套件

Docker 資格要求

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

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

  • Docker安裝在 Greengrass 核心裝置上的 1.9.1 或更新版本。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

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

    Windows Command Prompt (CMD)

    新增ggc_user,或者您用來運行 Docker 容器組件的用戶,docker-usersgroup,以管理員身分執行以下命令。

    net localgroup docker-users ggc_user /add
    Windows PowerShell

    新增ggc_user,或者您用來運行 Docker 容器組件的用戶,docker-usersgroup,以管理員身分執行以下命令。

    Add-LocalGroupMember -Group docker-users -Member ggc_user

ML 資格要求

IDTAWS IoT GreengrassV2 提供 ML 資格測試,以驗證您的設備是否可以使用AWS-提供Machine Learning 元件若要在本機執行 ML 推論深度學習執行時間或者TensorFlow 輕鬆的ML 框架。如需有關在 Greengrass 裝置上執行 ML 推論的詳細資訊,請參閱執行機器學習推論

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

  • 在運行亞馬遜 Linux 2 或 Ubuntu 18.04 的 Greengrass 核心設備上,GNU C 程式庫安裝在裝置上的版本 2.27 或更新版本。

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

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

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

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

      啟用舊式相機堆疊
      1. 執行以下命令以開啟 Raspberry Pi 組態工具。

        sudo raspi-config
      2. 選擇界面選項

      3. 選擇傳統相機以啟用舊式相機堆疊。

      4. 重新啟動 Raspberry Pi。

HSM 資格要求

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