為測試運行者設定 - AWS IoT Greengrass

AWS IoT Greengrass Version 1 於 2023 年 6 月 30 日進入延長使用壽命階段。如需詳細資訊,請參閱AWS IoT Greengrass V1 維護政策。在此日期之後, AWS IoT Greengrass V1 將不會發行提供功能、增強功能、錯誤修正或安全性修補程式的更新。在上運行的設備 AWS IoT Greengrass V1 不會中斷,並將繼續運行並連接到雲。我們強烈建議您移轉至 AWS IoT Greengrass Version 2,這會增加重要的新功能,並支援其他平台

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

為測試運行者設定

要運行自定義測試套件,測試運行者必須根據要運行的測試套件配置其設置。設置是根據 JSON 配置文件模板指定的,位於<device-tester-extract-location>/configs/folder。如果需要,測試運行者還必須設置AWS憑據,IDT 將用於連接到AWS雲端。

作為測試編寫者,您需要將這些文件配置為調試您的測試套件。您必須提供測試運行程序的説明,以便他們可以根據需要配置以下設置來運行測試套件。

設定 device.json

所以此device.json檔案包含測試執行所在裝置的相關資訊 (例如 IP 地址、登入資訊、作業系統和 CPU 架構)。

測試運行者可使用下面的範本提供此資訊device.json檔案位於<device-tester-extract-location>/configs/folder。

