疑難排解 IDTAWS IoT GreengrassV2 - AWS IoT Greengrass

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

疑難排解 IDTAWS IoT GreengrassV2

IDT 適用於AWS IoT GreengrassV2 根據錯誤類型將錯誤寫入不同的位置。IDT 會將錯誤寫入主控台、記錄檔和測試報告。

在哪裡尋找錯誤

測試運行時,控制台上會顯示高級錯誤,並在所有測試完成時顯示失敗測試的摘要。awsiotdevicetester_report.xml包含導致測試失敗的所有錯誤的摘要。IDT 將每次測試運行的日誌文件存儲在具有用於測試執行的 UUID 的目錄中,該目錄在測試運行期間顯示在控制台上。

IDT 測試日誌目錄是<device-tester-extract-location>/results/<execution-id>/logs/。此目錄包含表格中顯示的下列檔案。這適用於除錯。

檔案 描述
test_manager.log

測試運行時寫入控制台的日誌。此檔案結尾的結果摘要包含測試失敗的清單。

這個檔案中的警告和錯誤日誌提供有關失敗的一些資訊。

test-group-id/test-case-id/test-name.log 測試組中特定測試的詳細日誌。對於部署 Greengrass 組件的測試,測試用例日誌文件被調用greengrass-test-run.log
test-group-id/test-case-id/greengrass.log 詳細記錄AWS IoT Greengrass核心軟體。IDT 運行安裝的測試時,從被測設備複製此文件AWS IoT Greengrass設備上的核心軟件。如需有關此記錄檔中訊息的更多資訊,請參閱疑難排 AWS IoT Greengrass V2
test-group-id/test-case-id/component-name.log 測試運行期間部署的 Greengrass 組件的詳細日誌。IDT 執行部署特定元件的測試時,會從被測裝置複製元件記錄檔。每個元件記錄檔的名稱都會對應至已部署元件的名稱。如需有關此記錄檔中訊息的更多資訊,請參閱疑難排 AWS IoT Greengrass V2

解決 IDT 的解決方案AWS IoT GreengrassV2 錯誤

在您執行 IDT 之前AWS IoT Greengrass」中,取得正確的組態檔案。如果您收到剖析和組態錯誤,您的第一個步驟是尋找並使用適合您環境的組態範本。

如果您仍然有問題,請參閱下列除錯程序。

別名解析錯誤

當您執行自訂測試套件時,您可能會在主控台和test_manager.log

Couldn't resolve placeholders: couldn't do a json lookup: index out of range

當 IDT 測試協調器中設定的別名無法正確解析,或者如果解析的值不存在於組態檔案中,就會發生此錯誤。要解決此錯誤,請確保您的device.jsonuserdata.json 包含測試套件所需的正確信息。有關所需配置的信息AWS IoT Greengrass資格,請參閱設定 IDT 設定以執行 AWS IoT Greengrass 資格套件

衝突錯誤

執行時,您可能會看到下列錯誤AWS IoT Greengrass合格套件同時在多個設備上。

ConflictException: Component [com.example.IDTHelloWorld : 1.0.0] for account [account-id] already exists with state: [DEPLOYABLE] { RespMetadata: { StatusCode: 409, RequestID: “id” }, Message_: “Component [com.example.IDTHelloWorld : 1.0.0] for account [account-id] already exists with state: [DEPLOYABLE]” }

尚未支援並行測試執行AWS IoT Greengrass資格套房。為每個裝置順序執行合格套件。

無法開始測試錯誤

您可能會遇到指向測試嘗試啟動時發生的失敗的錯誤。有數種可能的原因,因此,請執行下列動作:

  • 確保執行命令中的池名稱確實存在。IDT 直接從您的device.json文件。

  • 確保您集區中的裝置都有正確的組態參數。

碼頭資格圖像存在錯誤

Docker 應用程式管理員資格測試使用amazon/amazon-ec2-metadata-mockAmazon ECR 中的容器映像檔,以符合被測裝置的資格。

如果圖像已經存在於待測設備上的 Docker 容器中,則可能會收到以下錯誤。

The Docker image amazon/amazon-ec2-metadata-mock:version already exists on the device.

如果您之前已下載此映像並執行amazon/amazon-ec2-metadata-mock設備上的容器,請確保在運行資格測試之前從被測設備中刪除此映像。

