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 要求您将活跃设备证书附加到您的设备,该证书可授予在测试使用案例期间使用的操作权限。
-