

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

# AWS IoT Device Advisor 疑難排解指南
<a name="device-advisor-troubleshooting"></a>

**協助我們改善此主題**  
 [讓我們知道如何能使其變得更好](https://docs.aws.amazon.com//forms/aws-doc-feedback?hidden_service_name=IoT%20Docs&topic_url=http://docs.aws.amazon.com/en_us/iot/latest/developerguide/device-advisor-troubleshooting.html) 一般

問：我可以平行執行多個測試套件嗎？  
答案：是。Device Advisor 現在支援使用裝置層級端點，在不同裝置上執行多個測試套件。如果您使用帳戶級別的端點，則可以一次執行一個套件，因為每個帳戶只會有一個 Device Advisor 端點。如需詳細資訊，請參閱[如何設定裝置](https://docs.aws.amazon.com/iot/latest/developerguide/device-advisor-setting-up.html#da-configure-device)。

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

問：我能否取得從我的帳戶呼叫 Device Advisor API 的歷史記錄，以進行安全分析和作業的疑難排解？   
答：可以。若要接收您帳戶上 Device Advisor API 呼叫的歷史記錄，您只需在 AWS IoT 管理主控台中開啟 CloudTrail，並將事件來源篩選為 `iotdeviceadvisor.amazonaws.com`。

問：我要如何在 CloudWatch 中檢視 Device Advisor 日誌？  
答：若您將所需的政策 (例如 **CloudWatchFullAccess**) 新增至您的服務角色 (請參閱 [設定](device-advisor-setting-up.md))，則於測試套件執行期間所產生的日誌會上傳至 CloudWatch。如果測試套件中至少有一個測試案例，則會使用兩個日誌串流建立「aws/iot/deviceadvisor/\$1testSuiteId」日誌群組。有一個串流是 "\$1testRunId"，包括在測試套件中執行測試案例前後所採取動作的日誌，例如設定和清理步驟。另一個日誌串流是 "\$1suiteRunId\$1\$1testRunId"，專門用於測試套件的執行。從裝置 和 傳送的事件 AWS IoT Core 將記錄到此日誌串流。

問：裝置許可角色的用途為何？  
答：Device Advisor 位於您的測試裝置和 之間 AWS IoT Core ，以模擬測試案例。其會接受來自您測試裝置的連接和訊息，透過承擔您裝置許可角色並代表您啟動連線，將其轉送至 AWS IoT Core 。請務必確保裝置角色許可與您用於執行測試之憑證上的許可相同。當 Device Advisor 使用裝置許可角色 AWS IoT Core 代表您啟動與 的連線時，不會強制執行 AWS IoT 憑證政策。不過，會強制執行您設定之裝置許可角色的許可。

問：Device Advisor 支援哪些區域？  
答：在 us-east-1、us-west-2、ap-northeast-1 和 eu-west-1 區域中支援 Device Advisor。

問：為什麼我會看到不一致的結果？  
答：結果不一致的主要原因之一是將測試的 `EXECUTION_TIMEOUT` 值設定過低。如需建議和預設 `EXECUTION_TIMEOUT` 值的詳細資訊，請參閱 [Device Advisor 測試案例](https://docs.aws.amazon.com//iot/latest/developerguide/device-advisor-tests.html)。

問：Device Advisor 支援的 MQTT 通訊協定為何？  
答：Device Advisor 支援具有 X509 用戶端憑證的 MQTT 版本 3.1.1。

問：如果嘗試將裝置連結到測試端點後，我的測試案例依舊失敗，並且顯示執行逾時的訊息，那麼該怎麼辦？  
答：驗證[建立要用作裝置角色的 IAM 角色](https://docs.aws.amazon.com//iot/latest/developerguide/device-advisor-setting-up.html#da-iam-role)之下的所有步驟。如果測試仍然失敗，則可能是因為裝置未傳送正確的伺服器名稱指示 (SNI) 擴充功能，Device Advisor 必須有這項功能才能運作。正確的 SNI 值是遵循[設定您的裝置區段](https://docs.aws.amazon.com//iot/latest/developerguide/device-advisor-setting-up.html#da-configure-device)時傳回的端點地址。 AWS IoT 也需要裝置將伺服器名稱指示 (SNI) 擴充功能傳送至 Transport Layer Security (TLS) 通訊協定。如需詳細資訊，請參閱在 [中傳輸安全性 AWS IoT](https://docs.aws.amazon.com//iot/latest/developerguide/transport-security.html)。

問：我的 MQTT 連線失敗，並顯示 "libaws-c-mqtt: AWS\$1ERROR\$1MQTT\$1UNEXPECTED\$1HANGUP" 錯誤，或目前正自動從 Device Advisor 端點中斷裝置的 MQTT 連線。如何解決此錯誤？  
答：導致這種特定錯誤代碼和非預期中斷連線狀況的原因有很多，但最有可能與連接至裝置的[裝置角色](https://docs.aws.amazon.com/iot/latest/developerguide/device-advisor-setting-up.html#da-iam-role)有關。以下檢查點 (依優先順序排列) 將解決此問題。  
+ 連接至裝置的裝置角色必須具有執行測試所需的最低 IAM 許可。Device Advisor 會使用連接的裝置角色，代表測試裝置來執行 AWS IoT MQTT 動作。若缺少所需的許可，當裝置嘗試連線至 Device Advisor 端點時，則會顯示 `AWS_ERROR_MQTT_UNEXPECTED_HANGUP` 錯誤或發生非預期的中斷連線狀況。例如，若您選擇執行 **MQTT Publish** (MQTT 發佈) 測試案例，則必須在角色中包含 Connect (連線) 和 Publish (發佈) 動作，以及對應的 ClientId 和 Topic (您在提供多個值時可使用逗號加以區隔，且可使用萬用字元 (\$1) 來提供字首值)。例如：若要提供開頭為 `TestTopic` 的任一主題發佈許可，您可提供 "`TestTopic*`" 作為資源值。以下是一些[政策範例](https://docs.aws.amazon.com/iot/latest/developerguide/example-iot-policies.html)。
+ 在裝置角色中為資源類型定義的值，與程式碼中使用的實際值不相符。例如：角色中定義的 ClientId 與裝置代碼中使用的實際 ClientId 不相符。諸如 ClientId、Topic 和 TopicFilter 等值，在裝置角色與程式碼當中必須相同。
+ 裝置所連接的裝置憑證必須處於作用中，且使用[資源](https://docs.aws.amazon.com//iot/latest/developerguide/iot-action-resources.html)所需的[動作許可](https://docs.aws.amazon.com//iot/latest/developerguide/iot-policy-actions.html)，將[政策](https://docs.aws.amazon.com//iot/latest/developerguide/certificate-policy-examples.html)連接至這些裝置。請注意，裝置憑證政策會授予或拒絕存取 AWS IoT 資源和 AWS IoT Core 資料平面操作。Device Advisor 會要求您將作用中的裝置憑證連接至您的裝置，以便授予測試案例期間所使用的動作許可。