疑難排解用戶端 - AWS IoT Greengrass

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

疑難排解用戶端

使用本節中的疑難排解資訊和解決方案,協助解決 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 發現問題(Python 的 AWS IoT Device SDK v2)

請使用下列資訊,針對 Python 的 AWS IoT Device SDKv2 中的 Greengrass 探索進行疑難排解。

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 SDKv2 中適用於 C++ 的 Greengrass 探索問題。

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 發現問題(v2 用於)AWS IoT Device SDK JavaScript

使用下列資訊來疑難排解 v2 中 Greengrass 探索的AWS IoT Device SDK問題。 JavaScript

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)

請使用下列資訊,針對 Java AWS IoT Device SDKv2 中的 Greengrass 探索進行疑難排解。

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 SDKv2 用於 Python 時,請使用下列資訊來疑難排解用戶端裝置 MQTT 連線的問題。

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 SDKv2 進行 C++ 時,請使用下列資訊疑難排解用戶端裝置 MQTT 連線的問題。

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 SDKv2 用於 Java 時,請使用下列資訊來疑難排解用戶端裝置 MQTT 連線的問題。

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 SDKv2 時,用戶端裝置 MQTT 連線的問題。 JavaScript

AWS_ERROR_MQTT_PROTOCOL_ERROR: Protocol error occurred

如果用戶端裝置驗證元件未定義授與用戶端裝置連線權限的用戶端裝置授權原則,您可能會看到此錯誤。

檢查客戶端設備身份驗證組件的配置是否包括以下內容:

  • 符合用戶端裝置的裝置群組。

  • 該裝置群組的用戶端裝置授權原則,mqtt:connect可授與用戶端裝置的權限。

如需有關如何部署和設定用戶端裝置驗證元件的詳細資訊,請參閱下列內容:

AWS_ERROR_MQTT_UNEXPECTED_HANGUP: Unexpected hangup occurred

如果用戶端裝置驗證元件未定義授與用戶端裝置連線權限的用戶端裝置授權原則,您可能會看到此錯誤。

檢查客戶端設備身份驗證組件的配置是否包括以下內容:

  • 符合用戶端裝置的裝置群組。

  • 該裝置群組的用戶端裝置授權原則,mqtt:connect可授與用戶端裝置的權限。

如需有關如何部署和設定用戶端裝置驗證元件的詳細資訊,請參閱下列內容: