Amazon IoT Device Advisor 故障排除指南 - Amazon IoT Core
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

Amazon IoT Device Advisor 故障排除指南

帮助我们改进此主题

常规

问:我是否可以并行运行多个测试套件?

答:可以。Device Advisor 现在支持使用设备级终端节点在不同的设备上运行多个测试套件。如果使用账户级终端节点,则可以一次运行一个套件,因为每个账户有一个 Device Advisor 终端节点。有关更多信息,请参阅配置您的设备

问:我从设备看到 TLS 连接被 Device Advisor 拒绝。这样是对的吗?

答:可以。Device Advisor 在每次测试运行之前和之后都会拒绝 TLS 连接。我们建议用户实施设备重试机制,以便使用 Device Advisor 获得全自动的测试体验。如果您执行具有多个测试用例的测试套件(例如 TLS 连接、MQTT 连接和 MQTT 发布),我们建议您为设备构建一个机制。该机制可以每 5 秒便尝试一次连接到测试终端节点,每次持续一到两分钟。通过这种方式,您能够以自动的方式按顺序运行多个测试用例。

问:我能否获得 Device Advisor 在我的账户上发起的所有 API 调用的历史记录,以便用于安全分析和运营方面的故障排除?

答:可以。要获取您账户上的 Device Avisor API 调用的历史记录,只需在 Amazon IoT 管理控制台开启 CloudTrail 并将事件源筛选为 iotdeviceadvisor.amazonaws.com 即可。

问:如何查看 CloudWatch 中的 Device Advisor 日志?

答:如果您将所需的策略(例如,CloudWatchFullAccess)添加到您的服务角色,则在测试套件运行过程中生成的日志将上载到 CloudWatch(请参阅 设置)。如果测试套件中至少有一个测试用例,则会使用两个日志流创建日志组“aws/iot/deviceadvisor/$testSuiteId”。其中一个日志流为“$testRunId”,包括在测试套件中执行测试用例之前和之后执行操作的日志,例如设置和清理步骤。另一个日志流是特定于测试套件运行的“$suiteRunId_$testRunId”。从设备发送的事件和 Amazon IoT Core 将被记录到此日志流中。

问:设备权限角色的目的是什么?

答:Device Advisor 位于您的测试设备和 Amazon IoT Core 之间来模拟测试场景。它接受来自测试设备的连接和消息,并通过承担您的设备权限角色并代表您启动连接来将它们转发到 Amazon IoT Core。请务必确保设备角色权限与用于运行测试的证书上的权限相同。Amazon IoT 证书策略不会在 Device Advisor 使用设备权限角色代表您启动与 Amazon 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 值是在执行配置您的设备部分时返回的终端节点地址。此外,Amazon IoT 还要求设备将服务器名称指示 (SNI) 扩展发送到传输层安全 (TLS) 协议。有关更多信息,请参阅 Amazon IoT 中的传输安全

问:我的 MQTT 连接失败并显示“libaws-c-mqtt: AWS_ERROR_MQTT_UNEXPECTED_HANGUP”错误,(或者)我的设备的 MQTT 连接正在自动断开与 Device Advisor 端点的连接。如何解决此错误?

答:此特定错误代码和意外断开连接可能是由许多不同的原因造成的,但很可能与附加到设备的设备角色相关。下面的检查点(按优先级顺序)将解决此问题。

  • 附加到设备的设备角色必须具有运行测试所需的最低 IAM 权限。Device Advisor 将使用附加的设备角色来代表测试设备执行 Amazon IoT MQTT 操作。如果缺少所需权限,则当设备尝试连接到 Device Advisor 端点时,会看到 AWS_ERROR_MQTT_UNEXPECTED_HANGUP 错误或发生意外断开连接。例如,如果您已选择运行 MQTT 发布测试用例,则 Connect(连接)和 Publish(发布)操作都必须包含在具有相应 ClientId 和 Topic 的角色中(您可以通过使用逗号分隔值来提供多个值,也可以使用通配符(*)字符提供前缀值)。例如,要为任何以 TestTopic 开头的主题提供发布权限,您可以将“TestTopic*”作为资源值。下面是部分策略示例

  • 在设备角色中为资源类型定义的值与代码中使用的实际值不匹配。例如:角色中定义的 ClientId 与设备代码中使用的实际 ClientId 不匹配。ClientId、Topic 和 TopicFilter 之类的值在设备角色和代码中必须相同。

  • 附加到设备的设备证书必须处于活跃状态,并且附加了具有资源所需操作权限策略。请注意,设备证书策略授予或拒绝对 Amazon IoT 资源和 Amazon IoT Core 数据面板操作的访问权限。Device Advisor 要求您将活跃设备证书附加到您的设备,该证书可授予在测试用例期间使用的操作权限。