问:什么是 AWS IoT?

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

AWS IoT 使用户能够轻松使用 AWS 服务 (如 Amazon Kinesis、Amazon S3、Amazon DynamoDB、Amazon CloudWatch 和 AWS CloudTrail) 来构建 IoT 应用程序,以便收集、处理和分析互连设备生成的数据并对其执行操作,而无需管理任何基础设施。

问:AWS IoT 提供哪些功能?

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

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

处理互联设备发出的数据。其次,借助 AWS IoT,您可以连续地接收、筛选、转换和路由互联设备流式传来的数据。您可以根据这些数据采取操作并路由它们,以做进一步的处理和分析。

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

问:AWS IoT 的工作原理是什么?

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

此外,AWS IoT 服务还包含规则引擎,可对互联设备发送的数据进行连续的处理。您可以配置规则以筛选和转换数据。您还可以配置规则以将数据路由到其他 AWS 服务 (如 DynamoDB、Kinesis、SNS、SQS 和 CloudWatch),以做进一步处理、存储或分析。

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

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

与其他 AWS 服务类似,用户可以通过 AWS 管理控制台访问 AWS IoT。应用程序可以借助 AWS 开发工具包 (面向多种编程语言提供) 轻松地访问 AWS IoT。AWS IoT 与 Amazon CloudWatch 集成,这进一步简化了 IoT 应用程序的开发和操作。

为简化运行在互联设备上的代码的开发,AWS IoT 为 C、Node.js 和 Arduino Yún 平台提供了开源设备软件开发工具包。此外,AWS IoT 还与硬件制造商建立了合作伙伴关系,以使 AWS IoT 设备软件开发工具包可在多种 IoT、嵌入式操作系统和微控制台平台上使用。

问:AWS IoT 服务在哪些 AWS 地区可用?

目前,AWS IoT 在以下 AWS 地区可用:

• 美国东部 (弗吉尼亚北部)
• 美国东部 (俄亥俄)
• 美国西部 (俄勒冈)
• 欧洲 (爱尔兰)
• 欧洲 (法兰克福)
• 欧洲 (伦敦)
• 亚太地区 (悉尼)
• 亚太地区 (首尔)
• 亚太地区 (东京)
• 亚太地区 (新加坡)
• 中国 (北京)

不管您身处哪个地理位置,只要您能够访问上述任何一个 AWS 地区,您就可以使用 AWS IoT。

问:如何开始使用 AWS IoT?

请使用 AWS IoT 控制台或参阅开发人员指南的“快速入门”部分,以迅速试用 AWS IoT 服务。

有关更多详细信息,请参阅 AWS IoT 文档

问:访问 AWS IoT 的途径有哪些?

您可以使用 AWS 管理控制台AWS 开发工具包和 AWS IoT API 访问 AWS IoT 服务。互联设备可以使用 AWS IoT 设备软件开发工具包,以简化与 AWS IoT 设备的通信。

AWS IoT API 和命令主要分为控制层面操作和数据层面操作。控制层面操作让您能够执行配置安全性、注册设备、配置数据路由规则、设置日志记录等任务。数据层面操作让您能够以低延迟和高吞吐率的方式将互联设备的数据大规模传输到 AWS IoT。

问:AWS IoT 支持哪些通信和身份验证协议?

对于控制层面操作,AWS IoT 支持 HTTPS。对于数据层面操作,AWS IoT 支持 HTTPS、WebSockets 及安全 MQTT (一种常用于 IoT 场景的协议)。

发送到 AWS IoT 的 HTTPS 和 WebSockets 请求使用 AWS IAM 进行身份验证,这两者均支持 AWS SigV4 身份验证。如果您使用的是 AWS 开发工具包,系统会在后台为您处理 SigV4 身份验证。HTTPS 请求还可以使用 X.509 证书进行身份验证。发送到 AWS IoT 的 MQTT 消息使用 X.509 证书进行身份验证。

借助 AWS IoT,您可以使用 AWS IoT 生成的证书以及由您的首选证书颁发机构 (CA) 签署的证书。

问:未直接连接 Internet 的设备能访问 AWS IoT 吗?

能,可以通过物理集线器进行访问。连接私有 IP 网络的设备和使用非 IP 射频协议的设备 (如 ZigBee 或蓝牙 LE) 只要有物理集线器作为其与 AWS IoT 之间的中介,就可以访问 AWS IoT 并进行安全地通信。

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

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

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

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

问:我能否获取从我的账户发起的 AWS IoT API 调用的历史记录,用于安全分析和运营故障排除用途?

可以。要获取从您的账户发起的 AWS IoT API 调用的历史记录,您只需在 AWS 管理控制台中打开 CloudTrail 即可。

问:控制台有哪些新功能?

  • AWS IoT 控制台具有新的可视设计,改善了易用性和导航方式。
  • 用户可以更轻松地在相应的区域找到物体、类型、证书、策略和规则。
  • 账户级指标现在显示在新的控制面板上。
  • MQTT Web 客户端经过简化,可对 IoT 解决方案进行问题排查。
  • 添加了一个新向导,只需简单几步即可连接设备。
  • 物体详情现在包含生命周期事件和影子活动的实时馈送信息

问:如何发送反馈?

要发送反馈,请单击控制台页脚工具栏中的“反馈”链接。

问:什么是 AWS IoT 设备网关?

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

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

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

问:什么是 MQTT?

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

问:什么是 AWS IoT 规则引擎?

AWS IoT 规则引擎可对来自连接到 AWS IoT 服务的设备的入站数据进行连续处理。您可以使用直观的、类似于 SQL 的语法在规则引擎中配置规则,以自动筛选和转换入站数据。您可以进一步配置规则,将数据从 AWS IoT 服务路由到多项其他 AWS 服务及您自己的第三方服务。
下面给出了少量规则使用案例:
• 筛选和转换传入消息,并将其作为时间序列数据存储在 DynamoDB 中。
• 当来自传感器的数据超出特定阈值时,通过 SNS 发送推送通知。
• 将固件文件保存到 S3
• 同时处理来自大量使用 Kinesis 的设备的消息
• 以自动重新发布的形式向一组设备发送命令

问:如何定义和触发规则?

AWS IoT 规则包含两大部分:

  • 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 规则文档

问:什么是 AWS IoT 设备注册表?它有什么用?

IoT 涵盖使用少量关键任务型设备到采用大量设备的场景。AWS IoT 设备注册表让您能够组织和跟踪这些设备。您可以在设备注册表中维护连接 AWS IoT 的每个设备的逻辑句柄。设备注册表中的每个设备都能被唯一标识,且可拥有元数据,如型号、支持联系方式、与之关联的证书等。您可以根据元数据在设备注册表中搜索互联设备。

问:物体类型是什么?

物体类型通过定义同类设备的一般特征,帮助您高效管理设备目录。此外,与一种物体类型相关的每个物体目前拥有多达 50 个属性,其中包括 3 个可搜索属性。

问:什么是简化的权限管理?

借助该功能,您可以通过使用引用注册表或 X.509 证书属性的变量来轻松管理大量设备的权限策略。“注册表”和“证书”属性与设备策略的集成具有以下优点:

  • 现在,您可以在设备权限策略中引用“设备注册表”属性。通过引用设备注册表中定义的设备属性,您的策略可以反映设备注册表中发生的任何更改。例如,通过引用名为“building-address”的物体属性作为策略中的变量,设备将在移动建筑时自动继承一组新的权限。
  • 您可以在多个设备之间共享一个通用策略。通用策略可以在相同类别的设备之间共享,而不是为每个设备创建唯一策略。例如,引用“serial-number”作为变量的策略可以添加到同一型号的所有设备。当序列号相同的设备相互连接时,其序列号会自动替换策略变量。

问:什么是设备影子?

设备影子使得云和移动应用程序能够轻松地与 AWS IoT 中注册的互联设备交互。AWS IoT 中的设备影子包含互联设备的属性。您可以定义适合您使用案例的任意属性集。例如,对于智能灯泡,您可以定义“开或关”、“颜色”和“量度”等作为属性。然后由互联设备报告这些属性的实际值 (存储在设备影子中)。应用程序可使用 AWS IoT 服务提供的 RESTful API 轻松地获取和更新这些属性。AWS IoT 服务和 AWS IoT 设备软件开发工具包负责在互联设备与其在 AWS IoT 中的影子间同步属性值。