無法讀取認證

在測試 Windows 設備時,您可能會遇到Failed to read credential錯誤中的greengrass.logfile,如果您用於連接到被測設備的用戶未在該設備的憑據管理器中設置。

要解決此錯誤,請在被測設備的憑據管理器中配置 IDT 用戶的用戶和密碼。

如需詳細資訊,請參閱設定 Windows 裝置的使用者身份證明

基斯錯誤與 PreInstalled 格蘭格拉斯

在使用運行 IDT 時 PreInstalled 格蘭格拉斯,如果你遇到錯誤Guice或者ErrorInCustomProvider,檢查文件userdata.json具有InstalledDirRootOnDevice設置為綠色安裝文件夾。IDT 會檢查檔案effectiveConfig.yaml<InstallationDirRootOnDevice>/config/effectiveConfig.yaml

如需詳細資訊,請參閱設定 Windows 裝置的使用者身份證明

無效的簽章例外

當您執行 Lambda 資格測試時,您可能會遇到invalidsignatureexception如果您的 IDT 主機遇到網路存取問題,則會發生錯誤。重置路由器並再次運行測試。

機器學習資格錯誤

當您執行機器學習 (ML) 資格測試時,如果您的裝置不符合要求以部署AWS-提供的 ML 組件。若要疑難排解 ML 限定錯誤,請執行下列動作:

  • 在測試運行期間部署的組件的組件日誌中查找錯誤詳細信息。元件記錄檔位於<device-tester-extract-location>/results/<execution-id>/logs/<test-group-id>目錄。

  • 添加-Dgg.persist=installed.software的參數test.json失敗測試用例的文件。該test.json檔案位於<device-tester-extract-location>/tests/GGV2Q_version directory.

開放式測試架構 (OTF) 部署失敗

如果 OTF 測試無法完成部署,可能的原因可能是為父資料夾設定的權限TempResourcesDirOnDeviceInstallationDirRootOnDevice。若要正確設定此資料夾的權限,請執行下列命令。取代folder-name與父文件夾的名稱。

sudo chmod 755 folder-name

剖析錯誤

JSON 組態中的錯別字可能會導致剖析錯誤。在大部分的情況下,問題是出在 JSON 檔案中省略了括弧、逗號或引號。IDT 會執行 JSON 驗證並列印除錯資訊。該工具會印出發生錯誤的行、行號和語法錯誤的欄號。此資訊應足以協助您修正錯誤,但是如果您仍然找不到錯誤,您可以在 IDE、Atom 或 Sublime 等文字編輯器中手動執行驗證,或透過 JsonLint 等線上工具執行驗證。

拒絕許可錯誤

IDT 會在待測裝置的各種目錄和檔案上執行操作。這些操作中有些需要根存取。IDT 必須能夠在不輸入密碼的情況下使用 sudo 執行命令,才能自動化這些操作。

依照以下步驟,在不輸入密碼的情況下允許 sudo 存取。

注意

userusername 是指 IDT 存取待測裝置時所使用的 SSH 使用者。

  1. 使用 sudo usermod -aG sudo <ssh-username> 將您的 SSH 使用者新增至 sudo 群組。

  2. 登出後再登入,以使變更生效。

  3. 開啟 /etc/sudoers 檔案,然後在檔案結尾處新增以下一行:<ssh-username> ALL=(ALL) NOPASSWD: ALL

    注意

    最佳實務為建議您在編輯 /etc/sudoers 時使用 sudo visudo

資格報告產生錯誤

IDT 支持最新的四個major.minor的版本AWS IoT GreengrassV2 資格套件 (GGV2Q) 可產生您可以提交的資格報告AWS Partner Network將您的裝置包含在AWS Partner裝置目錄。較早版本的資格套件不會產生資格報告。

如果您對支援政策有任何疑問,請聯絡AWS Support

遺漏必要參數錯誤

當 IDT 添加新功能時,它可能會對配置文件進行更改。使用舊的組態檔案可能會破壞組態。如果發生這種情況,/results/<execution-id>/logs 下的 <test_case_id>.log 檔案會明確列出所有遺漏的參數。IDT 也會驗證您的 JSON 組態檔結構描述,以確認您使用的是最新的受支援版本。

macOS 上的安全性例外

當您在 macOS 主機上運行 IDT 時,它會阻止 IDT 運行。若要執行 IDT,請將安全性例外授與屬於 IDT 執行階段功能一部分的可執行檔。當您看到主機電腦上顯示的警告訊息時,請針對每個適用的可執行檔執行下列動作:

將安全例外授與 IDT 可執行檔

  1. 在 MacOS 計算機上,在蘋果菜單上,打開系統偏好

  2. 選擇安全性與隱私權」,然後在「」將軍」標籤上,選擇鎖定圖示以變更安全性設定。

  3. 在被阻止的情況下devicetester_mac_x86-64,尋找訊息"devicetester_mac_x86-64" was blocked from use because it is not from an identified developer.並選擇仍然允許

  4. 繼續 IDT 測試,直到您完成所有涉及的可執行文件。

SSH 連線錯誤

當 IDT 無法連接到被測設備時,它會記錄連接故障/results/<execution-id>/logs/<test-case-id>.log。SSH 消息顯示在此日誌文件的頂部,因為連接到被測設備是 IDT 執行的第一個操作之一。

大部分的 Windows 設定都會使用膩子終端機應用程式來連線到 Linux 主機。此應用程式會要求您將標準 PEM 私密金鑰檔案轉換為稱為 PPK 的專屬 Windows 格式。如果你在你的配置 SSHdevice.json檔案中,請使用 PEM 檔案。如果您使用 PPK 檔案,IDT 將無法建立與AWS IoT Greengrass設備,無法運行測試。

從 IDT v4.4.0 開始,如果您尚未在被測設備上啟用 SFTP,則可能會在日誌文件中看到以下錯誤。

SSH connection failed with EOF

若要解決此錯誤,請在您的裝置上啟用 SFTP。

串流管理員資格錯誤

當您執行串流管理員資格測試時,您可能會在com.aws.StreamManagerExport.log文件。

Failed to upload data to S3

串流管理員使用AWS中的認證~/root/.aws/credentials您的設備上的文件,而不是使用 IDT 導出到被測設備的環境憑據。若要避免發生此問題,請刪除credentials在您的設備上文件,然後重新運行資格測試。

逾時錯誤

您可以通過指定應用於每個測試超時的默認值的超時倍數來增加每個測試的超時時間。此旗標設定的任何值必須大於或等於 1.0。

若要使用逾時乘數,請在執行測試時使用旗標 --timeout-multiplier。例如:

./devicetester_linux run-suite --suite-id GGV2Q_1.0.0 --pool-id DevicePool1 --timeout-multiplier 2.5

如需詳細資訊,請執行 run-suite --help

由於配置問題而無法完成 IDT 測試用例時,會發生一些超時錯誤。您無法藉由增加逾時倍數來解決這些錯誤。使用測試運行中的日誌來解決基礎配置問題。

  • 如果 MQTT 或 Lambda 元件記錄包含Access denied錯誤,您的 Greengrass 安裝文件夾可能沒有正確的文件權限。針對您在中定義的安裝路徑中的每個資料夾執行下列命令userdata.json文件。

    sudo chmod 755 folder-name
  • 如果 Greengrass 記錄檔指出 Greengrass CLI 部署尚未完成,請執行下列動作:

    • 驗證bash安裝在被測設備上。

    • 如果您的userdata.json檔案包括GreengrassCliVersion配置參數,將其刪除。此參數在 IDT v4.1.0 及更新版本中已淘汰。如需詳細資訊,請參閱配置用戶數據

  • 如果 Lambda 部署測試失敗並顯示「驗證 Lambda 發佈:逾時」的錯誤訊息,且您在測試記錄檔中收到錯誤訊息 (idt-gg2-lambda-function-idt-<resource-id>.log)說Error: Could not find or load main class com.amazonaws.greengrass.runtime.LambdaRuntime.,執行下列動作:

    • 確認使用的資料夾InstallationDirRootOnDeviceuserdata.json文件。

    • 確保您的設備上設置了正確的用戶權限。如需詳細資訊,請參閱在您的裝置上設定使用者權限

版本檢查錯誤

IDT 發出以下錯誤時AWSIDT 使用者的使用者登入資料沒有必要的 IAM 許可。

Failed to check version compatibility

該AWS沒有必要 IAM 許可的使用者。