AWS IoT Core 常见问题

一般性问题

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

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

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

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

互联设备(如传感器、执行器、嵌入式设备、智能设备和可穿戴设备)通过 HTTPS、WebSockets、安全 MQTT 或 LoRaWAN 连接到 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 向设备发送命令,同时将与设备的底层通信交给 AWS IoT Core 处理。设备影子向设备提供了统一的接口(即使它们使用应用程序不兼容的某个 IoT 通信和安全协议时也是如此),加速了应用程序的开发。此外,设备影子还能通过以下方式加速应用的开发:向设备提供始终可用的接口,即使互联设备受到连接间歇中断、带宽有限、计算能力有限或电力有限等制约。

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

AWS 在 2015 年收购了 2lemetry,并获得了他们为 AWS IoT Core 提供 MQTT Message Broker 和 Rules Engine 等基本元素的能力。

请参阅 AWS 区域表,了解当前提供 AWS IoT Core 服务的区域列表。

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

请使用 AWS IoT 控制台或参阅开发人员指南的快速入门部分,以在数分钟内开始试用 AWS IoT Core。

另请参阅由我们合作伙伴提供、AWS 给予支持的初学者工具包

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

​AWS IoT 控制台支持英语、法语、日语、韩语、简体中文、德语、葡萄牙语、西班牙语、意大利语和繁体中文。

单击控制台左下角的语言即可选择语言。不同 AWS 服务的控制台将始终选用一种语言。

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

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

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

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

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

可以通过实体插座连接。连接私有 IP 网络的设备和使用非 IP 射频协议的设备(如 ZigBee 或蓝牙 LE)只要有实体插座作为其与 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 Core API 调用的历史记录,您只需在 AWS 管理控制台中打开 CloudTrail 即可。

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

功能

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

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

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

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 中:

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

有关规则的更多信息,请参阅 Core 规则文档

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

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

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

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

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

设备影子使得云和移动应用程序能够轻松地与 AWS IoT Core 中注册的互联设备交互。AWS IoT Core 中的设备影子包含互联设备的属性。您可以定义适合您用例的任意属性集。例如,对于智能灯泡,您可以定义“on-or-off”、“color”和“brightness”等作为属性。然后由互联设备报告这些属性的实际值(存储在设备影子中)。应用程序可使用 AWS IoT Core 提供的 RESTful API 轻松地获取和更新这些属性。AWS IoT Core 和设备 SDK 负责在互联设备与其在 AWS IoT Core 中的设备影子间同步属性值。

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

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

有关注册表的更多信息,请查阅注册表文档。有关设备影子的更多信息,请查阅设备影子文档

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

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

设备证书的即时注册 (JITR) 通过简化使用 AWS IoT Core 注册设备的流程,在 2016 年 4 月发布的“使用自己的证书”功能的基础上进行了扩展。在支持 JITR 之前,设备注册流程需要两个步骤:第一步,将证书颁发机构 (CA) 证书注册到 AWS IoT Core;第二步,单独注册 CA 签发的设备证书。现在,借助 JITR,您可以在设备首次连接至 AWS IoT Core 时,通过自动注册设备证书来完成第二步。这样可节约注册设备证书所用的时间,且可使设备在制造过程中保持离线状态。要进一步自动执行 IoT 设备预置,您可以使用 Lambda 操作创建一个 AWS IoT Core 规则,激活证书并添加策略。有关更多信息,请访问 AWS 上的物联网博客或开发人员文档

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

AWS IoT 设备 SDK 是开源项目,免费提供。有关更多信息,请访问我们的设备 SDK 页面。

目前,AWS 提供了适用于 C、Node.js 语言及 Arduino Yún 平台的 AWS IoT 设备 SDK。

此外,有多个硬件制造商与 AWS 建立了合作伙伴关系,以使 AWS IoT 设备 SDK 能够在其各自的平台上运行。有关这些硬件平台的更多信息,请访问我们的入门页面

最后,AWS IoT 设备 SDK 是开源的。您可以将它们移植到您选择的语言和硬件平台(如果它们尚未获得支持的话)。 

AWS IoT 设备 SDK 是对 AWS SDK 的补充。一方面,IoT 项目通常涉及在微控制器及其他资源有限设备上运行的代码。另一方面,IoT 项目还常常包含在云和移动设备上运行的与微控制器/资源有限设备交互的应用程序。AWS IoT 设备 SDK 旨在于微控制器/资源有限设备上使用,而 AWS SDK 旨在用于云和移动应用。

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

定价和 SLA

符合。请访问我们的定价页面了解更多信息。

请访问我们的定价页面了解信息。

AWS IoT Core SLA 规定,如果 AWS IoT Core 的月度正常运行时间百分比低于 99.9%,您将有资格获得 AWS IoT Core 提供的可用于部分月度服务费的积分。

如需 SLA 的所有条款与条件的完整详细信息,以及如何提交申请的详细信息,请参阅 AWS IoT Core SLA 详细信息页面。

适用于 LoRaWAN 的 AWS IoT Core

Semtech 通过其 Github 存储库维护和分发基站软件。

设备:您拥有所选的 LoRaWAN 设备并将其连接到 AWS IoT Core。您可以购买任何符合 LoRa 1.0.3 或 1.1 规范的 LoRa 设备或传感器(无需开发或更新软件)。

网关:您拥有所选的 LoRaWAN 网关并将其连接到 AWS IoT Core。AWS IoT Core 提供两种选择:您可以轻松地从 Amazon Partner Device Catalog 中选择并购买符合 AWS 条件的网关,该网关可随时与 AWS IoT Core 连接。或者,您可以通过将闲置(旧版)或现成(例如 Raspberry Pi)网关的固件更新为支持开源基站协议来进行连接。您可以在我们的入门指南中找到更新固件的说明。

LoRaWAN 网络服务器 (LNS):AWS IoT Core 拥有并提供完全托管的 LNS。在 AWS IoT 控制台上执行几个简单的步骤就可以注册所选硬件并显示来自已连接的 LoRaWAN 设备的消息。

云应用程序:您拥有并开发自己的云应用程序。将设备连接到 AWS IoT Core 之后,您可以通过将设备消息路由到 AWS 服务来开始开发应用程序或解决方案。

网络管理:AWS IoT Core 提供客户使用和配置以运行其 LoRaWAN 网络的网络管理功能。通过使用 AWS IoT 管理控制台,您可以查询已连接/已断开连接的设备和网关、设备流量属性以及收到的最后一条消息的网关统计信息。此外,您还可以通过使用 API 来远程更新 LoRaWAN 网关固件。

LoRaWAN 是经 LoRa 联盟许可使用的商标。

适用于 Amazon Sidewalk 的 AWS IoT Core

Amazon Sidewalk 是一个共享网络,可帮助设备更好地运行。Amazon 免费为客户提供的 Sidewalk 服务可以帮助简化新设备的设置、扩展设备的低带宽工作范围,并帮助设备保持在线状态,即使它们不在其家庭 Wi-Fi 范围之内。将来,Sidewalk 将支持各种体验,从使用支持 Sidewalk 的设备帮助寻找宠物或贵重物品到智能安全和照明,再到家用电器和工具的诊断。

适用于 Amazon Sidewalk 的 AWS IoT Core 是一项完全集成的功能,它使物联网开发人员能够通过 AWS IoT Core 轻松配置、载入和监控 Amazon Sidewalk 设备。Amazon Sidewalk 与 AWS IoT Core 更深入的集成使开发人员能更轻松地将支持 Sidewalk 的设备连接到云端并访问超过 200 个 AWS 服务。

AWS IoT Core Device Advisor

设备制造商的开发人员应使用 Device Advisor 在预先构建的测试场景下测试其设备,以验证其是否能安全可靠地连接到 AWS IoT Core。Device Advisor 在 AWS 云中提供了一个测试端点,设备制造商可以立即使用它们来测试其设备,从而节省开发和测试的时间和成本。测试设置还为每个测试提供了详细的日志,从而可以更快地排除设备软件问题。Device Advisor 还为复杂的测试场景提供测试覆盖范围,使客户能够在其设备软件开发过程中发现并解决问题。这样可以提高部署后设备群的性能可靠性并降低其维护成本。

此外,借助 IoT Device Advisor,硬件合作伙伴可以对他们的设备进行自我测试、下载已签名的认证报告并将报告提交给 APN,以使其设备列入 AWS 合作伙伴设备目录中。

任何设计为可连接到 AWS IoT Core 的设备都可以利用 Device Advisor。设备制造商的开发人员可以从 AWS IoT Core 控制台或通过使用 AWS 开发工具包访问 Device Advisor。当开发人员准备好测试其设备后,他们可以在 AWS IoT Core 中注册设备并通过 Device Advisor 终端节点配置设备软件。然后,他们在 IoT Core 控制台中简单单击几下即可选择和执行预构建的测试,并立即获取测试结果以及详细的日志。

有关支持的预建测试的详细信息,请参见 Device Advisor 中的“测试用例”部分。

Device Advisor 可免费使用。但是,开发人员将负责测试过程中产生的与 AWS 使用(例如 AWS IoT Core、Amazon CloudWatch 的使用)相关的任何费用。客户可以在其 AWS 账户中看到测试过程中的 AWS 资源使用情况,这些费用将计入开发人员的 AWS 账单。

AWS IoT 设备客户端

AWS IoT 设备客户端是一款免费、开源、模块化的设备端参考实施。其能够轻松地将设备连接到 AWS IoT Core,并默认访问 AWS IoT Device Management 和 AWS IoT Device Defender 功能。其用 C++ 编写,可以在基于嵌入式 Linux 的 IoT 设备上编译安装。

AWS IoT 设备客户端的当前版本可以使您将 IoT 设备连接到 AWS IoT Core、访问 AWS IoT Device Management 的作业和安全隧道功能,以及访问 AWS IoT Device Defender 的规则检测功能。

要在设备上开始使用,请从 GitHub 下载 AWS IoT Device Client 源代码,并通过自述文件了解更多信息。

目前,IoT Device Client 默认可在基于微处理器,且运行 x86_64 或 ARM 架构以及通用 Linux 软件环境(Debian、Ubuntu、RHEL)的 IoT 设备上工作。这涵盖了最常用的设备,例如,最新的 Raspberry Pi。如果您想要了解其他设备,请访问 AWS 合作伙伴设备目录

我们建议在基于微处理器,且具有 100MHz+ 计算能力和 64MB+ 内存的设备上使用 IoT 设备客户端。如果您希望为更受限制的设备或基于微控制器的设备编写自己的专用设备代码,我们将在 GitHub 上最新版本的嵌入式 C 语言 AWS IoT 设备 SDK 中提供更新后的实例集预置、作业和 AWS IoT Device Defender 功能库。