AWS IoT Core
通过 MQTT 和 HTTPS 实现 IoT 设备与云之间双向通信的全托管服务,支持数十亿台设备连接和基于证书的认证
概述
AWS IoT Core 是一项全托管服务,将传感器和嵌入式设备等 IoT 设备安全连接到 AWS 云,实现双向消息传递。支持轻量协议 MQTT 以及 HTTPS 和 MQTT over WebSocket,可根据设备通信需求选择协议。通过设备影子实现离线时的状态管理、规则引擎实现消息路由和转换、X.509 证书实现双向认证,作为大规模 IoT 系统的构建基础。
MQTT 协议与设备连接架构
IoT Core 的消息代理支持 MQTT 3.1.1 和 MQTT 5.0 协议。MQTT 是为带宽受限和不稳定网络设计的轻量发布/订阅协议,非常适合 IoT 场景。设备通过 X.509 客户端证书与 IoT Core 建立 TLS 双向认证连接,确保通信安全。每个设备注册为 Thing (物),附加属性和证书。IoT 策略 (类似 IAM 策略) 控制设备可发布/订阅的主题,实现精细的访问控制。连接数可扩展到数百万并发设备,消息代理自动扩缩容无需容量规划。
规则引擎与消息路由
规则引擎是 IoT Core 的核心功能,基于 SQL 语句对传入消息进行过滤、转换和路由。规则的 SELECT 子句可提取和转换消息字段,WHERE 子句可按条件过滤,FROM 子句指定监听的 MQTT 主题 (支持通配符)。操作目标包括 Lambda、S3、DynamoDB、Kinesis、SQS、SNS、IoT Analytics、Elasticsearch 等 15 种以上 AWS 服务。典型模式:温度传感器数据超过阈值时触发 Lambda 发送告警、所有遥测数据存储到 S3 数据湖、设备状态变更写入 DynamoDB。错误操作可指定规则执行失败时的备用目标,确保消息不丢失。
设备影子与离线场景处理
设备影子 (Device Shadow) 是存储在云端的设备状态 JSON 文档,由 reported (设备报告的当前状态) 和 desired (应用期望的目标状态) 两部分组成。设备离线时应用可更新 desired 状态,设备重新上线后自动接收差异并同步。这解决了 IoT 系统中设备间歇性连接的根本问题。命名影子允许一个设备拥有多个影子,按功能分离状态管理 (如照明影子、温度影子)。影子文档的每次变更都记录版本号,支持乐观锁并发控制。Fleet Indexing 功能可对数百万设备的影子状态建立索引,支持按属性值搜索设备 (如查找所有固件版本低于 2.0 的设备)。