国外物联网平台(1):亚马逊AWS IoT

国外物联网平台(1) ——亚马逊AWS IoT

马智

平台定位

  • AWS IoT是一款托管的云平台,使互联设备可以轻松安全地与云应用程序及其他设备交互。
  • AWS IoT可支持数十亿台设备和数万亿条消息,并且可以对这些消息进行处理并将其安全可靠地路由至 AWS 终端节点和其他设备。应用程序可以随时跟踪所有设备并与其通信,即使这些设备未处于连接状态也不例外。
  • 使用AWS Lambda、Amazon Kinesis、Amazon S3、Amazon Machine Learning、Amazon DynamoDB、Amazon CloudWatch、AWS CloudTrail 和内置 Kibana 集成的 Amazon Elasticsearch Service 等AWS服务来构建IoT应用程序,以便收集、处理和分析互连设备生成的数据并对其执行操作,且无需管理任何基础设施。

架构

与AWS IoT平台集成的AWS服务

  • Amazon DynamoDB—托管NoSQL数据库
  • Amazon Kinesis—大规模流式数据实时处理
  • AWS Lambda—EC2云虚拟机运行代码响应事件
  • Amazon Simple Storage Service(S3)—可扩展云存储
  • Amazon Simple Notification—推送通知服务
  • Amazon Simple Queue Service—消息队列服务

设备SDK

  • AWS IoT 设备 SDK 使用 MQTT、HTTP 或 WebSockets 协议将硬件设备连接到 AWS IoT,硬件设备无缝安全地与 AWS IoT 提供的设备网关和设备影子协作。
  • 设备 SDK 支持 C、JavaScript 、Arduino、Java和Python。
  • 设备 SDK 包含开源库、带有示例的开发人员指南和移植指南,用户根据硬件平台构建 IoT 产品或解决方案。

设备网关

  • AWS IoT 设备网关支持设备安全高效地与 AWS IoT 进行通信。设备网关可以使用发布/订阅模式交换消息,从而支持一对一和一对多的通信。凭借此一对多的通信模式,AWS IoT 将支持互连设备向多名给定主题的订阅者广播数据。
  • 设备网关支持 MQTT、WebSocket 和 HTTP 1.1 协议,也支持私有协议。
  • 设备网关可自动扩展,以支持 10 亿多台设备,而无需预配置基础设施。

认证和授权

  • 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 凭证。

注册表

  • 注册表将创建设备标识并跟踪元数据,如设备的属性和功能。
  • 注册表向格式一致的每台设备分配唯一的标识,而不管设备的类型和连接方式为何。此外,它还支持描述设备功能的元数据,例如传感器是否报告温度,以及数据是华氏度还是摄氏度。
  • 注册表存储有关设备的元数据,无需支付额外费用;并且需要每隔 7 天至少访问或更新注册表条目一次,注册表中的元数据就不会过期。

以JSON格式存储的设备注册表信息

设备影子(Shadow)

  • 设备影子保留每台设备的最后报告状态和期望的未来状态,即便设备处于离线状态。
  • 通过 API 或使用规则引擎,获取设备的最后报告状态或设置期望的未来状态。
  • 应用程序可以设置设备的期望未来状态,而无需说明设备的当前状态。AWS IoT 将比较期望未来状态和最后报告状态之间的差异,并命令设备"弥补差异"。
  • 设备 SDK 能够轻松地同步其状态及其影子,并响应通过影子设置的期望的未来状态。
  • 设备影子免费存储设备状态多达一年。如果至少每年更新一次状态,则设备影子将永久保留状态;否则状态将过期。

设备影子(Shadow)流程

设备影子(Shadow)格式

设备影子(Shadow)服务

设备影子服务使用MQTT话题,便于应用和设备之间的通信,下面是相关的MQTT QoS 1话题:

$aws/things/{thingName}/shadow/update

$aws/things/{thingName}/shadow/get

$aws/things/{thingName}/shadow/delete

$aws/things/{thingName}/shadow/update/accepted

