AWS IoT 设备顾问疑难解答指南 - AWS IoT Core

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

AWS IoT 设备顾问疑难解答指南

帮助我们改进此主题
常规
问:我是否可以并行运行多个测试套件?

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

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

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

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

答:可以。要接收使用您的账户进行的 Device Advisor API 调用的历史记录,您只需 CloudTrail 在 AWS IoT 管理控制台中打开并筛选事件源即可iotdeviceadvisor.amazonaws.com

问:如何查看 Device Advisor 登录信息 CloudWatch?

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

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

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

问:我的 MQTT 连接失败并出现 “libaws-c-mqtt: AWS_ERROR_MQTT_EXPERTD_HANGUP” 错误(或者)我的设备的 MQTT 连接已自动与设备顾问终端节点断开连接。如何解决此错误?

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

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

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

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