[ { "id": "<pool-id>", "sku": "<pool-sku>", "features": [ { "name": "<feature-name>", "value": "<feature-value>", "configs": [ { "name": "<config-name>", "value": "<config-value>" } ], } ], "devices": [ { "id": "<device-id>", "connectivity": { "protocol": "ssh | uart | docker", // ssh "ip": "<ip-address>", "port": <port-number>, "auth": { "method": "pki | password", "credentials": { "user": "<user-name>", // pki "privKeyPath": "/path/to/private/key", // password "password": "<password>", } }, // uart "serialPort": "<serial-port>", // docker "containerId": "<container-id>", "containerUser": "<container-user-name>", } } ] } ]

如下所述,包含值的所有欄位皆為必要:

id

使用者定義的英數字元 ID,可唯一識別裝置的集合,稱為「裝置集區」。屬於同一個集區的裝置必須有相同的硬體。當您執行測試套件,集區中的裝置會用來將工作負載平行化。多個裝置用來執行不同的測試。

sku

可唯一識別測試裝置的英數字元值。SKU 用來追蹤合格的設備。

注意

如果您想要在 AWS Partner 裝置目錄中列出您的電路板,在此處指定的 SKU 必須符合您在列名程序中使用的 SKU。

features

選用。包含裝置支援功能的陣列。設備功能是您在測試套件中配置的用户定義值。您必須向測試運行者提供有關要包含在device.jsonfile. 例如,如果要測試用作其他設備的 MQTT 服務器的設備,則可以配置測試邏輯以驗證名為MQTT_QOS。測試運行者提供此功能名稱,並將功能值設置為其設備支持的 QOS 級別。您可從IDT 上下文使用devicePool.features查詢,或從狀態機器上下文使用pool.features查詢。

features.name

功能的名稱。

features.value

支持的要素值。

features.configs

功能的配置設置(如果需要)。

features.config.name

組態設定的名稱。

features.config.value

支持的設置值。

devices

池中要測試的設備陣列。至少需要一個設備。

devices.id

使用者定義的唯一識別符,用於識別要測試的裝置。

connectivity.protocol

用來與此裝置通訊的通訊協定。池中的每個設備必須使用相同的協議。

目前僅支援的數值為sshuart用於物理設備,docker的 Docker 容器。

connectivity.ip

要測試之裝置的 IP 位址。

只有當 connectivity.protocol 設為 ssh 時,才會套用此屬性。

connectivity.port

選用。用於 SSH 連接的端口號。

預設值為 22。

只有當 connectivity.protocol 設為 ssh 時,才會套用此屬性。

connectivity.auth

連線的驗證資訊。

只有當 connectivity.protocol 設為 ssh 時,才會套用此屬性。

connectivity.auth.method

用來透過指定的連線通訊協定存取裝置的驗證方法。

支援的值如下:

  • pki

  • password

connectivity.auth.credentials

用於驗證的燈入資料。

connectivity.auth.credentials.password

用於登入要測試裝置的密碼。

只有當 connectivity.auth.method 設為 password 時,才會套用此值。

connectivity.auth.credentials.privKeyPath

用來登入待測裝置之私有金鑰的完整路徑。

只有當 connectivity.auth.method 設為 pki 時,才會套用此值。

connectivity.auth.credentials.user

登入要測試之裝置的使用者名稱。

connectivity.serialPort

選用。設備連接到的串行端口。

只有當 connectivity.protocol 設為 uart 時,才會套用此屬性。

connectivity.containerId

要測試之 Docker 容器的容器 ID 或名稱。

只有當 connectivity.protocol 設為 docker 時,才會套用此屬性。

connectivity.containerUser

選用。容器內用户的用户的名稱。預設值是 Docker 檔案中提供的用户。

預設值為 22。

只有當 connectivity.protocol 設為 docker 時,才會套用此屬性。

注意

要檢查測試運行者是否為測試配置了不正確的設備連接,您可以檢索pool.Devices[0].Connectivity.Protocol從狀態機上下文中進行調整,並將其與Choice狀態。如果使用了不正確的協議,則使用LogMessage狀態並過渡到Fail狀態。

或者,您可以使用錯誤處理代碼報告錯誤設備類型的測試失敗。

(選用) 設定用户數據 .json

所以此userdata.json文件包含測試套件所需的任何其他信息,但未在device.jsonfile. 此檔案的格式取決於userdata_scheme.json文件,位於測試套件中定義。如果您是測試編寫者,請確保向將運行您編寫的測試套件的用户提供此信息。

(選用) 設定資源。json

所以此resource.json文件包含有關將用作資源設備的任何設備的信息。資源設備是測試受測設備的某些功能所需的設備。例如,要測試設備的藍牙功能,您可以使用資源設備來測試您的設備是否可以成功連接到該設備。資源設備是可選的,您可以根據需要任意數量的資源設備。作為測試作者,您可以使用測試 .json 文件定義測試所需的資源設備功能。測試運行者然後使用resource.json文件,以提供具有所需功能的資源設備池。請確保向將運行您編寫的測試套件的用户提供此信息。

測試運行者可使用下面的範本提供此資訊resource.json檔案位於<device-tester-extract-location>/configs/folder。

[ { "id": "<pool-id>", "features": [ { "name": "<feature-name>", "version": "<feature-value>", "jobSlots": <job-slots> } ], "devices": [ { "id": "<device-id>", "connectivity": { "protocol": "ssh | uart | docker", // ssh "ip": "<ip-address>", "port": <port-number>, "auth": { "method": "pki | password", "credentials": { "user": "<user-name>", // pki "privKeyPath": "/path/to/private/key", // password "password": "<password>", } }, // uart "serialPort": "<serial-port>", // docker "containerId": "<container-id>", "containerUser": "<container-user-name>", } } ] } ]

如下所述,包含值的所有欄位皆為必要:

id

使用者定義的英數字元 ID,可唯一識別裝置的集合,稱為「裝置集區」。屬於同一個集區的裝置必須有相同的硬體。當您執行測試套件,集區中的裝置會用來將工作負載平行化。多個裝置用來執行不同的測試。

features

選用。包含裝置支援功能的陣列。此字段中所需的信息在測試 .json 文件,並確定要運行哪些測試以及如何運行這些測試。如果測試套件不需要任何功能,則不需要此字段。

features.name

功能的名稱。

features.version

功能版本。

features.jobSlots

指示可以同時使用設備的測試次數的設置。預設值為 1

devices

池中要測試的設備陣列。至少需要一個設備。

devices.id

使用者定義的唯一識別符,用於識別要測試的裝置。

connectivity.protocol

用來與此裝置通訊的通訊協定。池中的每個設備必須使用相同的協議。

目前僅支援的數值為sshuart用於物理設備,docker的 Docker 容器。

connectivity.ip

要測試之裝置的 IP 位址。

只有當 connectivity.protocol 設為 ssh 時,才會套用此屬性。

connectivity.port

選用。用於 SSH 連接的端口號。

預設值為 22。

只有當 connectivity.protocol 設為 ssh 時,才會套用此屬性。

connectivity.auth

連線的驗證資訊。

只有當 connectivity.protocol 設為 ssh 時,才會套用此屬性。

connectivity.auth.method

用來透過指定的連線通訊協定存取裝置的驗證方法。

支援的值如下:

  • pki

  • password

connectivity.auth.credentials

用於驗證的燈入資料。

connectivity.auth.credentials.password

用於登入要測試裝置的密碼。

只有當 connectivity.auth.method 設為 password 時,才會套用此值。

connectivity.auth.credentials.privKeyPath

用來登入待測裝置之私有金鑰的完整路徑。

只有當 connectivity.auth.method 設為 pki 時,才會套用此值。

connectivity.auth.credentials.user

登入要測試之裝置的使用者名稱。

connectivity.serialPort

選用。設備連接到的串行端口。

只有當 connectivity.protocol 設為 uart 時,才會套用此屬性。

connectivity.containerId

要測試之 Docker 容器的容器 ID 或名稱。

只有當 connectivity.protocol 設為 docker 時,才會套用此屬性。

connectivity.containerUser

選用。容器內用户的用户的名稱。預設值是 Docker 檔案中提供的用户。

預設值為 22。

只有當 connectivity.protocol 設為 docker 時,才會套用此屬性。

(選用) 設定 .json

所以此config.json文件包含 IDT 的配置信息。通常情況下,測試運行者不需要修改此文件,除了提供AWSIDT 的用户憑據,也可以選擇AWS區域。如果AWS提供具有所需權限的憑據AWS IoT設備測試程序收集使用量指標並將其提交到AWS。這是一項選擇功能,用來改進 IDT 功能。如需詳細資訊,請參閱 IDT 使用量測量結果

測試運行者可以配置AWS登入資料,請執行下列其中一個方式:

  • 登入資料檔案

    IDT 會使用與 AWS CLI 相同的登入資料檔案。如需詳細資訊,請參閱組態與登入資料檔案

    登入資料檔案的位置會有所不同,取決於您使用的作業系統:

    • macOS, Linux: ~/.aws/credentials

    • Windows:C:\Users\UserName\.aws\credentials

  • 環境變數

    環境變數是由作業系統維護且由系統命令使用的變數。SSH 會話期間定義的變量在該會話關閉後不可用。IDT 可以使用AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY環境變數來存儲AWS證書

    若要在 Linux、macOS 或 Unix 上設定這些變數,請使用 export

    export AWS_ACCESS_KEY_ID=<your_access_key_id> export AWS_SECRET_ACCESS_KEY=<your_secret_access_key>

    若要在 Windows 上設定這些變數,請使用 set

    set AWS_ACCESS_KEY_ID=<your_access_key_id> set AWS_SECRET_ACCESS_KEY=<your_secret_access_key>

設定AWS憑據,測試運行者編輯auth部分的config.json檔案位於<device-tester-extract-location>/configs/folder。

{ "log": { "location": "logs" }, "configFiles": { "root": "configs", "device": "configs/device.json" }, "testPath": "tests", "reportPath": "results", "awsRegion": "<region>", "auth": { "method": "file | environment", "credentials": { "profile": "<profile-name>" } } } ]

如下所述,包含值的所有欄位皆為必要:

注意

此文件中的所有路徑都是相對於<device-tester-extract-location>

log.location

日誌資料夾的路徑位於<device-tester-extract-location>

configFiles.root

包含配置檔案的資料夾路徑。

configFiles.device

的路徑device.jsonfile.

testPath

包含測試套件的資料夾路徑。

reportPath

IDT 運行測試套件後將包含測試結果的文件夾路徑。

awsRegion

選用。所以此AWS區域,測試套件將使用。如果未設置,則測試套件將使用每個測試套件中指定的默認區域。

auth.method

IDT 用於檢索AWS登入資料。支援的值如下:file從登入資料檔案獲取登入資料,environment以使用環境變量檢索憑據。

auth.credentials.profile

要從登入資料檔案中使用的登入資料檔。只有當 auth.method 設為 file 時,才會套用此屬性。