本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Amazon IoT Device Defender 演示
介绍
本演示向您说明如何使用Amazon IoT要连接的设备 Defender 库Amazon IoT Device Defender. 该演示使用 CoreMQTT 库通过 TLS 建立 MQTT 连接(相互身份验证)到Amazon IoTMQTT Broker 和 CoreJSON 库,用于验证和解析从Amazon IoT Device Defender服务。该演示向您展示了如何使用从设备收集的指标来构建 JSON 格式的报告,以及如何将构建的报告提交给Amazon IoT Device Defender服务。该演示还展示了如何在 CoreMQTT 库中注册回调函数以处理来自Amazon IoT Device Defender服务来确认已发送的报告是被接受还是拒绝。
要设置和运行 FreeRTOS 演示,请按照中的步骤操作入门.
功能
此演示创建了一个应用程序任务,演示如何收集指标、以 JSON 格式构建设备防御者报告并将其提交到Amazon IoT Device Defender通过安全的 MQTT 连接到Amazon IoTMQTT 经纪商。该演示包括标准网络指标以及自定义指标。对于自定义指标,演示包括:
-
名为” 的指标
task_numbers
“这是 FreeRTOS 任务 ID 的列表。此指标的类型是 “数字列表”。 -
名为” 的指标
stack_high_water_mark
“这是演示应用程序任务的堆栈高水位线。此指标的类型是 “数字”。
我们收集网络指标的方式取决于正在使用的 TCP/IP 堆栈。对于 Freeerto+TCP 和支持的 lwIP 配置,我们提供了指标收集实施,这些指标收集实施可以从设备收集真实指标并在Amazon IoT Device Defender报告。你可以找到实现FreeRTOS+TCP
对于使用任何其他 TCP/IP 堆栈的主板,我们提供指标收集函数的存根定义,这些指标收集函数为所有网络指标返回零。实现中的函数
让你的网络堆栈发送真实的指标。该文件也在GitHubfreertos
/demos/device_defender_for_aws/metrics_collector/stub/metrics_collector.c
对于 ESP32,默认 lwIP 配置不使用核心锁定,因此演示将使用存根指标。如果要使用参考 lwIP 指标收集实现,请在中定义以下宏lwiopts.h
:
#define LINK_SPEED_OF_YOUR_NETIF_IN_BPS 0 #define LWIP_TCPIP_CORE_LOCKING 1 #define LWIP_STATS 1 #define MIB2_STATS 1
下面是运行演示时的示例输出。

如果你的主板没有使用 Freeerto+TCP 或支持的 lwIP 配置,则输出将如下所示。

演示的源代码在下载中
目录或GitHubfreertos
/demos/device_defender_for_aws/
订阅Amazon IoT Device Defender话题
这些区域有:订阅 Defender 主题DEFENDER_API_JSON_ACCEPTED
以构造主题字符串,用于接收接受的设备防御者报告的响应。它使用宏DEFENDER_API_JSON_REJECTED
以构造主题字符串,用于接收拒绝的设备防御者报告的响应。
收集设备指标
这些区域有:收集 DeviceMetricsmetrics_collector.h
. 收集的指标包括发送和接收的字节数和数据包数、打开的 TCP 端口、开放的 UDP 端口以及已建立的 TCP 连接。
生成Amazon IoT Device Defender报告
这些区域有:生成设备指标报告report_builder.h
. 该函数采用网络指标和缓冲区,按照预期的格式创建 JSON 文档Amazon IoT Device Defender然后将其写入提供的缓冲区。期望的 JSON 文档格式Amazon IoT Device Defender在中指定设备端指标中的Amazon IoT开发人员指南.
发布Amazon IoT Device Defender报告
这些区域有:Amazon IoT Device Defender在 MQTT 主题上发布报告,用于发布 JSONAmazon IoT Device Defender报告。该报告是使用宏来构建的DEFENDER_API_JSON_PUBLISH
,如本所示代码段
处理回复的回调
这些区域有:发布回调Defender_MatchTopic
从中提供 APIAmazon IoT Device Defender库来检查传入的 MQTT 消息是否来自Amazon IoT Device Defender服务。如果消息来自Amazon IoT Device Defender服务,它会解析收到的 JSON 响应并在响应中提取报告 ID。然后验证报告 ID 与报告中发送的 ID 相同。