$aws/things/{thingName}/shadow/update/rejected

$aws/things/{thingName}/shadow/update/delta

$aws/things/{thingName}/shadow/get/accepted

$aws/things/{thingName}/shadow/get/rejected

$aws/things/{thingName}/shadow/delete/accepted

$aws/things/{thingName}/shadow/delete/rejected

设备SDK(C-SDK、JS-SDK)将影子功能内置在设备中,能够使设备与影子服务之间自动同步状态。

规则引擎

  • 规则引擎验证发布到 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 代码,从而提供最高灵活度以及处理设备数据的能力。

规则引擎集成其它云服务

规则引擎验证发布至AWS IoT的消息请求,基于业务规则转换消息请求并发布至其它服务,例如:

  • 富集化或过滤从设备收集的数据
  • 将设备数据写入一个亚马逊DynamoDBm数据库
  • 保存文件至亚马逊S3
  • 发送一个推送通知到所有亚马逊SNS用户
  • 向亚马逊SQS队列发布数据
  • 调用Lambda函数抽取数据
  • 使用亚马逊Kinesis处理大量的设备消息数据
  • 发送数据至亚马逊Elasticsearch服务
  • 捕获一条CloudWatch测量数据
  • 更新一条CloudWatch告警
  • 把一条MQTT消息数据发送至亚马逊机器学习服务,基于亚马逊机器学习模型进行预测

规则引擎&实时流式数据处理

N:1 入站的传感器流式数据(数据降噪)

规则引擎过滤、转换、汇总传感器数据后,发送至亚马逊Kinesis处理实时流式数据

Kinesis流式数据共享至其它业务系统

将流式数据的实时处理结果导入至数据库、应用或其它亚马逊服务

规则引擎&推送通知服务

推送通知

支持苹果APNS推送通知服务、谷歌GCM云消息服务、亚马逊ADM设备消息服务,微软WNS推送服务

亚马逊SNS推送通知服务->HTTP协议终端(短信、邮件)

通过亚马逊SNS推送通知服务,调用第三方HTTP协议终端,支持订阅和重试

规则引擎示例 – 使用机器学习预测函数

{ "sql":     "SELECT *     FROM 'iot/test'     where         machinelearning_predict('my-model', 'arn:aws:iam::123456789012:role/my-iot-aml-role', *).predictedLabel=1",     "ruleDisabled": false,     "awsIotSqlVersion": "2016-03-23-beta",     "actions":         [{ "republish":             { "roleArn": "arn:aws:iam::123456789012:role/my-iot-role",                 "topic": "my-mqtt-topic" }         }] }

上面是使用亚马逊机器学习预测函数machinelearning_predict 的规则示例,其含义是:

如果机器学习预测函数处理MQTT消息后的结果是分类1,那么重新将此消息发布至一个话题。

设备管理

  • 支持全球或部分地区的固件升级
  • 规则引擎在DynamoDBm数据库跟踪升级状态和进度
  • 注册表存储设备的固件版本

S3管理固件分发版本

在S3中组织和保障和固件二进制文件

消息代理使用话题模式通知设备分组

通知设备分组固件更新信息,包括S3中的固件二进制文件URL地址

AWS IoT平台接口

  • AWS Command Line Interface (AWS CLI)
    • 在Windows、Mac和Linux执行AWS IoT命令
  • AWS SDKs
    • 使用特定语言API开发IoT应用
  • AWS IoT API
    • 使用HTTP或者HTTPS请求开发IoT应用
  • AWS IoT Thing SDK for C
    • 在资源受限的设备上开发IoT应用,如MCU

AWS IoT监控工具

自动化监控工具

  • Amazon CloudWatch Alarms
  • Amazon CloudWatch Logs
  • Amazon CloudWatch Events
  • AWS CloudTrail Log Monitoring

