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,這會新增重要的新功能,並支援其他平台 。
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
配置 IDT 設置以運行AWS IoT Greengrass資格套件
在執行測試之前,您必須先設定AWS登入資料和裝置。
設定 AWS 憑證
您必須在
file. 針對建立和設定 AWS 帳戶中建立的 IDT for AWS IoT Greengrass 使用者,使用登入資料。您可以使用下列兩種方式的其中之一指定登入資料:<device-tester-extract-location>
/configs/config.json
-
登入資料檔案
-
環境變數
IDT 會使用與 AWS CLI 相同的登入資料檔案。如需詳細資訊,請參閱組態與登入資料檔案。
登入資料檔案的位置會有所不同,取決於您使用的作業系統:
-
macOS, Linux:
~/.aws/credentials
-
Windows:
C:\Users\
UserName
\.aws\credentials
添加您的AWS登入資料到credentials
檔案的格式如下所示:
[default] aws_access_key_id =
<your_access_key_id>
aws_secret_access_key =<your_secret_access_key>
若要設定 IDT inAWS IoT Greengrass以使用AWS登入資料credentials
文件中,編輯config.json
檔案如下所示:
{ "awsRegion": "us-west-2", "auth": { "method": "file", "credentials": { "profile": "default" } } }
注意
如果您不使用default
AWS描述檔名稱,請務必在config.json
file. 如需詳細資訊,請參閱具名描述檔。
環境變數是由作業系統維護且由系統命令使用的變數。如果您關閉 SSH 工作階段,則不會儲存它們。IDT inAWS IoT Greengrass可以使用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>
若要設定 IDT 來使用環境變數,請在 config.json
檔案中編輯 auth
區段。請見此處範例:
{ "awsRegion": "us-west-2", "auth": { "method": "environment" } }
設定 device.json
除此之外AWSIDT inAWS IoT Greengrass需要測試執行所在裝置的相關資訊 (例如 IP 地址、登入資訊、作業系統和 CPU 架構)。
您必須使用位於
中的
<device_tester_extract_location>
/configs/device.jsondevice.json
範本提供此資訊:
如下所述,包含值的所有欄位皆為必要:
id
-
使用者定義的英數字元 ID,可唯一識別裝置的集合,稱為「裝置集區」。屬於同一個集區的裝置必須有相同的硬體。當您執行測試套件,集區中的裝置會用來將工作負載平行化。多個裝置用來執行不同的測試。
sku
-
可唯一識別測試裝置的英數字元值。SKU 用來追蹤合格的主機板。
注意
如果您想要在 AWS Partner 裝置目錄中列出您的電路板,在此處指定的 SKU 必須符合您在列名程序中使用的 SKU。
features
-
包含裝置支援功能的陣列。所有功能都是必需的。
os
與arch
-
支援的作業系統 (OS) 和架構組合:
-
linux
,x86_64
-
linux
,armv6l
-
linux
,armv7l
-
linux
,aarch64
-
ubuntu
,x86_64
-
openwrt
,armv7l
-
openwrt
,aarch64
注意
如果您使用 IDT 來測試AWS IoT Greengrass,則只支援 x86_64 Docker 架構。
-
container
-
驗證裝置是否符合在 Greengrass 核心上以容器模式執行 Lambda 函數的所有軟體和硬體需求。
有效值為
yes
或者no
。 docker
-
驗證裝置是否符合所需的所有技術相依性,以使用 Greengrass Docker 應用程式部署連接器來執行容器
有效值為
yes
或者no
。 streamManagement
-
驗證裝置是否符合執行 AWS IoT Greengrass 串流管理員需要的所有必要技術相依性。
有效值為
yes
或者no
。 hsi
-
驗證提供的 HSI 共用程式庫是否可以與硬體安全模組 (HSM) 溝通,並正確實作所需的 PKCS#11 API。HSM 和共用程式庫必須能夠簽署 CSR、執行 TLS 操作並提供正確的金鑰長度和公開金鑰演算法。
有效值為
yes
或者no
。 ml
-
驗證裝置符合所有必要的技術相依性,以便在本機執行 ML 推論。
有效值可以是
mxnet
、tensorflow
、dlr
,以及no
(例如,mxnet
、mxnet,tensorflow
、mxnet,tensorflow,dlr
, 或no
。 mlLambdaContainerizationMode
-
驗證裝置是否符合在 Greengrass 裝置上以容器模式執行 ML 推論的所有必要技術相依性。
有效值為
container
、process
, 或both
。 processor
-
驗證裝置是否符合指定處理器類型的所有硬體需求。
有效值為
cpu
或者gpu
。
注意
如果您不想使用
container
、docker
、streamManager
、hsi
, 或ml
功能,您可以設定相應的value
至no
。Docker 僅支持
streamManagement
和ml
。 machineLearning
-
選用。ML 資格測試的組態資訊。如需詳細資訊,請參閱 設定 device.json 以取得 ML 資格。
hsm
-
選用。使用 AWS IoT Greengrass 硬體安全模組 (HSM) 進行測試的組態資訊。否則,應省略
hsm
屬性。如需詳細資訊,請參閱 硬體安全整合。只有當
connectivity.protocol
設為ssh
時,才會套用此屬性。hsm.p11Provider
-
PKCS#11 實作的 libdl-loadable 程式庫的絕對路徑。
hsm.slotLabel
-
用於識別硬體模組的插槽標籤。
hsm.slotUserPin
-
用於驗證使用者 PIN。AWS IoT Greengrass核心添加到模塊中。
hsm.privateKeyLabel
-
用於識別硬體模組中之金鑰的標籤。
hsm.openSSLEngine
-
OpenSSL 引擎
.so
檔案的絕對路徑,此檔案可在 OpenSSL 上啟用 PKCS#11 支援。由 AWS IoT Greengrass OTA 更新代理程式使用。
devices.id
-
使用者定義的唯一識別符,用於識別要測試的裝置。
connectivity.protocol
-
用來與此裝置通訊的通訊協定。目前,唯一支援的值是實體裝置的
ssh
,以及 Docker 容器的docker
。 connectivity.ip
-
要測試之裝置的 IP 位址。
只有當
connectivity.protocol
設為ssh
時,才會套用此屬性。 connectivity.containerId
-
要測試之 Docker 容器的容器 ID 或名稱。
只有當
connectivity.protocol
設為docker
時,才會套用此屬性。 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.auth.credentials.privKeyPath
-
用來登入要測試之裝置的私有金鑰的完整路徑。
connectivity.port
-
選用。用於 SSH 連接的端口號。
預設值為 22。
此屬性僅適用於
connectivity.protocol
已設定為ssh
。 greengrassLocation
-
AWS IoT Greengrass Core 軟體在您裝置上的位置。
對於實體裝置,只有當您使用 AWS IoT Greengrass 的現有安裝時,才會使用此值。使用此屬性指示 IDT 使用安裝在您裝置上的 AWS IoT Greengrass Core 軟體版本。
從 AWS IoT Greengrass 提供的 Docker 映像或 Dockerfile 的 Docker 容器中執行測試時,將此值設為
/greengrass
。 kernelConfigLocation
-
選用。(選用) 核心組態檔案的路徑。AWS IoTDevice Tester 會使用這個檔案檢查裝置是否已啟用必要的核心功能。如果未指定,IDT 會使用以下路徑來搜尋核心組態檔案:
/proc/config.gz
和/boot/config-
。AWS IoTDevice Tester 會使用其找到的第一個路徑。<kernel-version>
設定 device.json 以取得 ML 資格
本節說明裝置組態檔案中適用於 ML 資格的選用屬性。如果您計劃針對 ML 資格執行測試,則必須定義適用於您的使用案例的屬性。
您可以使用 device-ml.json
範本來定義裝置的組態設定。此範本包含選用的 ML 屬性。您也可以使用 device.json
並新增 ML 資格屬性。這些檔案位於
中,並包含 ML 資格屬性。如果您使用 <device-tester-extract-location>
/configsdevice-ml.json
,您必須在執行 IDT 測試之前將檔案重新命名為 device.json
。
如需不適用於 ML 資格之裝置組態屬性的相關資訊,請參閱 設定 device.json。
features
陣列中的ml
-
您的主機板支援的 ML 框架。此屬性需要 IDT v3.1.0 或更新版本。
-
如果您的主機板只支援一個框架,請指定該框架。例如:
{ "name": "ml", "value": "mxnet" }
-
如果您的主機板支援多個框架,請以逗號分隔的清單指定框架。例如:
{ "name": "ml", "value": "mxnet,tensorflow" }
-
features
陣列中的mlLambdaContainerizationMode
-
您想要測試的容器化模式。此屬性需要 IDT v3.1.0 或更新版本。
-
選擇
process
以非容器化 Lambda 函數執行 ML 推論程式碼。此選項需要 AWS IoT Greengrass v1.10.x 或更新版本。 -
選擇
container
以容器化 Lambda 函數執行 ML 推論程式碼。 -
選擇
both
以兩種模式執行 ML 推論程式碼。此選項需要 AWS IoT Greengrass v1.10.x 或更新版本。
-
features
陣列中的processor
-
指出主機板支援的硬體加速器。此屬性需要 IDT v3.1.0 或更新版本。
-
如果您的主機板使用 CPU 做為處理器,請選擇
cpu
。 -
如果您的主機板使用 GPU 做為處理器,請選擇
gpu
。
-
machineLearning
-
選用。ML 資格測試的組態資訊。此屬性需要 IDT v3.1.0 或更新版本。
dlrModelPath
-
使用
dlr
框架時需要。DLR 編譯模型目錄的絕對路徑,必須命名為resnet18
。如需詳細資訊,請參閱 編譯 DLR 模型。注意
以下是 macOS 上的範例路徑:
/Users/
。<user>
/Downloads/resnet18 environmentVariables
-
鍵值組的陣列,可以動態地將設定傳遞給 ML 推論測試。對於 CPU 裝置為選用。您可以使用此區段來新增裝置類型所需的框架特定環境變數。如需這些需求的相關資訊,請參閱框架或裝置的官方網站。例如,若要在某些裝置上執行 MxNet 推論測試,可能需要下列環境變數。
"environmentVariables": [ ... { "key": "PYTHONPATH", "value": "$MXNET_HOME/python:$PYTHONPATH" }, { "key": "MXNET_HOME", "value": "$HOME/mxnet/" }, ... ]
注意
value
欄位可能會根據您的 MxNet 安裝而有所不同。如果您正在測試使用容器化,為 GPU 庫添加環境變量。這使得 GPU 可以執行計算。若要使用不同的 GPU 程式庫,請參閱程式庫或裝置的官方文件。
注意
如果
mlLambdaContainerizationMode
功能設定為container
或both
,請設定下列鍵。"environmentVariables": [ { "key": "PATH", "value": "
<path/to/software/bin>
:$PATH" }, { "key": "LD_LIBRARY_PATH", "value": "<path/to/ld/lib>
" }, ... ] deviceResources
-
GPU 裝置所需。包含本機資源,可以通過 Lambda 函數訪問。使用此區段可新增本機裝置和磁碟區資源。
-
對於裝置資源,請指定
"type": "device"
。對於 GPU 裝置,裝置資源應該是/dev
下的 GPU 相關裝置檔案。注意
/dev/shm
目錄是例外狀況。它僅能設為磁碟區資源。 -
對於磁碟區資源,請指定
"type": "volume"
。
-