AWS IoT 裝置顧問疑難排解指 - AWS IoT Core

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

AWS IoT 裝置顧問疑難排解指

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

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

問:我從我的裝置看到 TLS 連線遭到 Device Advisor 的拒絕。這是預期的行為嗎?

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

問:我能否取得從我的帳戶呼叫 Device Advisor API 的歷史記錄,以進行安全分析和作業的疑難排解?

答:可以。若要接收對您帳戶進行的 Device Advisor 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 測試案例

問:Device Advisor 支援的 MQTT 通訊協定為何?

答:Device Advisor 支援具有 X509 用戶端憑證的 MQTT 版本 3.1.1。

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

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

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

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

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

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

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