手工监控工具

  • AWS IoT 仪表盘
    • 证书
    • 策略
    • 规则
    • 设备
  • CloudWatch首页
    • 当前告警和状态
    • 告警和资源图表
    • 服务健康度
  • CloudWatch
  • 自定义仪表盘
  • 自定义图表进行排障和监控趋势
  • 搜索所有AWS资源指标
  • 创建和修改告警参数

AWS IoT 初学者工具包

  • AWS IoT 初学者工具包旨在帮助进行原型开发和安全地连接 AWS IoT。
  • 工具包内含开发微控制器开发板、传感器和执行器、AWS IoT 设备 SDK 以及入门指南。

AWS IoT 初学者工具包 - 支持的平台

AWS IoT生态

开发示例 - AWS IoT 按钮

创建设备

设备属性

创建证书

激活证书

创建策略

绑定证书与策略

绑定证书与设备

配置设备

使用MQTT客户端订阅设备消息

使用MQTT客户端查看设备消息

创建短信推送话题并订阅此话题

创建规则

创建规则的行为

测试订阅是否成功

作者:马智  微信公众号:物联网那点事  如果你想及时得到相关资讯,可以关注个人公众号。  本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏IT大咖说

如何支撑微服务架构落地

编辑IT大咖说 阅读字数: 2265 用时: 7分钟 ? ? 摘要 如今微服务如日中天,优势和弊端也有各种描述,那么我们是否应该采用微服务架构?如何规避微服务的...

37990
来自专栏腾讯大数据的专栏

腾讯社交LBS服务技术要点

“如何在激烈的移动社交市场竞争中脱颖而出?”这是当前移动社交应用领域众多开发者们所面临的现实问题。在产品功能特性同质化越来越严重的形势下,动用最小的研发资源实现...

495100
来自专栏数据和云

必读推荐:深入解读Oracle 18c对于DBA的影响及应对措施

? Joel Perez Oracle ACE Director,云和恩墨高级云技术专家 "DBA 将要失业了吗? 当引入自治数据库之后,就永远不需要...

47190
来自专栏IT大咖说

经历了研发困局、运维之痛,同程微服务从1到1w的旅程

内容来源:2017 年 9 月 9 日,前同程艺龙架构师谢康在“ArchData技术大会上海站”进行《同程微服务从1到1w的旅程》演讲分享。IT 大咖说(微信i...

18430
来自专栏大魏分享(微信公众号:david-share)

我在U2VL精英训练营上的分享---vSphere与应用的监控

本次,笔者很荣幸被U2VL团队邀请,作为讲师和助教的参加U2VL精英训练营杭州站。期间我分享vROps对虚拟平台和应用的监控,相关内容如下。 ? ? ?...

37090
来自专栏云资讯小编的专栏

腾讯云发布无服务器云函数,较云主机成本低约70%

4月26日,腾讯云宣布,正式开放国内首款FaaS(Function as a Service,函数即服务) 产品——无服务器云函数(SCF,Serverless...

1.3K00
来自专栏开源项目

提升物联网开发效率必看的 6 个开源项目 | 码云周刊第 47 期

码云推荐 有数据显示,目前物联网端口数量预计在200亿个左右。到2035年,这个数字会扩大到1万亿,平均每个人会拥有超过100台端口设备,它们将涉及穿戴、家...

47580
来自专栏ThoughtWorks

单体中心代码库 vs. 分布式代码库|洞见

去年中旬两位Google工程师在《美国计算机学会通讯》发表了一篇论文“Why Google Stores Billions of Lines of Code i...

36130
来自专栏Frank的专栏

云端微服务架构下的运维思考

本文围绕微服务架构的特点与发展趋势,结合微信业务在微服务架构上的探索、应用、改进与提升,阐述运维如何应对业务在微服务架构环境下的各种挑战。

1.1K70
来自专栏编程

深度解析用例设计方法

许多测试类书籍中都有大幅的篇章介绍用例的设计方法,如等价类划分,边界值,错误推断,因果图等。 ? 但实际应用中这些理论却不能给我们很明确的行为指导,尤其是业务复...

21550

扫码关注云+社区

领取腾讯云代金券