AWS IoT Device Advisor 疑難排解指南 - AWS IoT Core

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

AWS IoT Device Advisor 疑難排解指南

協助我們改善此主題
一般
問:我可以平行執行多個測試套件嗎?

答案:是。Device Advisor 現在支援使用裝置層級端點,在不同裝置上執行多個測試套件。如果您使用帳戶級別的端點,則可以一次執行一個套件,因為每個帳戶只會有一個 Device Advisor 端點。如需詳細資訊,請參閱如何設定裝置

問:我從裝置看到裝置建議程式拒絕TLS連線。這是預期的行為嗎?

答:是。「裝置建議程式」會在每次測試執行之前和之後拒絕TLS連線。我們建議使用者實作裝置重試機制,以獲取 Device Advisor 的全自動化測試體驗。如果您執行含有多個測試案例的測試套件,例TLS如MQTT連線、連線和MQTT發佈,則建議您為裝置建置一個機制。該機制可以嘗試每 5 秒連線到我們的測試端點,持續一到兩分鐘。然後,您可以採取自動方式依序執行多個測試用例。

問:是否可以取得在我的帳戶上撥打 Device Advisor API 呼叫的歷史記錄,以便進行安全分析和操作疑難排解?

答案:是。若要接收在您帳戶上API撥打的「裝置顧問」通話記錄,只要 CloudTrail 開啟 AWS IoT 管理主控台並將事件來源篩選為iotdeviceadvisor.amazonaws.com

問:如何檢視「裝置建議程式」登入 CloudWatch?

答:如果將所需策略(例 CloudWatch 如)添加到服務角色(請設定參閱 CloudWatchFullAccess),則在測試套件運行期間生成的日誌會上傳到。如果測試套件中至少有一個測試用例,則會使用兩個日誌流創建日誌組「aws/iot/ 設備顧問/testSuiteId$」。一個流是「$testRunId」,包括在測試套件中執行測試用例之前和之後採取的操作日誌,例如設置和清理步驟。另一個日誌流是「$ suiteRunId _$」testRunId,這是特定於測試套件運行。從裝置傳送的事件和 AWS IoT Core 將被記錄到這個日誌流。

問:裝置許可角色的用途為何?

答:設備顧問站在您的測試設備和 AWS IoT Core 模擬測試場景。它接受來自測試設備的連接和消息並將其轉發到 AWS IoT Core 通過假設您的設備權限角色並代表您啟動連接。確保設備角色權限與用於運行測試的證書上的權限相同非常重要。 AWS IoT 當「裝置建議程式」起始連線時,不會強制執行憑證原則 AWS IoT Core 使用裝置權限角色代表您。不過,會強制執行您設定之裝置許可角色的許可。

問:Device Advisor 支援哪些區域?

答:在 us-east-1、us-west-2、ap-northeast-1 和 eu-west-1 區域中支援 Device Advisor。

問:為什麼我會看到不一致的結果?

答:結果不一致的主要原因之一是將測試的 EXECUTION_TIMEOUT 值設定過低。如需建議和預設 EXECUTION_TIMEOUT 值的詳細資訊,請參閱 Device Advisor 測試案例

問:裝置建MQTT議程式支援哪些通訊協定?

答:「裝置建議程式」支援具有 X509 用戶端憑證的 3.1.1 MQTT 版。

問:如果嘗試將裝置連結到測試端點後,我的測試案例依舊失敗,並且顯示執行逾時的訊息,那麼該怎麼辦?

答:驗證 [建立要用作裝置IAM角色的角色] 下的所有步驟。如果測試仍然失敗,可能是因為裝置未傳送正確的「伺服器名稱指示」(SNI) 延伸模組,這是「裝置建議程式」運作所需的。正確的SNI值是遵循「設定您的裝置」區段後傳回的端點位址。 AWS IoT 也需要裝置將伺服器名稱指示 (SNI) 延伸功能傳送至傳輸層安全性 (TLS) 通訊協定。如需詳細資訊,請參閱中的傳輸安全性 AWS IoT.

問:我的MQTT連線失敗,並顯示「libaws-c-mqtt: AWS_ERROR _ _ MQTT UNEXPECTED _HANGUP」錯誤 (或) 我裝置的MQTT連線正在自動中斷與「裝置建議程式」端點的連線。如何解決此錯誤?

答:導致這種特定錯誤代碼和非預期中斷連線狀況的原因有很多,但最有可能與連接至裝置的裝置角色有關。以下檢查點 (依優先順序排列) 將解決此問題。

  • 連接到設備的設備角色必須具有運行測試所需的最低IAM權限。「裝置建議程式」會使用連接的裝置角色來執行 AWS IoT MQTT代表測試設備的操作。若缺少所需的許可,當裝置嘗試連線至 Device Advisor 端點時,則會顯示 AWS_ERROR_MQTT_UNEXPECTED_HANGUP 錯誤或發生非預期的中斷連線狀況。例如,如果您選取執行「MQTT發佈」測試用例,則「Connect」和「發佈」動作都必須包含在具有對應 ClientId 和「主題」的角色中 (您可以使用逗號分隔值來提供多個值,也可以使用萬用字元 (*) 字元來提供前置字元值。例如:若要提供開頭為 TestTopic 的任一主題發佈許可,您可提供 "TestTopic*" 作為資源值。以下是一些政策範例

  • 在裝置角色中為資源類型定義的值,與程式碼中使用的實際值不相符。例如:角色中 ClientId 定義的不匹配和設備代碼中實際 ClientId 使用的不匹配。設備角色和代碼中的值(例 ClientId如,主題和) TopicFilter 必須相同。

  • 裝置所連接的裝置憑證必須處於作用中,且使用資源所需的動作許可,將政策連接至這些裝置。請注意,裝置憑證原則會授與或拒絕存取 AWS IoT 資源和 AWS IoT Core 資料平面作業。Device Advisor 會要求您將作用中的裝置憑證連接至您的裝置,以便授予測試案例期間所使用的動作許可。