本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用本節中的疑難排解資訊和解決方案,以協助解決 Greengrass 用戶端裝置和用戶端裝置元件的問題。
Greengrass 探索問題
使用下列資訊來疑難排解 Greengrass 探索的問題。當用戶端裝置使用 Greengrass 探索 API 來識別其可連線的 Greengrass 核心裝置時,可能會發生這些問題。
主題
Greengrass 探索問題 (HTTP API)
使用下列資訊來疑難排解 Greengrass 探索的問題。如果您使用 cURL 測試探索 API,可能會看到這些錯誤。
主題
curl: (52) Empty reply from server
如果您在請求中指定非作用中的 AWS IoT 憑證,您可能會看到此錯誤。
檢查用戶端裝置是否具有連接的憑證,以及憑證是否處於作用中狀態。如需詳細資訊,請參閱《 AWS IoT Core 開發人員指南》中的將物件或政策連接至用戶端憑證,以及啟用或停用用戶端憑證。
HTTP 403: {"message":null,"traceId":"a1b2c3d4-5678-90ab-cdef-11111EXAMPLE"}
如果用戶端裝置沒有greengrass:Discover
自行呼叫的許可,您可能會看到此錯誤。
檢查用戶端裝置的憑證是否具有允許 的政策greengrass:Discover
。您無法在此許可的 Resource
區段中使用物件政策變數 (iot:Connection.Thing.
)。如需詳細資訊,請參閱探索身分驗證和授權。*
HTTP 404: {"errorMessage":"The thing provided for discovery was not found"}
在下列情況中,您可能會看到此錯誤:
-
用戶端裝置未與任何 Greengrass 核心裝置或 AWS IoT Greengrass V1 群組建立關聯。
-
用戶端裝置相關聯的 Greengrass 核心裝置或 AWS IoT Greengrass V1 群組都沒有 MQTT 代理程式端點。
-
用戶端裝置相關聯的 Greengrass 核心裝置都不會執行用戶端裝置驗證元件。
檢查用戶端裝置是否與您要其連線的核心裝置相關聯。然後,檢查核心裝置是否執行用戶端裝置驗證元件,並至少有一個 MQTT 代理程式端點。如需詳細資訊,請參閱下列內容:
Greengrass 探索問題 (AWS IoT Device SDK v2 for Python)
使用下列資訊來疑難排解AWS IoT Device SDK 適用於 Python 的 v2
主題
awscrt.exceptions.AwsCrtError: AWS_ERROR_HTTP_CONNECTION_CLOSED: The connection has closed or is closing.
如果您在請求中指定非作用中的 AWS IoT 憑證,您可能會看到此錯誤。
檢查用戶端裝置是否具有連接的憑證,以及憑證是否處於作用中狀態。如需詳細資訊,請參閱《 AWS IoT Core 開發人員指南》中的將物件或政策連接至用戶端憑證,以及啟用或停用用戶端憑證。
awsiot.greengrass_discovery.DiscoveryException: ('Error during discover call: response_code=403', 403)
如果用戶端裝置沒有greengrass:Discover
自行呼叫的許可,您可能會看到此錯誤。
檢查用戶端裝置的憑證是否具有允許 的政策greengrass:Discover
。您無法在此許可的 Resource
區段中使用物件政策變數 (iot:Connection.Thing.
)。如需詳細資訊,請參閱探索身分驗證和授權。*
awsiot.greengrass_discovery.DiscoveryException: ('Error during discover call: response_code=404', 404)
在下列情況中,您可能會看到此錯誤:
-
用戶端裝置未與任何 Greengrass 核心裝置或 AWS IoT Greengrass V1 群組建立關聯。
-
用戶端裝置相關聯的 Greengrass 核心裝置或 AWS IoT Greengrass V1 群組都沒有 MQTT 代理程式端點。
-
用戶端裝置相關聯的 Greengrass 核心裝置都不會執行用戶端裝置驗證元件。
檢查用戶端裝置是否與您要其連線的核心裝置相關聯。然後,檢查核心裝置是否執行用戶端裝置驗證元件,並至少有一個 MQTT 代理程式端點。如需詳細資訊,請參閱下列內容:
Greengrass 探索問題 (適用於 C++ 的AWS IoT Device SDK v2)
使用下列資訊來疑難排解適用於 AWS IoT Device SDK C++ 的 v2
主題
aws-c-http: AWS_ERROR_HTTP_CONNECTION_CLOSED, The connection has closed or is closing.
如果您在請求中指定非作用中的 AWS IoT 憑證,您可能會看到此錯誤。
檢查用戶端裝置是否具有連接的憑證,以及憑證是否處於作用中狀態。如需詳細資訊,請參閱《 AWS IoT Core 開發人員指南》中的將物件或政策連接至用戶端憑證,以及啟用或停用用戶端憑證。
aws-c-common: AWS_ERROR_UNKNOWN, Unknown error. (HTTP 403)
如果用戶端裝置沒有greengrass:Discover
自行呼叫的許可,您可能會看到此錯誤。
檢查用戶端裝置的憑證是否具有允許 的政策greengrass:Discover
。您無法在此許可的 Resource
區段中使用物件政策變數 (iot:Connection.Thing.
)。如需詳細資訊,請參閱探索身分驗證和授權。*
aws-c-common: AWS_ERROR_UNKNOWN, Unknown error. (HTTP 404)
在下列情況中,您可能會看到此錯誤:
-
用戶端裝置未與任何 Greengrass 核心裝置或 AWS IoT Greengrass V1 群組建立關聯。
-
用戶端裝置相關聯的 Greengrass 核心裝置或 AWS IoT Greengrass V1 群組都沒有 MQTT 代理程式端點。
-
用戶端裝置相關聯的 Greengrass 核心裝置都不會執行用戶端裝置驗證元件。
檢查用戶端裝置是否與您要其連線的核心裝置相關聯。然後,檢查核心裝置是否執行用戶端裝置驗證元件,並至少有一個 MQTT 代理程式端點。如需詳細資訊,請參閱下列內容:
Greengrass 探索問題 (適用於 JavaScript 的AWS IoT Device SDK v2)
使用下列資訊來疑難排解適用於 AWS IoT Device SDK JavaScript 的 v2
主題
Error: aws-c-http: AWS_ERROR_HTTP_CONNECTION_CLOSED, The connection has closed or is closing.
如果您在請求中指定非作用中的 AWS IoT 憑證,您可能會看到此錯誤。
檢查用戶端裝置是否具有連接的憑證,以及憑證是否處於作用中狀態。如需詳細資訊,請參閱《 AWS IoT Core 開發人員指南》中的將物件或政策連接至用戶端憑證,以及啟用或停用用戶端憑證。
Error: Discovery failed (headers: [object Object]) { response_code: 403 }
如果用戶端裝置沒有greengrass:Discover
自行呼叫的許可,您可能會看到此錯誤。
檢查用戶端裝置的憑證是否具有允許 的政策greengrass:Discover
。您無法在此許可的 Resource
區段中使用物件政策變數 (iot:Connection.Thing.
)。如需詳細資訊,請參閱探索身分驗證和授權。*
Error: Discovery failed (headers: [object Object]) { response_code: 404 }
在下列情況中,您可能會看到此錯誤:
-
用戶端裝置未與任何 Greengrass 核心裝置或 AWS IoT Greengrass V1 群組建立關聯。
-
用戶端裝置相關聯的 Greengrass 核心裝置或 AWS IoT Greengrass V1 群組都沒有 MQTT 代理程式端點。
-
用戶端裝置相關聯的 Greengrass 核心裝置都不會執行用戶端裝置驗證元件。
檢查用戶端裝置是否與您要其連線的核心裝置相關聯。然後,檢查核心裝置是否執行用戶端裝置驗證元件,並至少有一個 MQTT 代理程式端點。如需詳細資訊,請參閱下列內容:
Error: Discovery failed (headers: [object Object])
當您執行 Greengrass 探索範例時,您可能會看到此錯誤 (沒有 HTTP 回應碼)。此錯誤可能因多種原因而發生。
-
如果用戶端裝置沒有
greengrass:Discover
自行呼叫的許可,您可能會看到此錯誤。檢查用戶端裝置的憑證是否具有允許 的政策
greengrass:Discover
。您無法在此許可的Resource
區段中使用物件政策變數 (iot:Connection.Thing.
)。如需詳細資訊,請參閱探索身分驗證和授權。*
-
在下列情況中,您可能會看到此錯誤:
-
用戶端裝置未與任何 Greengrass 核心裝置或 AWS IoT Greengrass V1 群組建立關聯。
-
用戶端裝置相關聯的 Greengrass 核心裝置或 AWS IoT Greengrass V1 群組都沒有 MQTT 代理程式端點。
-
用戶端裝置相關聯的 Greengrass 核心裝置都不會執行用戶端裝置驗證元件。
檢查用戶端裝置是否與您要其連線的核心裝置相關聯。然後,檢查核心裝置是否執行用戶端裝置驗證元件,並至少有一個 MQTT 代理程式端點。如需詳細資訊,請參閱下列內容:
-
Greengrass 探索問題 (適用於 Java 的AWS IoT Device SDK v2)
使用下列資訊來疑難排解適用於 AWS IoT Device SDK Java 的 v2
主題
software.amazon.awssdk.crt.CrtRuntimeException: Error Getting Response Status Code from HttpStream. (aws_last_error: AWS_ERROR_HTTP_DATA_NOT_AVAILABLE(2062), This data is not yet available.)
如果您在請求中指定非作用中的 AWS IoT 憑證,您可能會看到此錯誤。
檢查用戶端裝置是否具有連接的憑證,以及憑證是否處於作用中狀態。如需詳細資訊,請參閱《 AWS IoT Core 開發人員指南》中的將物件或政策連接至用戶端憑證,以及啟用或停用用戶端憑證。
java.lang.RuntimeException: Error x-amzn-ErrorType(403)
如果用戶端裝置沒有greengrass:Discover
自行呼叫的許可,您可能會看到此錯誤。
檢查用戶端裝置的憑證是否具有允許 的政策greengrass:Discover
。您無法在此許可的 Resource
區段中使用物件政策變數 (iot:Connection.Thing.
)。如需詳細資訊,請參閱探索身分驗證和授權。*
java.lang.RuntimeException: Error x-amzn-ErrorType(404)
在下列情況中,您可能會看到此錯誤:
-
用戶端裝置未與任何 Greengrass 核心裝置或 AWS IoT Greengrass V1 群組建立關聯。
-
用戶端裝置相關聯的 Greengrass 核心裝置或 AWS IoT Greengrass V1 群組都沒有 MQTT 代理程式端點。
-
用戶端裝置相關聯的 Greengrass 核心裝置都不會執行用戶端裝置驗證元件。
檢查用戶端裝置是否與您要其連線的核心裝置相關聯。然後,檢查核心裝置是否執行用戶端裝置驗證元件,並至少有一個 MQTT 代理程式端點。如需詳細資訊,請參閱下列內容:
MQTT 連線問題
使用下列資訊對用戶端裝置 MQTT 連線的問題進行故障診斷。當用戶端裝置嘗試透過 MQTT 連線至核心裝置時,可能會發生這些問題。
主題
io.moquette.broker.Authorizator: Client does not have read permissions on the topic
當用戶端裝置嘗試訂閱沒有許可的 MQTT 主題時,您可能會在 Greengrass 日誌中看到此錯誤。錯誤訊息包含 主題。
檢查用戶端裝置驗證元件的組態是否包含下列項目:
-
符合用戶端裝置的裝置群組。
-
該裝置群組的用戶端裝置授權政策,授予主題的
mqtt:subscribe
許可。
如需如何部署和設定用戶端裝置身分驗證元件的詳細資訊,請參閱以下內容:
MQTT 連線問題 (Python)
當您使用 AWS IoT Device SDK v2 for Python
主題
AWS_ERROR_MQTT_PROTOCOL_ERROR: Protocol error occurred
如果用戶端裝置身分驗證元件未定義用戶端裝置授權政策,以授予用戶端裝置連線的許可,您可能會看到此錯誤。
檢查用戶端裝置驗證元件的組態是否包含下列項目:
-
符合用戶端裝置的裝置群組。
-
該裝置群組的用戶端裝置授權政策,授予用戶端裝置的
mqtt:connect
許可。
如需如何部署和設定用戶端裝置身分驗證元件的詳細資訊,請參閱以下內容:
AWS_ERROR_MQTT_UNEXPECTED_HANGUP: Unexpected hangup occurred
如果用戶端裝置身分驗證元件未定義用戶端裝置授權政策來授予用戶端裝置連線許可,則可能會看到此錯誤。
檢查用戶端裝置驗證元件的組態是否包含下列項目:
-
符合用戶端裝置的裝置群組。
-
該裝置群組的用戶端裝置授權政策,授予用戶端裝置的
mqtt:connect
許可。
如需如何部署和設定用戶端裝置身分驗證元件的詳細資訊,請參閱以下內容:
MQTT 連線問題 (C++)
當您使用 AWS IoT Device SDK v2 for C++
主題
AWS_ERROR_MQTT_PROTOCOL_ERROR: Protocol error occurred
如果用戶端裝置身分驗證元件未定義用戶端裝置授權政策,以授予用戶端裝置連線的許可,您可能會看到此錯誤。
檢查用戶端裝置驗證元件的組態是否包含下列項目:
-
符合用戶端裝置的裝置群組。
-
該裝置群組的用戶端裝置授權政策,授予用戶端裝置的
mqtt:connect
許可。
如需如何部署和設定用戶端裝置身分驗證元件的詳細資訊,請參閱以下內容:
AWS_ERROR_MQTT_UNEXPECTED_HANGUP: Unexpected hangup occurred
如果用戶端裝置身分驗證元件未定義用戶端裝置授權政策,以授予用戶端裝置連線的許可,您可能會看到此錯誤。
檢查用戶端裝置驗證元件的組態是否包含下列項目:
-
符合用戶端裝置的裝置群組。
-
該裝置群組的用戶端裝置授權政策,授予用戶端裝置的
mqtt:connect
許可。
如需如何部署和設定用戶端裝置身分驗證元件的詳細資訊,請參閱以下內容:
MQTT 連線問題 (Java)
當您使用 AWS IoT Device SDK v2 for Java
主題
software.amazon.awssdk.crt.mqtt.MqttException: Protocol error occurred
如果用戶端裝置身分驗證元件未定義用戶端裝置授權政策,以授予用戶端裝置連線的許可,您可能會看到此錯誤。
檢查用戶端裝置驗證元件的組態是否包含下列項目:
-
符合用戶端裝置的裝置群組。
-
該裝置群組的用戶端裝置授權政策,授予用戶端裝置的
mqtt:connect
許可。
如需如何部署和設定用戶端裝置身分驗證元件的詳細資訊,請參閱以下內容:
AWS_ERROR_MQTT_UNEXPECTED_HANGUP: Unexpected hangup occurred
如果用戶端裝置身分驗證元件未定義用戶端裝置授權政策,以授予用戶端裝置連線的許可,您可能會看到此錯誤。
檢查用戶端裝置驗證元件的組態是否包含下列項目:
-
符合用戶端裝置的裝置群組。
-
該裝置群組的用戶端裝置授權政策,授予用戶端裝置的
mqtt:connect
許可。
如需如何部署和設定用戶端裝置身分驗證元件的詳細資訊,請參閱以下內容:
MQTT 連線問題 (JavaScript)
當您使用 AWS IoT Device SDK v2 for JavaScript
主題
AWS_ERROR_MQTT_PROTOCOL_ERROR: Protocol error occurred
如果用戶端裝置身分驗證元件未定義用戶端裝置授權政策,以授予用戶端裝置連線的許可,您可能會看到此錯誤。
檢查用戶端裝置驗證元件的組態是否包含下列項目:
-
符合用戶端裝置的裝置群組。
-
該裝置群組的用戶端裝置授權政策,授予用戶端裝置的
mqtt:connect
許可。
如需如何部署和設定用戶端裝置身分驗證元件的詳細資訊,請參閱以下內容:
AWS_ERROR_MQTT_UNEXPECTED_HANGUP: Unexpected hangup occurred
如果用戶端裝置身分驗證元件未定義用戶端裝置授權政策,以授予用戶端裝置連線的許可,您可能會看到此錯誤。
檢查用戶端裝置驗證元件的組態是否包含下列項目:
-
符合用戶端裝置的裝置群組。
-
該裝置群組的用戶端裝置授權政策,授予用戶端裝置的
mqtt:connect
許可。
如需如何部署和設定用戶端裝置身分驗證元件的詳細資訊,請參閱以下內容: