将设备连接到 AWS IoT - AWS IoT Core

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

将设备连接到 AWS IoT

设备可通过 AWS IoT Core 连接到 AWS IoT 和其他服务。通过 AWS IoT Core ,设备使用特定于您账户的设备终端节点发送和接收消息。AWS IoT 设备软件开发工具包 支持使用 MQTT 和 WSS 协议进行的设备通信。有关设备可以使用的协议的更多信息,请参阅设备通信协议

消息代理

AWS IoT 通过消息代理管理设备通信。设备和客户端向消息代理发布消息,并且还订阅消息代理发布的消息。消息由应用程序定义的主题 进行标识。当消息代理收到由设备或客户端发布的消息时,它会将该消息重新发布到订阅了该消息主题的设备和客户端。消息代理还将消息转发到 AWS IoT 规则引擎,该引擎可以对消息的内容进行操作。

AWS IoT 消息安全性

设备连接到AWS IoTuseX.509 客户端证书AWSV4 签名用于身份验证的。设备通信受 TLS 1.2 版的保护,并且 AWS IoT 要求设备在连接时发送服务器名称指示 (SNI) 扩展。有关更多信息,请参阅 AWS IoT 中的传输安全

AWS IoT 设备数据和服务终端节点

每个账户都有几个设备终端节点,这些终端节点对账户是唯一的,并支持特定的 IoT 功能。AWS IoT 设备数据终端节点支持专为 IoT 设备的通信需求而设计的发布/订阅协议;但是,如果其他客户端(如应用程序和服务)的应用程序需要这些终端节点提供的专用功能,则它们也可以使用此接口。AWS IoT 设备服务终端节点支持以设备为中心的对安全和管理服务的访问。

要了解您账户的设备数据终端节点,您可以在设置页面上的 AWS IoT Core 控制台。

要了解您账户的特定用途的设备终端节点,包括设备数据终端节点,请使用describe-endpoint此处显示的 CLI 命令,或DescribeEndpointREST API,并提供endpointType参数值。

aws iot describe-endpoint --endpoint-type endpointType

此命令采用以下格式返回 iot-endpointaccount-specific-prefix.iot.aws-region.amazonaws.com

这些区域有:DescribeEndpoint不必每次连接新设备时都查询 API。您创建的终端节点永久存在,并且创建后不会更改。

每个客户都有一个 iot:Data-ATS 和一个 iot:Data 终端节点。每个终端节点都使用 X.509 证书对客户端进行身份验证。我们强烈建议客户使用较新的 iot:Data-ATS 终端节点类型,以避免出现与 Symantec 证书颁发机构普遍不信任有关的问题。我们为设备提供 iot:Data 终端节点,用于从使用 VeriSign 证书实现向后兼容的旧终端节点检索数据。有关更多信息,请参阅服务器身份验证

设备的 AWS IoT 终端节点

终端节点用途

endpointType

描述

IoT 数据

iot:Data-ATS

用于向消息代理发送和接收数据,Device Shadow, 和规则引擎的组成部分AWS IoT。

iot:Data-ATS 返回 ATS 签名的数据终端节点。

IoT 数据(传统)

iot:Data

iot:Data 返回为向后兼容而提供的 VeriSign 签名的数据终端节点。

IoT 凭证访问

iot:CredentialProvider

用于将设备的内置 X.509 证书交换为临时凭证,以直接与其他 AWS 服务连接。有关连接到其他 AWS 服务的更多信息,请参阅授予直接调用 AWS 服务的权限

IoT 作业管理

iot:Jobs

用于使设备能够与AWS IoT使用的 Jobs 服务作业设备 HTTPS API

IoT 设备顾问(预览版)

iot:DeviceAdvisor

用于使用设备顾问测试设备的测试端点类型。有关更多信息,请参阅 Device Advisor

IoT 数据测试版(预览版)

iot:Data-Beta

为测试版保留的终端节点类型。有关其当前使用的信息,请参阅可配置的终端节点

您还可以使用自己的完全限定域名 (FQDN)(例如 example.com)和关联的服务器证书,通过使用可配置的终端节点(目前在公开测试版中提供)将设备连接到 AWS IoT。

AWS IoT 设备软件开发工具包

AWS IoT 设备软件开发工具包可帮助您将 IoT 设备连接到 AWS IoT Core ,并且支持 MQTT 和基于 WSS 的 MQTT 协议。

这些区域有:AWS IoT设备软件开发工具包不同于AWS软件开发工具包,因为AWS IoT设备软件开发工具包支持 IoT 设备的特殊通信需求,但不支持AWS开发工具包。这些区域有:AWS IoT设备软件开发工具包与AWS支持所有AWS服务;但是,它们使用不同的身份验证方法并连接到不同的终端节点,这可能使用AWS开发工具包在 IoT 设备上不切实际。

移动设备

AWSMobile SDK支持 MQTT 设备通信、部分 AWS IoT 服务 API 和其他 AWS 服务的 API。如果您在受支持的移动设备上进行开发,请查看其软件开发工具包,了解它是否是开发 IoT 解决方案的最佳选择。

C++

AWS IoT C++ 设备软件开发工具包

这些区域有:AWS IoTC++ 设备软件开发工具包使得开发人员可以使用AWS以及 AWS IoT Core 服务。特别是,此软件开发工具包面向没有资源限制且需要高级功能(例如,消息队列、多线程支持和最新的语言功能)的设备而设计。有关更多信息,请参阅下列内容:

Python

AWS IoT 适用于 Python 的 设备软件开发工具包

这些区域有:AWS IoT借助适用于 Python 的设备开发工具包,开发人员可以编写 Python 脚本,以使用其设备访问AWS IoT平台通过 MQTT 或基于 WebSocket 安全 (WSS) 协议的 MQTT。通过将他们的设备连接到 AWS IoT Core 服务时,用户可以安全地 Device Shadow 由 AWS IoT Core 提供和其他AWS服务,如AWS Lambda、Amazon Kinesis 和 Amazon S3 等。

JavaScript

AWS IoT 适用于 JavaScript 的 设备软件开发工具包

借助适用于 JavaScript 的 AWS IoT 设备软件开发工具包,开发人员可以编写 JavaScript 应用程序,这些应用程序使用 MQTT 或基于 WebSocket 的 MQTT 协议来访问 AWS IoT Core 的 API。它可用于 Node.js 环境和浏览器应用程序。有关更多信息,请参阅下列内容:

Java

AWS IoT 适用于 Java 的 设备软件开发工具包

借助适用于 Java 的 AWS IoT 设备软件开发工具包,Java 开发人员可以通过 MQTT 或基于 WebSocket 的 MQTT 协议来访问 AWS IoT Core 的 API。该软件开发工具包支持 Device Shadow 服务。您可以使用 HTTP 方法 (包括 GET、UPDATE 和 DELETE) 访问影子。该软件开发工具包还支持简化的影子访问模型,开发人员可以使用 getter 和 setter 方法与影子交换数据,而不必对任何 JSON 文档进行序列化或反序列化。有关更多信息,请参阅下列内容:

Embedded C

AWS IoT 适用于嵌入式 C 的 设备软件开发工具包

重要

该软件开发工具包供经验丰富的嵌入式软件开发人员使用。

这些区域有: AWS IoT Device SDK for Embedded C (C-SDK) 是 MIT 开源许可证下多个 C 源文件的集合,可在嵌入式应用程序中使用,以安全地将 IoT 设备连接到AWSIoT 核心。它包括 MQTT、JSON 解析器和AWS IoTDevice Shadow 库。它以源代码的形式分发,用于构建到客户固件和应用程序代码、其他库,以及(可选)RTOS(实时操作系统)中。

对于队列配置,请使用v4_beta_deprecated的版本 AWS IoT Device SDK for Embedded C athttps://github.com/aws/aws-iot-device-sdk-embedded-C/tree/v4_beta_deprecated

AWS IoT Device SDK for Embedded C 通常面向需要优化的 C 语言运行时的资源受限设备。您可以在任何操作系统上使用此软件开发工具包,并将其托管在任何类型的处理器(例如 MCU 和 MPU)上。如果您的设备有足够的可用内存和处理资源,则我们建议您使用其他 AWS IoT 设备和移动软件开发工具包之一,如适用于 C++、Java、JavaScript 或 Python 的 AWS IoT 设备软件开发工具包。

有关更多信息,请参阅下列内容: