亚马逊AWS IoT
一.AWS IoT简介
1.1 AWS IoT平台的优势
(1)广泛而深入
AWS 拥有从边缘到云端的广泛而深入的 IoT 服务。设备软件、Amazon FreeRTOS 和 AWS IoT Greengrass 提供本地数据收集和分析能力。在云中,AWS IoT 是唯一一家将数据管理和丰富分析集成在易于使用的服务中的供应商,这些服务专为繁杂的 IoT 数据而设计。
(2)多层安全性
AWS IoT 提供适用于所有安全层的服务。AWS IoT 包括预防性安全机制,如设备数据的加密和访问控制。AWS IoT 还提供持续监控和审核安全配置的服务。您可以收到警报,以便缓解潜在的安全问题,例如将安全修复程序推送到设备。
(3)卓越的AI集成
AWS 将 AI 和 IoT 结合在一起,使设备更为智能化。您可以在云端创建模型,然后将它们部署到运行速度达到其他产品 2 倍的设备。AWS IoT 将数据发回至云端,以持续改进模型。与其他产品相比,AWS IoT 还支持更多的机器学习框架。
(4)大规模得到验证
AWS IoT 构建于可扩展、安全且经过验证的云基础设施之上,可扩展到数十亿种不同的设备和数万亿条消息。AWS IoT 还与 AWS Lambda、Amazon S3 和 Amazon SageMaker 等服务集成,从而让您可以构建完整的解决方案,例如使用 AWS IoT 管理摄像机并使用 Amazon Kinesis 进行机器学习的应用程序。
1.2 AWS IoT 解决方案
(1)工业解决方案
AWS IoT 客户正在构建工业 IoT 应用程序,以预测质量和维护,并远程监控操作
(2)家庭解决方案
AWS IoT 客户正在为家居自动化、家居安全和监控以及家庭网络构建互联家居应用程序。
(3)商业解决方案
AWS IoT 客户构建用于交通监控、公共安全和健康监控的商业应用程序。
1.3 AWS IoT平台定位
(1)AWS IoT是一款托管的云平台,使互联设备可以轻松安全地与云应用程序及其他设备交互。
(2)AWS IoT可支持数十亿台设备和数万亿条消息,并且可以对这些消息进行处理并将其安全可靠地路由至 AWS 终端节点和其他设备。应用程序可以随时跟踪所有设备并与其通信,即使这些设备未处于连接状态也不例外。
(3)使用AWS Lambda、Amazon Kinesis、Amazon S3、Amazon Machine Learning、Amazon DynamoDB、Amazon CloudWatch、AWS CloudTrail 和内置 Kibana 集成的 Amazon Elasticsearch Service 等AWS服务来构建IoT应用程序,以便收集、处理和分析互连设备生成的数据并对其执行操作,且无需管理任何基础设施。
二.AWS IoT 架构
2.1 总体架构图
集成了AWS的功能模块:
- Amazon DynamoDB—托管NoSQL数据库
- Amazon Kinesis—大规模流式数据实时处理
- AWS Lambda—EC2云虚拟机运行代码响应事件
- Amazon Simple Storage Service(S3)—可扩展云存储
- Amazon Simple Notification—推送通知服务
- Amazon Simple Queue Service—消息队列服务
2.2 设备网关
- AWS IoT 设备网关支持设备安全高效地与 AWS IoT 进行通信。设备网关可以使用发布/订阅模式交换消息,从而支持一对一和一对多的通信。凭借此一对多的通信模式,AWS IoT 将支持互连设备向多名给定主题的订阅者广播数据。
- 设备网关支持 MQTT、WebSocket 和 HTTP 1.1 协议,也支持私有协议。
- 设备网关可自动扩展,以支持 10 亿多台设备,而无需预配置基础设施。
2.3 认证授权
- AWS IoT 在所有连接点处提供相互身份验证和加密。AWS IoT 支持 AWS 身份验证方法(称为"SigV4")以及基于身份验证的 X.509 证书。使用 HTTP 的连接可以使用任一方法,使用 MQTT 的连接可以使用基于证书的身份验证,使用 WebSockets 的连接可以使用 SigV4。
- 使用 AWS IoT 生成的证书以及由首选证书颁发机构 (CA) 签署的证书,将所选的角色和/或策略映射到每个证书,以便授予设备或应用程序访问权限,或撤消访问权限。
- 通过控制台或使用 API 创建、部署并管理设备的证书和策略。这些设备证书可以预配置、激活和与使用 AWS IAM 配置的相关策略关联。
- AWS IoT 还支持用户移动应用使用 Amazon Cognito 进行连接,Amazon Cognito 将负责执行必要的操作来为应用用户创建唯一标识符并获取临时的、权限受限的 AWS 凭证。
2.4 注册表
- 注册表将创建设备标识并跟踪元数据,如设备的属性和功能。
- 注册表向格式一致的每台设备分配唯一的标识,而不管设备的类型和连接方式为何。此外,它还支持描述设备功能的元数据,例如传感器是否报告温度,以及数据是华氏度还是摄氏度。
- 注册表存储有关设备的元数据,无需支付额外费用;并且需要每隔 7 天至少访问或更新注册表条目一次,注册表中的元数据就不会过期。
以JSON格式存储的设备注册表信息
2.5 设备影子
2.5.1 设备影子介绍
- 设备影子保留每台设备的最后报告状态和期望的未来状态,即便设备处于离线状态。
- 通过 API 或使用规则引擎,获取设备的最后报告状态或设置期望的未来状态。
- 应用程序可以设置设备的期望未来状态,而无需说明设备的当前状态。AWS IoT 将比较期望未来状态和最后报告状态之间的差异,并命令设备"弥补差异"。
- 设备 SDK 能够轻松地同步其状态及其影子,并响应通过影子设置的期望的未来状态。
- 设备影子免费存储设备状态多达一年。如果至少每年更新一次状态,则设备影子将永久保留状态;否则状态将过期。
2.5.2 设备影子的流程
2.5.3 设备影子的格式
2.6 规则引擎
2.6.1 规则引擎介绍
- 规则引擎验证发布到 AWS IoT 的入站消息,并根据定义的业务规则转换这些消息并将它们传输到另一台设备或云服务。规则可以应用至一台或多台设备中的数据,并且它可以并行执行一个或多 个操作。
- 规则引擎还可以将消息路由到 AWS 终端节点,包括 AWS Lambda、Amazon Kinesis、Amazon S3、Amazon Machine Learning、Amazon DynamoDB、Amazon CloudWatch 和内置 Kibana 集成的 Amazon Elasticsearch Service。外部终端节点可以使用 AWS Lambda、Amazon Kinesis 和 Amazon Simple Notification Service (SNS) 进行连接。
- 使用类似 SQL 的语句编写规则。例如:如果温度读数超出特定阈值,则它可以触发规则以便将数据传输到 AWS Lambda;如果此温度超出其他 5 台设备的平均值 15%,则应采取措施。
- 规则引擎将提供数十个可用于转换数据的可用功能,并且可以通过 AWS Lambda 创建无限个功能。例如,如果正在处理各种不同的数值,则可以取传入数字的平均值。规则还会触发在 AWS Lambda 中执行 Java、Node.js 或 Python 代码,从而提供最高灵活度以及处理设备数据的能力。
2.6.2 规则引擎的作用
规则引擎验证发布至AWS IoT的消息请求,基于业务规则转换消息请求并发布至其它服务,例如:
(1)富集化或过滤从设备收集的数据
(2)将设备数据写入一个亚马逊DynamoDBm数据库
(3)保存文件至亚马逊S3
(4)发送一个推送通知到所有亚马逊SNS用户
(5)向亚马逊SQS队列发布数据
(6)调用Lambda函数抽取数据
(7)使用亚马逊Kinesis处理大量的设备消息数据
(8)发送数据至亚马逊Elasticsearch服务
(9)捕获一条CloudWatch测量数据
(10)更新一条CloudWatch告警
(11)把一条MQTT消息数据发送至亚马逊机器学习服务,基于亚马逊机器学习模型进行预测
2.6.2 实时流式数据处理
N:1 入站的传感器流式数据(数据降噪)
规则引擎过滤、转换、汇总传感器数据后,发送至亚马逊Kinesis处理实时流式数据
Kinesis流式数据共享至其它业务系统
将流式数据的实时处理结果导入至数据库、应用或其它亚马逊服务
2.6.3 推送服务
推送通知
支持苹果APNS推送通知服务、谷歌GCM云消息服务、亚马逊ADM设备消息服务,微软WNS推送服务
亚马逊SNS推送通知服务->HTTP协议终端(短信、邮件)
通过亚马逊SNS推送通知服务,调用第三方HTTP协议终端,支持订阅和重试
2.7 设备管理
- 支持全球或部分地区的固件升级
- 规则引擎在DynamoDBm数据库跟踪升级状态和进度
- 注册表存储设备的固件版本
S3管理固件分发版本
在S3中组织和保障和固件二进制文件
消息代理使用话题模式通知设备分组
通知设备分组固件更新信息,包括S3中的固件二进制文件URL地址
原文地址:https://www.cnblogs.com/lovegrace/p/10982399.html