问:我必须使用设备注册表和设备影子吗?

您可以让应用程序使用 AWS IoT 中的设备网关和/或规则引擎直接与互联设备通信。但我们建议您使用设备注册表和设备影子,因为它们提供了更丰富和更结构化的开发和管理体验,让您能够将精力放在要为客户创造的独特价值上,而不是纠缠于互联设备与云之间的底层通信和同步上。

问:设备及其在 AWS IoT 中的影子的生命周期是怎样的?

• 在设备注册表中注册设备 (如智能灯泡)。
• 通过编程使互联设备将其一组属性值或状态 (“我亮着呢,我的颜色是红色”) 发布到 AWS IoT 服务。
• 上次报告的状态存储在该设备在 AWS IoT 中的影子内。
• 应用程序 (如控制智能灯泡的移动应用程序) 使用 RESTful API 向 AWS IoT 查询智能灯泡的上次报告状态,免除了与智能灯泡直接通信的麻烦。
• 当用户需要更改状态 (如熄灭处于点亮状态的智能灯泡) 时,应用程序使用 RESTful API 请求更新,即:在 AWS IoT 中为该设备设置“所需”的状态。AWS IoT 负责将所需的状态同步到设备。
• 当互联设备将其状态更新为所需状态时,应用程序会得到通知。

问:可在何处了解有关设备注册表和设备影子的更多信息?

有关设备注册表的更多信息,请参阅 AWS IoT 设备注册表。有关影子的更多信息,请参阅 AWS IoT 设备影子

问:我可以在 AWS IoT 中配置精细的授权操作吗?

可以。与其他 AWS 服务类似,在 AWS IoT 中,您可以精细控制每种身份有权调用的 API 操作集。此外,您还能精细控制身份可发布或订阅的发布/订阅主题,以及身份可访问的设备注册表中的设备和影子。

问:可在何处了解有关 AWS IoT 中安全性和访问控制的更多信息?

有关更多信息,请参阅 AWS IoT 的安全和身份

问:什么是 AWS IoT 设备软件开发工具包?

AWS IoT 设备软件开发工具包能够简化和加快运行在互联设备 (微控制器、传感器、执行器、智能设备、可穿戴设备等) 上的代码的部署。首先,设备可以借助该设备软件开发工具包优化内存、功耗和网络带宽占用。同时,设备软件开发工具包可通过内置的 TLS、WebSockets 和 MQTT 支持实现高度安全、低延迟和低开销的通信。此外,设备软件开发工具包还支持更高级别的抽象 (如同步设备与其在 AWS IoT 服务中的影子的状态),以加快 IoT 应用程序的部署。

AWS IoT 设备软件开发工具包是开源项目,免费提供。有关更多信息,请访问我们的开发人员资源页面。

问:AWS IoT 设备开发工具包支持哪些编程语言?

目前,AWS 提供了适用于 C、Node.js 语言及 Arduino Yún 平台的 AWS IoT 设备软件开发工具包。

AWS IoT 设备软件开发工具包是开源的。您可以将它们移植到您选择的语言和硬件平台 (如果它们不受支持的话)。

问:我该使用 AWS IoT 设备软件开发工具包还是 AWS 开发工具包?

AWS IoT 设备软件开发工具包是对 AWS 开发工具包的补充。IoT 项目通常涉及在微控制器及其他资源受限的设备上运行的代码。不过,IoT 项目还常常包含在云和移动设备上运行的与微控制器/资源受限的设备交互的应用程序。AWS IoT 设备软件开发工具包旨在用于微控制器/资源受限的设备,而 AWS 开发工具包旨在用于云和移动应用程序。

问:可在何处了解有关 AWS IoT 设备软件开发工具包的更多信息?

有关 AWS IoT 设备软件开发工具包的更多信息,请参阅 AWS IoT 设备软件开发工具包