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 配置文件模板指定的,位於
folder。如果需要,測試運行者還必須設置AWS憑據,IDT 將用於連接到AWS雲端。<device-tester-extract-location>
/configs/
作為測試編寫者,您需要將這些文件配置為調試您的測試套件。您必須提供測試運行程序的説明,以便他們可以根據需要配置以下設置來運行測試套件。
設定 device.json
所以此device.json
檔案包含測試執行所在裝置的相關資訊 (例如 IP 地址、登入資訊、作業系統和 CPU 架構)。
測試運行者可使用下面的範本提供此資訊device.json
檔案位於
folder。<device-tester-extract-location>
/configs/
[ { "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.json
file. 例如,如果要測試用作其他設備的 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
-
用來與此裝置通訊的通訊協定。池中的每個設備必須使用相同的協議。
目前僅支援的數值為
ssh
和uart
用於物理設備,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.json
file. 此檔案的格式取決於userdata_scheme.json文件,位於測試套件中定義。如果您是測試編寫者,請確保向將運行您編寫的測試套件的用户提供此信息。
(選用) 設定資源。json
所以此resource.json
文件包含有關將用作資源設備的任何設備的信息。資源設備是測試受測設備的某些功能所需的設備。例如,要測試設備的藍牙功能,您可以使用資源設備來測試您的設備是否可以成功連接到該設備。資源設備是可選的,您可以根據需要任意數量的資源設備。作為測試作者,您可以使用測試 .json 文件定義測試所需的資源設備功能。測試運行者然後使用resource.json
文件,以提供具有所需功能的資源設備池。請確保向將運行您編寫的測試套件的用户提供此信息。
測試運行者可使用下面的範本提供此資訊resource.json
檔案位於
folder。<device-tester-extract-location>
/configs/
[ { "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
-
用來與此裝置通訊的通訊協定。池中的每個設備必須使用相同的協議。
目前僅支援的數值為
ssh
和uart
用於物理設備,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_ID
和AWS_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
檔案位於
folder。<device-tester-extract-location>
/configs/
{ "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.json
file. testPath
-
包含測試套件的資料夾路徑。
reportPath
-
IDT 運行測試套件後將包含測試結果的文件夾路徑。
awsRegion
-
選用。所以此AWS區域,測試套件將使用。如果未設置,則測試套件將使用每個測試套件中指定的默認區域。
auth.method
-
IDT 用於檢索AWS登入資料。支援的值如下:
file
從登入資料檔案獲取登入資料,environment
以使用環境變量檢索憑據。 auth.credentials.profile
-
要從登入資料檔案中使用的登入資料檔。只有當
auth.method
設為file
時,才會套用此屬性。