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

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

将设备连接到 AWS IoT

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

消息代理

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

AWS IoT消息安全

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

AWS IoT设备数据和服务端点

重要

您可以在设备中缓存或存储端点。这意味着您无需在每次连接新设备时查询 DescribeEndpoint API。在为您的账户AWS IoT Core创建终端节点后,端点不会更改。

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

要了解您账户的设备数据端点,可以在AWS IoT Core主机的 “设置” 页面中找到该端点。

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

aws iot describe-endpoint --endpoint-type endpointType

此命令按以下iot-endpoint格式返回:account-specific-prefix.iot.aws-region.amazonaws.com

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

AWS IoT设备端点

终端节点用途

endpointType

说明

AWS IoT Core - 数据面板操作

iot:Data-ATS

用于与消息代理、Device Shadow 和 AWS IoT 的规则引擎组件之间收发数据。

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

AWS IoT Core - 数据面板操作(旧版)

iot:Data

iot:Data返回为向后兼容而提供的 VeriSign 签名数据端点。Symantec (iot:Data) 端点不支持 MQTT 5。

AWS IoT Core凭证访问权限

iot:CredentialProvider

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

AWS IoT Device Management - 任务数据操作

iot:Jobs

用于使设备能够使用任务设备 HTTPS 与AWS IoT作业服务进行交互 APIs。

iot:Jobs IPv4 只能用于。如果您使用的是双堆栈终端节点(IPv4 和 IPv6),请使用iot:Data-ATS终端节点类型。

AWS IoT设备顾问操作

iot:DeviceAdvisor

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

AWS IoT Core数据测试版(预览版)

iot:Data-Beta

为测试版预留的端点类型。有关当前用法的信息,请参阅 域配置

您也可以使用自己的完全限定域名 (FQDN)(例如example.com)和关联的服务器证书来连接设备。AWS IoT 域配置

AWS IoT设备 SDKs

该AWS IoT设备 SDKs 可帮助您连接您的物联网设备,AWS IoT Core并且它们支持基于 WSS 协议的 MQTT 和 MQTT。

该AWS IoT设备 SDKs 与的不同之处AWSSDKs 在于,该AWS IoT设备 SDKs支持物联网设备的特殊通信需求,但不支持所支持的所有服务AWSSDKs。该AWS IoT设备 SDKs 与支持所有AWS服务的设备兼容;但是,它们使用不同的身份验证方法并连接到不同的端点,这可能会使在物联网设备上使用这些方法变得AWSSDKs 不切实际。AWS SDKs

移动设备

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

C++

AWS IoTC++ 设备开发工具包

AWS IoTC++ Device SDK 允许开发人员使用AWS和 APIs 的AWS IoT Core服务构建连接的应用程序。特别是,此 SDK 面向没有资源限制且需要高级特征(例如,消息队列、多线程支持和最新的语言特征)的设备而设计。有关更多信息,请参阅下列内容:

Python

AWS IoTPython 设备软件开发工具包

适用于 Python 的AWS IoT设备 SDK 使开发人员能够编写 Python 脚本,以便使用他们的设备通过 WebSocket 安全 (WSS) 协议通过 MQTT 或 MQTT 访问AWS IoT平台。通过将设备连接到AWS IoT Core服务,用户可以安全地使用消息代理、规则和AWS IoT Core提供其他服务(例如 Amazon Kinesis 和 Amazon S3 AWS Lambda 等)的 Device Shadow AWS 服务。 APIs

JavaScript

AWS IoT适用于的设备 SDK JavaScript

的AWS IoT设备 SDK JavaScript 使开发人员可以编写 JavaScript 应用程序,AWS IoT Core通过协议使用 MQTT 或 MQTT 访问 APIs 的 WebSocket 。它可用于 Node.js 环境和浏览器应用程序。有关更多信息,请参阅下列内容:

Java

AWS IoT适用于 Java 的设备 SDK

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

Embedded C

AWS IoT适用于嵌入式 C 的设备 SDK

重要

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

AWS IoT Device SDK for Embedded C(C-SDK) 是 MIT 开源许可下的 C 源文件集合,可用于嵌入式应用程序,将物联网设备安全地连接到 IoT Core。AWS它包括 MQTT、JSON 解析AWS IoT器和 Device Shadow 库等。它以源码的形式分发,用于构建到客户固件和应用程序代码、其它库,以及(可选)RTOS(实时操作系统)中。

AWS IoT Device SDK for Embedded C通常针对需要优化 C 语言运行时的资源受限的设备。您可以在任何操作系统上使用 SDK,也可以将其托管在任何类型的处理器上(例如 MCUs 和 MPUs)。如果您的设备有足够的内存和处理资源可用,我们建议您使用另一AWS IoT台设备和移动设备 SDKs,例如适用于 C++ JavaScript、Java 或 Python 的AWS IoT设备 SDK。

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