本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
設定 IDT 設定以執行 AWS IoT Greengrass 資格套件
在執行測試之前,您必須設定主機電腦上的 AWS 認證和裝置的設定。
在設定. AWS json 中設定認證
您必須在檔案中設定 IAM 使用者登入
資料。使用中建立之 AWS IoT Greengrass V2 使用者之 IDT 的證明資料。建立和設定 AWS 帳戶您可以使用下列兩種方式的其中之一指定登入資料:<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>
若要設定 AWS IoT Greengrass V2 的 IDT 使用credentials
檔案中的 AWS 認證,請依照下列步驟編輯config.json
檔案:
{ "awsRegion": "
region
", "auth": { "method": "file", "credentials": { "profile": "default" } } }
注意
如果您不使用default
AWS 設定檔,請務必變更檔案中的設定config.json
檔名稱。如需詳細資訊,請參閱具名描述檔。
環境變數是由作業系統維護且由系統命令使用的變數。如果您關閉 SSH 工作階段,則不會儲存它們。IDT for AWS IoT Greengrass V2 可以使用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": "
region
", "auth": { "method": "environment" } }
設定 device.json
注意
IDT v4.9.3 支援測試ml
docker
、和功能。streamManagement
IDT v4.9.4 及更高版本支援測試。docker
如果您不想測試這些功能,請將對應的值設定為no
。
除了 AWS 認證之外, AWS IoT Greengrass V2 的 IDT 還需要有關在其上運行測試的設備的信息。範例資訊包括 IP 位址、登入資訊、作業系統和 CPU 架構。
您必須使用位於
中的
<device_tester_extract_location>
/configs/device.jsondevice.json
範本提供此資訊:
配置用戶數據
IDT for AWS IoT Greengrass V2 還需要有關測試成品和 AWS IoT Greengrass 軟件位置的其他信息。
您必須使用位於
中的
<device_tester_extract_location>
/configs/userdata.jsonuserdata.json
範本提供此資訊:
{ "TempResourcesDirOnDevice": "
/path/to/temp/folder
", "InstallationDirRootOnDevice": "/path/to/installation/folder
", "GreengrassNucleusZip": "/path/to/aws.greengrass.nucleus.zip
", "PreInstalled": "yes/no
", "GreengrassV2TokenExchangeRole": "custom-iam-role-name
", "hsm": { "greengrassPkcsPluginJar": "/path/to
/aws.greengrass.crypto.Pkcs11Provider-latest.jar", "pkcs11ProviderLibrary": "/path/to/pkcs11-vendor-library
", "slotId": "slot-id
", "slotLabel": "slot-label
", "slotUserPin": "slot-pin
", "keyLabel": "key-label
", "preloadedCertificateArn": "certificate-arn
" "rootCA": "path/to/root-ca
" } }
包含值的所有屬性都是必需的,如下所述:
TempResourcesDirOnDevice
-
待測設備上存儲測試工件的臨時文件夾的完整路徑。請確定不需要 sudo 權限即可寫入此目錄。
注意
IDT 會在完成測試執行時刪除此資料夾的內容。
InstallationDirRootOnDevice
-
要安裝之裝置上資料夾的完整路徑 AWS IoT Greengrass。對於 PreInstalled Greengrass 來說,這是安裝目錄的路徑。
您必須為此資料夾設定必要的檔案權限。針對安裝路徑中的每個資料夾執行下列命令。
sudo chmod 755
folder-name
GreengrassNucleusZip
-
主機電腦上 Greengrass 核 ZIP (
greengrass-nucleus-latest.zip
) 檔案的完整路徑。使用 PreInstalled Greengrass 進行測試時不需要此欄位。注意
如需 IDT 的 Greengrass 核受支援版本的資訊,請參閱。 AWS IoT Greengrass適用於 V2 的最新 IDT 版本 AWS IoT Greengrass若要下載最新的 Greengrass 軟體,請參閱下載軟體。 AWS IoT Greengrass
PreInstalled
-
此功能僅適用於 Linux 裝置上的 IDT v4.5.8 及更新版本。
(選擇性) 當值為
yes
時,IDT 會假設中提到的路徑InstallationDirRootOnDevice
為安裝 Greengrass 的目錄。如需有關如何在裝置上安裝 Greengrass 的詳細資訊,請參閱。安裝自動資源佈建的 AWS IoT Greengrass 核心軟體如果使用手動佈建進行安裝,請在手動建立 AWS IoT 物件時包含「將物件新增至新的或現有的AWS IoT 物件群組」步驟。IDT 假設物件與物件群組是在安裝設定期間建立的。請確定這些值反映在
effectiveConfig.yaml
檔案中。IDT 會檢查effectiveConfig.yaml
下<InstallationDirRootOnDevice>/config/effectiveConfig.yaml
的檔案。若要使用 HSM 執行測試,請確定已在中
effectiveConfig.yaml
更新aws.greengrass.crypto.Pkcs11Provider
欄位。 -
GreengrassV2TokenExchangeRole
-
(可選)要用作令牌交換角色的自定義 IAM 角色,該角色被測設備假定與 AWS 資源進行交互。
注意
IDT 使用此自定義 IAM 角色,而不是在測試運行期間創建默認令牌交換角色。如果您使用自訂角色,則可以更新測試使用者的 IAM 許可,以排除允許使用者建立和刪除 IAM 角色和政策的
iamResourcesUpdate
陳述式。如需建立自訂 IAM 角色做為權杖交換角色的詳細資訊,請參閱設定自訂權杖交換角色。
hsm
-
此功能適用於 IDT v4.5.1 及更新版本。
(選擇性) 使用 AWS IoT Greengrass 硬體安全性模組 (HSM) 進行測試的組態資訊。否則,應省略
hsm
屬性。如需詳細資訊,請參閱 硬體安全整合。只有當
connectivity.protocol
設為ssh
時,才會套用此屬性。警告
如果硬體安全模組在 IDT 與其他系統之間共用,則 HSM 組態可能會被視為敏感資料。在此情況下,您可以避免將這些組態值儲存在參數存放區 AWS SecureString 參數中,並將 IDT 設定為在測試執行期間擷取它們,以避免以純文字形式保護這些組態值。如需更多資訊,請參閱從 AWS 參數存放區擷取組態
hsm.greengrassPkcsPluginJar
-
您下載至 IDT 主機的 PKCS #11 提供者元件的完整路徑。 AWS IoT Greengrass 將此元件提供為 JAR 檔案,您可以下載該檔案,以便在安裝期間指定為佈建外掛程式。您可以透過下列網址下載最新版本的元件 JAR 檔案:https://d2s8p88vqu9w66.cloudfront.net/releases/Pkcs11Provider/aws.greengrass.crypto.Pkcs11Provider-latest.jar
。 hsm.pkcs11ProviderLibrary
-
PKCS #11 程式庫的完整路徑,由硬體安全性模組 (HSM) 廠商所提供,可與 HSM 互動。
hsm.slotId
-
用來識別您將金鑰和憑證載入的 HSM 插槽的插槽識別碼。
hsm.slotLabel
-
用於識別您將金鑰和憑證載入的 HSM 插槽的插槽標籤。
hsm.slotUserPin
-
IDT 用來向 HSM 驗證 AWS IoT Greengrass 核心軟體的使用者 PIN 碼。
注意
安全性最佳做法是,請勿在生產裝置上使用相同的使用者 PIN 碼。
hsm.keyLabel
-
用於識別硬體模組中之金鑰的標籤。金鑰和憑證都必須使用相同的金鑰標籤。
hsm.preloadedCertificateArn
-
AWS IoT 雲端中已上傳裝置憑證的 Amazon 資源名稱 (ARN)。
您必須先前使用 HSM 中的金鑰產生此憑證,並將其匯入您的 HSM,並將其上傳到雲端 AWS IoT 。如需產生及匯入憑證的相關資訊,請參閱 HSM 的說明文件。
您必須將憑證上傳到與 config.json 中提供的相同帳戶和區域。 。如需將憑證上傳至的詳細資訊 AWS IoT,請參閱AWS IoT 開發人員指南中的手動註冊用戶端憑證。
hsm.rootCAPath
-
(選擇性) IDT 主機上到簽署憑證之根憑證授權單位 (CA) 的完整路徑。如果在您建立的 HSM 中的憑證未由 Amazon 根 CA 簽署,則需要這個動作。
從 AWS 參數存放區擷取組態
AWS IoT 裝置測試器 (IDT) 包含選用功能,可從「AWS Systems Manager 參數存放區」擷取組態值。 AWS 參數存放區允許安全且加密的組態儲存。設定完成後,IDT 可以從 AWS 參數存放區擷取參數,以取代以純文字形式將參數儲存在檔案內。userdata.json
這對於應加密存儲的任何敏感數據非常有用,例如:密碼,PIN 和其他密碼。
-
若要使用此功能,您必須更新建立 IDT 使用者時所使用的權限,以允許針對已配置 IDT 使用的參數 GetParameter 執行動作。以下是可新增至 IDT 使用者的權限陳述式範例。如需詳細資訊,請參閱AWS Systems Manager 使用者指南。
{ "Sid":"parameterStoreResources", "Effect": "Allow", "Action": [ "ssm:GetParameter" ], "Resource": "arn:aws:ssm:*:*:parameter/IDT*" }
上述權限設定為允許使用萬用字
*
元擷取名稱開IDT
頭為的所有參數。您應該根據需要對其進行自定義,以便 IDT 可以根據您正在使用的參數的命名獲取任何配置的參數。 -
您需要在 AWS 參數商店中存儲配置值。這可以從 AWS 控制台或從 AWS CLI 完成。 AWS 參數存放區可讓您選擇加密或未加密的儲存。若要儲存機密、密碼和 pin 碼等敏感值,您應該使用的是參數類型的加密選項 SecureString。若要使用 AWS CLI 上傳參數,您可以使用下列命令:
aws ssm put-parameter --name IDT-example-name --value IDT-example-value --type SecureString
您可以使用下列指令驗證是否已儲存參數。(選擇性) 使用
--with-decryption
旗標擷取已解密的SecureString 參數。aws ssm get-parameter --name IDT-example-name
使用 AWS CLI 將在目前 CLI 使用者的 AWS 區域中上傳參數,IDT 會從中
config.json
設定的區域擷取參數。若要從 AWS CLI 檢查您的區域,請使用下列指令:aws configure get region
-
一旦您在 AWS 雲中有一個配置值,您可以更新 IDT 配置中的任何值以從 AWS 雲中獲取。若要這麼做,您可以在表單
{{AWS.Parameter.parameter_name}}
的 IDT 組態中使用預留位置,從參數存放區依該名稱擷取 AWS 參數。例如,假設您想要在 HSM 組態中使用步驟 2 中的
IDT-example-name
參數作為 HSM 金鑰標籤。要做到這一點,你可以更新你的userdata.json
如下:"hsm": { "keyLabel": "{{AWS.Parameter.IDT-example-name}}", [...] }
IDT 會在執行階段擷取
IDT-example-value
在步驟 2 中設定為的此參數值。此設定與設定類似,"keyLabel": "IDT-example-value"
但是該值會以加密方式儲存在 AWS 雲端中。