排除客户端设备故障排除 - Amazon IoT Greengrass
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

排除客户端设备故障排除

使用本节中的故障排除信息和解决方案来帮助解决 Greengrass 客户端设备和客户端设备组件的问题。

Greengrass s 发现问题

使用以下信息来解决 Gress 发现问题。当客户端设备使用 Greengrass 发现 API 来识别它们可以连接的 Greengrass 核心设备时,可能会出现这些问题。

Greengrass 发现问题 (HTTP API)

使用以下信息来解决 Gress 发现问题。如果你使用 c URL 测试发现 API,你可能会看到这些错误。

curl: (52) Empty reply from server

如果您在请求中指定了无效Amazon IoT证书,则可能会看到此错误。

检查客户端设备是否附加了证书,以及该证书是否处于活动状态。有关更多信息,请参阅Amazon 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 核心设备或Amazon IoT Greengrass V1组相关联。

  • 客户端设备的关联所有 Greengrass 核心设备或Amazon IoT Greengrass V1组都没有 MQTT 代理端点。

  • 客户端设备的关联所有 Greengrass 核心设备均不运行客户端设备身份验证组件

检查客户端设备是否与您要连接的核心设备相关联。然后,检查核心设备是否运行客户端设备身份验证组件并且至少有一个 MQTT 代理端点。有关更多信息,请参阅下列内容:

Greengrass 发现问题(Python 的Amazon IoT Device SDK v2)

使用以下信息来解决在 Amazon IoT Device SDKv2 for Python 中发现 Greengrass 的问题。

awscrt.exceptions.AwsCrtError: AWS_ERROR_HTTP_CONNECTION_CLOSED: The connection has closed or is closing.

如果您在请求中指定了无效Amazon IoT证书,则可能会看到此错误。

检查客户端设备是否附加了证书,以及该证书是否处于活动状态。有关更多信息,请参阅Amazon 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 核心设备或Amazon IoT Greengrass V1组相关联。

  • 客户端设备的关联所有 Greengrass 核心设备或Amazon IoT Greengrass V1组都没有 MQTT 代理端点。

  • 客户端设备的关联所有 Greengrass 核心设备均不运行客户端设备身份验证组件

检查客户端设备是否与您要连接的核心设备相关联。然后,检查核心设备是否运行客户端设备身份验证组件并且至少有一个 MQTT 代理端点。有关更多信息,请参阅下列内容:

Greengrass 发现问题(C++ 的Amazon IoT Device SDK v2)

使用以下信息来解决在 Amazon IoT Device SDKv2 for C++ 中发现 Greengrass 的问题。

aws-c-http: AWS_ERROR_HTTP_CONNECTION_CLOSED, The connection has closed or is closing.

如果您在请求中指定了无效Amazon IoT证书,则可能会看到此错误。

检查客户端设备是否附加了证书,以及该证书是否处于活动状态。有关更多信息,请参阅Amazon 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 核心设备或Amazon IoT Greengrass V1组相关联。

  • 客户端设备的关联所有 Greengrass 核心设备或Amazon IoT Greengrass V1组都没有 MQTT 代理端点。

  • 客户端设备的关联所有 Greengrass 核心设备均不运行客户端设备身份验证组件

检查客户端设备是否与您要连接的核心设备相关联。然后,检查核心设备是否运行客户端设备身份验证组件并且至少有一个 MQTT 代理端点。有关更多信息,请参阅下列内容:

Greengrass 发现问题(Amazon IoT Device SDKv2 for JavaScript)

使用以下信息来解决在 Amazon IoT Device SDKv2 中发现 Greengrass 时出现的问题 JavaScript。

Error: aws-c-http: AWS_ERROR_HTTP_CONNECTION_CLOSED, The connection has closed or is closing.

如果您在请求中指定了无效Amazon IoT证书,则可能会看到此错误。

检查客户端设备是否附加了证书,以及该证书是否处于活动状态。有关更多信息,请参阅Amazon 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 核心设备或Amazon IoT Greengrass V1组相关联。

  • 客户端设备的关联所有 Greengrass 核心设备或Amazon IoT Greengrass V1组都没有 MQTT 代理端点。

  • 客户端设备的关联所有 Greengrass 核心设备均不运行客户端设备身份验证组件

检查客户端设备是否与您要连接的核心设备相关联。然后,检查核心设备是否运行客户端设备身份验证组件并且至少有一个 MQTT 代理端点。有关更多信息,请参阅下列内容:

Error: Discovery failed (headers: [object Object])

当你运行 Greengrass 发现示例时,你可能会看到这个错误(没有 HTTP 响应代码)。有多种原因可能导致此错误发生。

  • 如果客户端设备没有权限自行调用greengrass:Discover,您可能会看到此错误。

    检查客户端设备的证书是否有允许的策略greengrass:Discover。您不能在该Resource部分中使用事物策略变量 (iot:Connection.Thing.*) 来获得此权限。有关更多信息,请参阅发现身份验证和授权

  • 在以下情况下,您可能会看到此错误发生:

    • 客户端设备未与任何 Greengrass 核心设备或Amazon IoT Greengrass V1组相关联。

    • 客户端设备的关联所有 Greengrass 核心设备或Amazon IoT Greengrass V1组都没有 MQTT 代理端点。

    • 客户端设备的关联所有 Greengrass 核心设备均不运行客户端设备身份验证组件

    检查客户端设备是否与您要连接的核心设备相关联。然后,检查核心设备是否运行客户端设备身份验证组件并且至少有一个 MQTT 代理端点。有关更多信息,请参阅下列内容:

