本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Amazon IoT Device Defender 演示
此演示托管在 Amazon-FreeRTOS 存储库中,该存储库已过时。建议您在创建新项目时从这里开始。如果您已经有一个基于现已弃用的 Amazon-FreeRTOS 存储库的现有 FreeRTOS 项目,请参阅亚马逊 FreeRTOS Github 存储库迁移指南。
介绍
此演示向您展示如何使用 DeviceAmazon IoT Defender 库进行连接Amazon IoT Device Defender。该演示使用 CoreMQTT 库通过 TLS(双向身份验证)建立与 MAmazon IoT QTT Broker 和 CoreJSON 库的 MQTT 连接,以验证和解析从Amazon IoT Device Defender服务收到的响应。该演示向您展示了如何使用从设备收集的指标构建 JSON 格式的报告,以及如何将构建的报告提交给Amazon IoT Device Defender服务。该演示还展示了如何在 CoreMQTT 库中注册回调函数,以处理来自Amazon IoT Device Defender服务的响应,以确认发送的报告是被接受还是被拒绝。
要设置和运行 FreeRTOS 演示,请按照中的步骤操作FreeRTOS 入门。
功能
此演示创建了一个应用程序任务,演示如何收集指标、构建 JSON 格式的设备防御器报告,以及如何通过与 MQTT Broker 的安全 MQTT 连接将其提交给Amazon IoT Device Defender服务。Amazon IoT该演示包括标准网络指标和自定义指标。对于自定义指标,该演示包括:
-
一个名为 “
task_numbers
” 的指标,它是 FreeRTOS 任务 ID 的列表。该指标的类型是 “数字列表”。 -
名为 “
stack_high_water_mark
” 的指标,它是演示应用程序任务的堆栈高水位线。该指标的类型是 “数字”。
我们如何收集网络指标取决于所使用的 TCP/IP 堆栈。对于 FreeRtos+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
下面是一个示例输出,当您运行演示版时。

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

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