

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

# 将设备连接到 AWS IoT
<a name="iot-connect-devices"></a>

设备通过连接 AWS IoT 和其他服务 AWS IoT Core。通过 AWS IoT Core，设备使用特定于您账户的设备端点发送和接收消息。[AWS IoT 设备 SDKs](#iot-connect-device-sdks) 支持使用 MQTT 和 WSS 协议进行的设备通信。有关设备可以使用的协议的更多信息，请参阅 [设备通信协议](protocols.md)。

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

**AWS IoT 消息安全**  
要 AWS IoT 使用的设备连接[X.509 客户端证书](x509-client-certs.md)和用于身份验证的 [V4 AWS 签名](https://docs.aws.amazon.com//general/latest/gr/signing_aws_api_requests.html)。设备通信受 TLS 版本 1.3 的保护，并且 AWS IoT 要求设备在连接时发送[服务器名称指示 (SNI) 扩展名](https://tools.ietf.org/html/rfc3546#section-3.1)。有关更多信息，请参阅[中的传输安全 AWS IoT](transport-security.html)。

## AWS IoT 设备数据和服务端点
<a name="iot-connect-device-endpoints"></a>

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

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

要了解您账户的设备数据端点，可以在 AWS IoT Core 主机的 [https://console.aws.amazon.com//iot/home#/settings](https://console.aws.amazon.com//iot/home#/settings) 页面中找到该端点。

要了解您账户的特定用途的设备端点（包括设备数据端点），请使用此处显示的 **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 证书实现向后兼容的旧端点检索数据。有关更多信息，请参阅[服务器身份验证](server-authentication.html)。


**AWS IoT 设备端点**  

|  终端节点用途  |  `endpointType` 值  |  说明  | 
| --- | --- | --- | 
|  AWS IoT Core - 数据面板操作  |  `iot:Data-ATS`  |  用于与消息代理、[Device Shadow](iot-device-shadows.md) 和 AWS IoT的[规则引擎](iot-rules.md)组件之间收发数据。 `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 服务](authorizing-direct-aws.md)。  | 
|  AWS IoT Device Management - 任务数据操作  |  `iot:Jobs`  |  用于使设备能够使用任务[设备 HTTPS 与 AWS IoT 作业](jobs-mqtt-api.md)服务进行交互 APIs。 `iot:Jobs` IPv4 只能用于。如果您使用的是双堆栈终端节点（IPv4 和 IPv6），请使用`iot:Data-ATS`终端节点类型。  | 
|  AWS IoT 设备顾问操作  |  `iot:DeviceAdvisor`  |  用于使用 Device Advisor 测试设备的测试端点类型。有关更多信息，请参阅 [Device Advisor](device-advisor.md)。  | 
|  AWS IoT Core 数据测试版（预览版）  |  `iot:Data-Beta`  |  为测试版预留的端点类型。有关当前用法的信息，请参阅 [域配置](iot-custom-endpoints-configurable.md)。  | 

您也可以使用自己的完全限定域名 (FQDN)（例如*example.com*）和关联的服务器证书来连接设备。 AWS IoT [域配置](iot-custom-endpoints-configurable.md)

## AWS IoT 设备 SDKs
<a name="iot-connect-device-sdks"></a>

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

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

**移动设备**  
同时[AWS 移动 SDKs](iot-connect-service.md#iot-connect-mobile-sdks)支持 MQTT 设备通信 APIs、部分 AWS IoT 服务和其他 AWS 服务。 APIs 如果您在受支持的移动设备上进行开发，请查看其 SDK，了解它是否是开发 IoT 解决方案的最佳选择。

------
#### [ C\$1\$1 ]

**AWS IoT C\$1\$1 设备开发工具包**

 AWS IoT C\$1\$1 Device SDK 允许开发人员使用 AWS 和 APIs 的 AWS IoT Core 服务构建连接的应用程序。特别是，此 SDK 面向没有资源限制且需要高级特征（例如，消息队列、多线程支持和最新的语言特征）的设备而设计。有关更多信息，请参阅下列内容：
+ [AWS IoT 设备 SDK C\$1\$1 v2 已开启 GitHub](https://github.com/aws/aws-iot-device-sdk-cpp-v2)
+ [AWS IoT 设备 SDK C\$1\$1 v2 自述文件](https://github.com/aws/aws-iot-device-sdk-cpp-v2#aws-iot-device-sdk-for-c-v2)
+ [AWS IoT 设备 SDK C\$1\$1 v2 示例](https://github.com/aws/aws-iot-device-sdk-cpp-v2/tree/main/samples#sample-apps-for-the-aws-iot-device-sdk-for-c-v2)
+ [AWS IoT 设备 SDK C\$1\$1 v2 API 文档](https://aws.github.io/aws-iot-device-sdk-cpp-v2/)

------
#### [ Python ]

**AWS IoT Python 设备软件开发工具包**

适用于 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 
+ [AWS IoT 适用于 Python v2 的设备 SDK 已开启 GitHub](https://github.com/aws/aws-iot-device-sdk-python-v2)
+ [AWS IoT 适用于 Python v2 的设备 SDK 自述文件](https://github.com/aws/aws-iot-device-sdk-python-v2#aws-iot-device-sdk-v2-for-python)
+ [AWS IoT 适用于 Python v2 的设备软件开发工具包示例](https://github.com/aws/aws-iot-device-sdk-python-v2/tree/main/samples#sample-apps-for-the-aws-iot-device-sdk-v2-for-python)
+ [AWS IoT 适用于 Python 的设备开发工具包 v2 API 文档](https://aws.github.io/aws-iot-device-sdk-python-v2/)

------
#### [ JavaScript ]

**AWS IoT 适用于的设备 SDK JavaScript**

的 AWS IoT 设备 SDK JavaScript 使开发人员可以编写 JavaScript 应用程序， AWS IoT Core 通过协议使用 MQTT 或 MQTT 访问 APIs 的 WebSocket 。它可用于 Node.js 环境和浏览器应用程序。有关更多信息，请参阅下列内容：
+ [AWS IoT 适用于 JavaScript v2 的设备 SDK 已开启 GitHub](https://github.com/aws/aws-iot-device-sdk-js-v2)
+ [AWS IoT 适用于 JavaScript v2 的设备 SDK 自述文件](https://github.com/aws/aws-iot-device-sdk-js-v2#aws-iot-device-sdk-for-javascript-v2)
+ [AWS IoT 适用于 JavaScript v2 示例的设备 SDK](https://github.com/aws/aws-iot-device-sdk-js-v2/tree/main/samples#sample-apps-for-the-aws-iot-device-sdk-for-javascript-v2)
+ [AWS IoT 适用于 JavaScript v2 的设备 SDK API 文档](https://aws.github.io/aws-iot-device-sdk-js-v2/index.html)

------
#### [ 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 文档进行序列化或反序列化。有关更多信息，请参阅下列内容：
+ [AWS IoT 适用于 Java v2 的设备 SDK 已开启 GitHub](https://github.com/aws/aws-iot-device-sdk-java-v2)
+ [AWS IoT 适用于 Java 的设备 SDK v2 自述文件](https://github.com/aws/aws-iot-device-sdk-java-v2#aws-iot-device-sdk-for-java-v2)
+ [AWS IoT 适用于 Java 的设备 SDK v2 示例](https://github.com/aws/aws-iot-device-sdk-java-v2/tree/main/samples#sample-apps-for-the-aws-iot-device-sdk-for-java-v2)
+ [AWS IoT 适用于 Java 的设备 SDK v2 API 文档](https://aws.github.io/aws-iot-device-sdk-java-v2/)

------
#### [ 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 设备和移动设备，例如适用于 C\$1\$1 SDKs JavaScript、Java 或 Python 的 AWS IoT 设备 SDK。

有关更多信息，请参阅下列内容：
+ [AWS IoT 适用于嵌入式 C 的设备 SDK 已开启 GitHub](https://github.com/aws/aws-iot-device-sdk-embedded-C)
+ [AWS IoT 适用于嵌入式 C 的设备 SDK 自述文件](https://github.com/aws/aws-iot-device-sdk-embedded-C#aws-iot-device-sdk-for-embedded-c)
+ [AWS IoT 嵌入式 C 示例的设备 SDK](https://docs.aws.amazon.com/embedded-csdk/latest/lib-ref/docs/doxygen/output/html/demos_main.html)

------