Greengrass 发现问题(适用于 Java 的Amazon IoT Device SDK v2)

使用以下信息来解决在 Amazon IoT Device SDKv2 for Java 中发现 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.)

如果您在请求中指定了无效Amazon IoT证书,则可能会看到此错误。

检查客户端设备是否附加了证书,以及该证书是否处于活动状态。有关更多信息,请参阅Amazon 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 核心设备或Amazon IoT Greengrass V1组相关联。

  • 客户端设备的关联所有 Greengrass 核心设备或Amazon IoT Greengrass V1组都没有 MQTT 代理端点。

  • 客户端设备的关联所有 Greengrass 核心设备均不运行客户端设备身份验证组件

检查客户端设备是否与您要连接的核心设备相关联。然后,检查核心设备是否运行客户端设备身份验证组件并且至少有一个 MQTT 代理端点。有关更多信息,请参阅下列内容:

MQTT 连接问题

使用以下信息来解决客户端设备 MTT 连接问题。当客户端设备尝试通过 MQTT 连接到核心设备时,可能会出现这些问题。

io.moquette.broker.Authorizator: Client does not have read permissions on the topic

当客户端设备尝试订阅没有权限的 MQTT 主题时,您可能会在 Greengrass 日志中看到此错误。错误消息包含主题。

检查客户端设备身份验证组件的配置是否包括以下内容:

  • 与客户端设备匹配的设备组。

  • 该设备组的客户端设备授权策略,用于授予该主题的mqtt:subscribe权限。

有关如何部署和配置客户端设备身份验证组件的更多信息,请参阅以下内容:

MQTT 连接问题 (Python)

在使用 Amazon IoT Device SDKv2 for Python 时,使用以下信息来解决客户端设备 MQTT 连接的问题。

AWS_ERROR_MQTT_PROTOCOL_ERROR: Protocol error occurred

如果客户端设备身份验证组件未定义授予客户端设备连接权限的客户端设备授权策略,则可能会看到此错误。

检查客户端设备身份验证组件的配置是否包括以下内容:

  • 与客户端设备匹配的设备组。

  • 该设备组的客户端设备授权策略,用于为客户端设备授予mqtt:connect权限。

有关如何部署和配置客户端设备身份验证组件的更多信息,请参阅以下内容:

AWS_ERROR_MQTT_UNEXPECTED_HANGUP: Unexpected hangup occurred

如果客户端设备身份验证组件未定义授予客户端设备连接权限的客户端设备授权策略,则可能会看到此错误。

检查客户端设备身份验证组件的配置是否包括以下内容:

  • 与客户端设备匹配的设备组。

  • 该设备组的客户端设备授权策略,用于为客户端设备授予mqtt:connect权限。

有关如何部署和配置客户端设备身份验证组件的更多信息,请参阅以下内容:

MQTT 连接问题 (C++)

使用以下信息来解决在使用 Amazon IoT Device SDKv2 for C++ 时客户端设备 MQTT 连接的问题。

AWS_ERROR_MQTT_PROTOCOL_ERROR: Protocol error occurred

如果客户端设备身份验证组件未定义授予客户端设备连接权限的客户端设备授权策略,则可能会看到此错误。

检查客户端设备身份验证组件的配置是否包括以下内容:

  • 与客户端设备匹配的设备组。

  • 该设备组的客户端设备授权策略,用于为客户端设备授予mqtt:connect权限。

有关如何部署和配置客户端设备身份验证组件的更多信息,请参阅以下内容:

AWS_ERROR_MQTT_UNEXPECTED_HANGUP: Unexpected hangup occurred

如果客户端设备身份验证组件未定义授予客户端设备连接权限的客户端设备授权策略,则可能会看到此错误。

检查客户端设备身份验证组件的配置是否包括以下内容:

  • 与客户端设备匹配的设备组。

  • 该设备组的客户端设备授权策略,用于为客户端设备授予mqtt:connect权限。

有关如何部署和配置客户端设备身份验证组件的更多信息,请参阅以下内容:

MQTT 连接问题 (Java)

使用适用于 Java 的Amazon IoT Device SDK v2 时,使用以下信息来解决客户端设备 MQTT 连接的问题。

software.amazon.awssdk.crt.mqtt.MqttException: Protocol error occurred

如果客户端设备身份验证组件未定义授予客户端设备连接权限的客户端设备授权策略,则可能会看到此错误。

检查客户端设备身份验证组件的配置是否包括以下内容:

  • 与客户端设备匹配的设备组。

  • 该设备组的客户端设备授权策略,用于为客户端设备授予mqtt:connect权限。

有关如何部署和配置客户端设备身份验证组件的更多信息,请参阅以下内容:

AWS_ERROR_MQTT_UNEXPECTED_HANGUP: Unexpected hangup occurred

如果客户端设备身份验证组件未定义授予客户端设备连接权限的客户端设备授权策略,则可能会看到此错误。

检查客户端设备身份验证组件的配置是否包括以下内容:

  • 与客户端设备匹配的设备组。

  • 该设备组的客户端设备授权策略,用于为客户端设备授予mqtt:connect权限。

有关如何部署和配置客户端设备身份验证组件的更多信息,请参阅以下内容:

MQTT 连接问题 (JavaScript)

当您使用 Amazon 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权限。

有关如何部署和配置客户端设备身份验证组件的更多信息,请参阅以下内容: