欢迎光临
我们一直在努力

AWS IOT 入门(四) IoT Core

什么是 AWS IoT Core?

AWS IoT Core 是一款托管的云平台,让互联设备可以轻松安全地与云应用程序及其他设备交互。AWS IoT Core 可以支持数十亿台设备和数万亿条消息,并且可以对这些消息进行处理并将其安全可靠地路由至 AWS 终端节点和其他设备。借助 AWS IoT Core,您的应用程序可以随时跟踪所有设备并与其通信,即使这些设备未处于连接状态也不例外。

AWS IoT Core 提供哪些功能?

实现设备与 AWS 云之间的连接。 首先,借助 AWS IoT Core,您能以安全、低延迟和低开销的方式与互联设备通信。通信可扩展到您所需的任意数量的设备。AWS IoT Core 支持标准通信协议(目前支持 HTTP、MQTT 和 WebSockets)。可使用 TLS 来确保通信安全。

处理互联设备发出的数据。其次,借助 AWS IoT Core,您可以持续接收、筛选、转换和路由从互联设备流式传输的数据。您可以根据这些数据执行操作,并进行路由以做进一步处理和分析。

与互联设备交互的应用程序。最后,AWS IoT Core 可以加快 IoT 应用程序的开发。它用作在云中和移动设备上运行的应用程序的易于使用的接口,可用于访问互联设备发出的数据,并将数据和命令发回设备。

AWS IoT Core 的工作原理是什么?

互联设备(如传感器、执行器、嵌入式设备、智能设备和可穿戴设备)通过 HTTPS、WebSockets 或安全 MQTT 连接到 AWS IoT Core。AWS IoT Core 内含设备网关,可在互联设备与您的云和移动应用程序之间建立安全、低延迟、低开销的双向通信。

此外,AWS IoT Core 还包含规则引擎,可对互联设备发送的数据进行持续处理。您可以配置规则以筛选和转换数据。此外,您还可以配置规则来将数据路由到其他 AWS 产品(如 DynamoDB、Kinesis、Lambda、SNS、SQS、CloudWatch 和内置 Kibana 集成的 Elasticsearch Service)及非 AWS 产品,通过 Lambda 做进一步的处理、存储或分析。

它还提供了一个注册表,以供您注册和跟踪连接到 AWS IoT Core 的设备或未来可能要连接的设备。AWS IoT Core 中的设备影子让云和移动应用程序可以查询设备发送的数据,并通过简单的 REST API 向设备发送命令,同时将与设备的底层通信交给 IoT Core 处理。设备影子向设备提供了统一的接口(即使它们使用应用程序不兼容的某个 IoT 通信和安全协议时也是如此),加速了应用程序的开发。此外,设备影子还能通过以下方式加速应用程序的开发:向设备提供始终可用的接口,即使互联设备受到连接间歇中断、带宽有限、计算能力有限或电力有限等制约。

安全地与 AWS IoT Core 通信。该服务要求其所有客户端(互联设备、服务器应用程序、移动应用程序或人类用户)使用强身份验证(X.509 证书、AWS IAM 凭证或经由 AWS Cognito 的第三方身份验证)。所有通信均经过加密。此外,AWS IoT Core 还提供了精细的授权,以隔离和保护已验证客户端之间的通信。

应用程序应如何访问 AWS IoT Core?

连接 AWS IoT Core 的应用程序大体上分为两类:1. 配套应用程序;2. 服务器应用程序。配套应用程序是指移动或客户端侧的浏览器应用程序,它们通过云与互联设备交互。能够使消费者远程解锁消费者居所中智能锁的移动应用程序就是配套应用程序的一个示例。服务器应用程序旨在同时监测和控制大量互联设备。在地图上实时绘制数千辆卡车的车队管理网站就是服务器应用程序的一个示例。

AWS IoT Core 使配套应用程序和服务器应用程序能够通过统一的 RESTful API 访问互联设备。此外,应用程序也可选择使用发布/订阅方式与互联设备直接通信。

通常,配套应用程序使用最终用户身份(由您自己的身份存储或 Facebook、Login with Amazon 等第三方身份提供商管理)进行身份验证。对于配套应用程序,可以使用 Amazon Cognito(与多个身份提供商集成)。可以授权 Cognito 身份以访问 AWS IoT Core,且可将其访问范围限制为与其相关的资源。例如,作为一家互联洗衣机制造商,您可以授权消费者访问属于其各自洗衣机的 AWS IoT Core 信息。

服务器应用程序(如运行在 Amazon EC2 上的地图应用程序)可使用 IAM 角色访问 AWS IoT Core。

什么是设备网关?

设备网关构成了互联设备与云功能(如 规则引擎、设备影子以及其他 AWS 和第三方服务)之间的通信骨干。

设备网关支持发布/订阅消息收发模式,能够实现可扩展、低延迟和低开销的通信。它对于预计会有数十亿设备进行低延迟频繁通信的 IoT 场景尤为有用。发布/订阅模式是指:客户端在称作“主题”的逻辑通信频道上发布消息,客户端订阅主题接收消息。设备网关可促成发布者与订阅者之间的通信。传统上,组织要使用发布/订阅模型,就必须调配、操作、扩展和维护自己的服务器来作为设备网关。AWS IoT Core 提供了设备网关,消除了这一障碍。

该设备网关可根据您的使用情况自动扩展,不会给您带来任何运营开销。AWS IoT Core 支持与设备网关的安全通信、AWS 账户级隔离以及 AWS 账户内的精细授权。目前,该设备网关支持通过 MQTT 和 WebSockets 进行发布和订阅,以及通过 HTTPS 进行发布。

什么是 MQTT?

MQTT 是一种轻量级的发布/订阅协议,旨在最大限度地降低网络带宽和设备资源要求。此外,MQTT 还支持使用 TLS 进行安全通信。MQTT 常用在 IoT 用例中。MQTT v3.1.1 是一种 OASIS 标准, 设备网关支持大部分 MQTT 规范。

什么是规则引擎?

规则引擎可对来自连接到 AWS IoT Core 的设备的入站数据进行连续处理。您可以使用直观的类 SQL 语法在规则引擎中配置规则,以自动过滤和转换入站数据。您可以进一步配置规则,将数据从 AWS IoT Core 路由到多个其他 AWS 产品及您自己的第三方服务。

下面给出了少量规则用例:

  • 筛选和转换传入消息并将之作为时间序列数据存储在 DynamoDB 中。
  • 当来自传感器的数据超出特定阈值时,通过 SNS 发送推送通知。
  • 将固件文件保存到 S3
  • 同时处理来自大量使用 Kinesis 的设备的消息
  • 调用 Lambda 对传入数据进行自定义处理
  • 以自动重新发布的形式向一组设备发送命令

如何定义和触发规则?

AWS IoT Core 规则包含两大部分:

SQL 语句:指定要应用规则的发布/订阅主题、要执行的数据转换(如有的话)以及执行规则的条件。该规则应用到在指定主题上发布的每一条消息。

操作列表:定义规则执行时(即:当传入消息匹配规则中指定的条件时)要采取的操作。

规则定义使用基于 JSON 的架构。您可以直接编辑 JSON,或使用 AWS 管理控制台中的规则编辑器。

下面是一个规则示例,当温度高于 50 时,它将来自传感器的温度数据保存到 DynamoDB 中:

{

    “sql”: “SELECT * from ‘iot/tempSensors/#’ WHERE temp > 50”,

    “description”: “Rule to save sensor data when temperature is about 50”,

    “actions”: [

     {

            “dynamoDB”: {

            “tableName”: “HighTempTable”,

            “roleArn”: “arn:AWS:iam::your-AWS-account-id:role/dynamoPut”,

            “hashKeyField”: “key”,

            “hashKeyValue”: “${topic(3)}”,

            “rangeKeyField”: “timestamp”,

            “rangeKeyValue”: “${timestamp()}”

            }

        }

    ]

}

本示例中的传感器在其位于“iot/tempSensors/”下的主题中发布消息。规则的第一行定义了一条查询“iot/tempSensors/#”主题的 SQL SELECT 语句。它包含一条 WHERE 子句:提取消息有效载荷中“temp”字段的值并检查其是否满足“高于 50”的条件。如果满足条件,则将数据存储在指定的 DynamoDB 表中。本示例使用内置功能完成遍历消息有效载荷和获取当前时间等任务。

您可以借助 AWS IoT Core 轻松将设备连接至云和其他设备。AWS IoT Core 支持 HTTP、WebSockets 和 MQTT(专门设计用于容许间断式连接,可最大限度地减少代码在设备上占用的空间及降低网络带宽要求的轻型通信协议)。AWS IoT Core 也支持其他行业标准和自定义协议,而且即使设备使用不同的协议,也可以相互通信。

AWS IoT Core 会在所有连接点提供身份验证和端到端加密服务,因此在没有验证身份的情况下,数据绝不会在设备和 AWS IoT Core 之间进行交换。此外,您可以通过应用具有详细权限的策略来保护对设备和应用程序的访问安全。

处理设备数据并对其执行操作

借助 AWS IoT Core,您可以按照自己定义的业务规则快速筛选和转换设备数据并对其执行操作。您可以随时更新规则以实施新设备和应用程序功能。即使对于功能更强大的 IoT 应用程序,您也可以借助 AWS IoT Core 轻松使用 AWS Lambda、Amazon Kinesis、Amazon S3、Amazon Machine Learning、Amazon DynamoDB、Amazon CloudWatch 和 Amazon Elasticsearch Service 等 AWS 产品。

随时读取和设置设备状态

AWS IoT Core 会存储互联设备的最新状态,以便能够随时进行读取或设置,使设备对您的应用程序来说,似乎始终处于在线状态。这意味着您的应用程序可以读取设备的状态(即使它已断开连接),并且您也可以设置设备状态,并在设备重新连接后实施该状态。

API 参考

https://docs.aws.amazon.com/iot/latest/apireference/Welcome.html

赞(0)
【声明】:本博客不参与任何交易,也非中介,仅记录个人感兴趣的主机测评结果和优惠活动,内容均不作直接、间接、法定、约定的保证。访问本博客请务必遵守有关互联网的相关法律、规定与规则。一旦您访问本博客,即表示您已经知晓并接受了此声明通告。