

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

# 试试 AWS IoT Core 快速连接教程
<a name="iot-quick-start"></a>

在本教程中，您将创建您的第一件事物对象，将设备连接到该对象，并观看其发送 MQTT 消息。

您预计需要花费 15-20 分钟来完成本教程。

本教程最适合想要快速入门 AWS IoT 以了解其在有限场景中的工作原理的人。如果您正在寻找一个能够帮助您入门以便您能够探索更多特征和服务的示例，请尝试 [AWS IoT Core 在动手教程中探索](iot-gs-first-thing.md)。

在本教程中，你将在连接至物联网*资源的*设备上下载并运行软件 AWS IoT Core ，这是非常小的物联网解决方案的一部分。该设备可以是物联网设备，如 Raspberry Pi，也可以是运行 Linux、OS 和 OSX 或 Windows 的电脑。如果您要将远程广域网 (W LoRa AN) 设备连接到 AWS IoT，请参阅教程 [>将设备和网关连接到 LoRa WAN](https://docs.aws.amazon.com/iot-wireless/latest/developerguide/lorawan-getting-started.html)。 AWS IoT Core 

如果您的设备支持可以运行 [AWS IoT 控制台](https://console.aws.amazon.com//iot/home)的浏览器，我们建议您在该设备上完成本教程。

**注意**  
如果您的设备没有兼容的浏览器，请在电脑上遵循本教程。当流程要求您下载文件时，请将其下载到您的电脑，然后使用 Secure Copy（SCP）或类似流程将下载的文件传输到您的设备。

本教程要求您的物联网设备与 AWS 账户的设备数据端点上的端口 8443 进行通信。要测试它是否可以访问该端口，请尝试 [测试与设备数据端点的连接](iot-quick-start-test-connection.md) 中的步骤。

## 步骤 1：开始教程
<a name="iot-quick-start-connect"></a>

如果可能，请在您的设备上完成此流程；否则，请在本流程随后的步骤中准备好将文件传输到您的设备。

要开始本教程，请登录 [AWS IoT 控制台](https://console.aws.amazon.com//iot/home)。在 AWS IoT 主机主页的左侧，选择 **Connect，然后选择 Con** **nect 一台设备**。

![\[此 AWS IoT 控制台主页显示如何连接一台设备。\]](http://docs.aws.amazon.com/zh_cn/iot/latest/developerguide/images/aws-iot-quick-connect.PNG)


## 步骤 2：创建一个事物对象
<a name="iot-quick-start-configure"></a>

1. 在 **Prepare your device**（准备好您的设备）部分中，按照屏幕上的说明准备好要连接到 AWS IoT的设备。  
![\[如何在 AWS IoT 控制台中准备设备。\]](http://docs.aws.amazon.com/zh_cn/iot/latest/developerguide/images/aws-iot-learn-prepare-device.png)

1. 在 **Register and secure your device**（注册并保护您的设备）部分中，选择 **Create a new thing**（创建新事物）或 **Choose an existing thing**（选择现有事物）。在 **Thing name**（事物名称）字段中，输入事物对象的名称。本例中使用的事物名称为 **TutorialTestThing**
**重要**  
在继续之前，请仔细检查您的事物名称。  
事物对象创建后便无法更改事物名称。如果要更改事物名称，您必须使用正确的事物名称创建新事物对象，然后删除名称不正确的事物。

   在 **Additional configurations**（其他配置）部分中，使用列出的可选配置进一步自定义您的事物资源。

   为事物对象提供名称并选择任何其他配置后，选择 **Next**（下一步）。  
![\[使用 AWS IoT 控制台注册和保护您的设备。\]](http://docs.aws.amazon.com/zh_cn/iot/latest/developerguide/images/aws-iot-learn-register-and-secure-your-device.png)

1. 在 **“选择平台和 SDK**” 部分，选择要使用的平台和 AWS IoT 设备 SDK 的语言。此示例使用 Linux/OSX 平台和 Python 软件开发工具包。请确保在目标设备上安装了 python3 和 pip3，再继续下一步。
**注意**  
请务必在控制台页面底部检查所选 SDK 所需的必备软件列表。  
您必须先在目标电脑上安装所需的软件，然后才能继续执行下一步。

   选择好平台和 Device SDK 语言后，选择 **Next**（下一步）。  
![\[使用 AWS IoT 控制台选择平台和 SDK。\]](http://docs.aws.amazon.com/zh_cn/iot/latest/developerguide/images/aws-iot-learn-choose-platform-and-SDK.png)

## 步骤 3：将文件下载到您的设备
<a name="iot-quick-start-name"></a>

该页面在创建连接套件后 AWS IoT 出现，其中包括您的设备所需的以下文件和资源：
+ 用于对设备进行身份验证的事物证书文件
+ 一个策略资源，用于授权事物对象与 AWS IoT交互
+ 下载 AWS 设备 SDK 并在您的设备上运行示例程序的脚本

1. 准备好继续后，请选择**下载连接套件**按钮为您之前选择的平台下载连接工具包。  
![\[这是用于下载证书文件的 AWS IoT 控制台页面。\]](http://docs.aws.amazon.com/zh_cn/iot/latest/developerguide/images/aws-iot-learn-download-connection-kit_1.png)

1. 如果您在设备上运行此流程，请将连接工具包文件保存到可运行命令行命令的目录中。

   如果您未在设备上运行此流程，请将连接工具包文件保存到本地目录中，然后将该文件传输到您的设备。

1. 在 **Unzip connection kit on your device**（在设备上解压缩连接工具包）部分中，在连接工具包文件所在的目录中输入 **unzip connect\$1device\$1package.zip**。

   如果您使用的是 Windows PowerShell 命令窗口，但该**unzip**命令不起作用，请**unzip**替换为**expand-archive**，然后重试命令行。

1. 当设备上具有连接工具包文件后，请选择 **Next**（下一步）继续本教程。  
![\[AWS IoT 连接套件下载后的控制台证书文件下载页面。\]](http://docs.aws.amazon.com/zh_cn/iot/latest/developerguide/images/aws-iot-learn-download-connection-kit_2.png)

## 步骤 4：运行示例
<a name="iot-quick-start-install-run"></a>

您可以在设备上的终端或命令窗口中执行此程序，同时按照控制台中显示的说明进行操作。控制台中显示的命令适用于您在 [步骤 2：创建一个事物对象](#iot-quick-start-configure) 中选择的操作系统。此处显示的是针对 Linux/OSX 操作系统的内容。

1. 在设备上的终端或命令窗口中，在包含连接套件文件的目录中，执行 AWS IoT 控制台中显示的步骤。  
![\[AWS IoT 控制台快速入门安装和运行页面。\]](http://docs.aws.amazon.com/zh_cn/iot/latest/developerguide/images/aws-iot-learn-run-connection-kit.png)

1. 在控制台中输入 **Step 2**（步骤 2）的命令后，您应该会在设备的终端或命令窗口中看到类似以下内容的输出。此输出来自程序发出然后由 AWS IoT Core接收的消息。  
![\[AWS IoT 控制台快速入门示例程序输出。\]](http://docs.aws.amazon.com/zh_cn/iot/latest/developerguide/images/aws-iot-learn-connect-console-output-python_updated.png)

   当示例程序运行时，也将显示测试消息 `Hello World!`。测试消息便会显示在设备的终端或命令窗口中。
**注意**  
有关主题订阅和发布的更多信息，请参阅所选 SDK 的示例代码。

1. 要再次运行示例程序，您可以在控制台中重复本过程的 **Step 2**（步骤 2）中的命令。

1. （可选）如果您想在控制台中查看来自物联网客户端的消息，请在[AWS IoT 控制台](https://console.aws.amazon.com//iot/home)的[测试页面上打开 MQTT **测试**客户](https://console.aws.amazon.com//iot/home#/test)端。 AWS IoT 如果选择 Python SDK，请在 **MQTT test client**（MQTT 测试客户端）的 **Topic filter**（主题筛选条件）中输入主题（例如 **sdk/test/*python***），即可订阅来自设备的消息。主题筛选条件区分大小写，并且依赖于您在 **Step 1**（步骤 1）中选择的 SDK 的编程语言。有关主题订阅和发布的更多信息，请参阅所选 SDK 的代码示例。

1. 订阅测试主题后，请在设备上运行 **./start.sh**。有关更多信息，请参阅 [使用 MQTT 客户端查看 AWS IoT MQTT 消息](view-mqtt-messages.md)。

   运行 **./start.sh** 后，MQTT 客户端会显示类似以下内容的消息：

   ```
   {
     "message": "Hello World!" [1]
   }
   ```

   每次接收新的 `Hello World!` 消息时，`[]` 中包含的 `sequence` 数量会递增 1，并在您结束程序时停止。

1. 要完成本教程并查看摘要，请在 AWS IoT 控制台中选择 “**继续**”。  
![\[AWS IoT 控制台快速入门完成页面。\]](http://docs.aws.amazon.com/zh_cn/iot/latest/developerguide/images/aws-iot-learn-connect-complete_updated1.png)

1. 现在将显示您的 AWS IoT 快速连接教程摘要。  
![\[AWS IoT 控制台快速入门摘要页面。\]](http://docs.aws.amazon.com/zh_cn/iot/latest/developerguide/images/aws-iot-learn-device-is-connected.png)

## 步骤 5。进一步探索
<a name="iot-quick-start-test"></a>

完成快速入门后，有一些想法需要 AWS IoT 进一步探索。
+ 

**[在 MQTT 测试客户端中查看 MQTT 消息](https://console.aws.amazon.com/iot/home#/test)**  
从 [AWS IoT 控制台](https://console.aws.amazon.com//iot/home)，您可以在 AWS IoT 控制台的**测试**页面上打开 [MQTT 客户端](https://console.aws.amazon.com//iot/home#/test)。在 **MQTT test client**（MQTT 测试客户端）中，订阅 **\$1**，然后按前一步所述在设备上运行程序 **./start.sh**。有关更多信息，请参阅 [使用 MQTT 客户端查看 AWS IoT MQTT 消息](view-mqtt-messages.md)。
+ 

**使用 [Device Advisor](https://docs.aws.amazon.com//iot/latest/developerguide/device-advisor.html) 在您的设备上运行测试**  
使用 Device Advisor 来测试您的设备能否安全可靠地连接和与之交互 AWS IoT。
+ 

**[交互式教程](interactive-demo.md)**  
要开始交互式教程，请在 AWS IoT 控制台的 “**学习**” 页面的 “**查看 AWS IoT 工作原理**” 磁贴中，选择 “**开始教程**”。
+ 

**[准备好了解更多教程](iot-gs-first-thing.md)**  
此快速入门仅为您提供了以下示例 AWS IoT. 如果您想 AWS IoT 进一步探索并了解使其成为强大物联网解决方案平台的功能，请通过以下方式开始准备您的开发平台[AWS IoT Core 在动手教程中探索](iot-gs-first-thing.md)。

# 测试与设备数据端点的连接
<a name="iot-quick-start-test-connection"></a>

本主题介绍如何测试设备与您账户的*设备数据端点*的连接，该端点是物联网设备用于连接 AWS IoT的端点。

在要测试的设备上执行这些步骤，或者使用连接到要测试的设备的 SSH 终端会话来执行这些步骤。

**Topics**
+ [

## 查找设备数据端点
](#iot-quick-start-test-connection-endpoint)
+ [

## 快速测试连接
](#iot-quick-start-test-connection-ping)
+ [

## 让应用程序测试与设备数据端点和端口的连接
](#iot-quick-start-test-connection-app)
+ [

## 测试与设备数据端点和端口的连接
](#iot-quick-start-test-connection-test)

## 查找设备数据端点
<a name="iot-quick-start-test-connection-endpoint"></a>

此步骤说明如何在 [AWS IoT 控制台](https://console.aws.amazon.com//iot/home)中找到您的设备数据端点，以便测试与物联网设备的连接。

**查找设备数据端点**

1. 在 [AWS IoT 控制台](https://console.aws.amazon.com//iot/home)的**连接**部分，转到**域配置**。

1. 在**域配置**页面，转到**域配置**容器，并复制**域名**。您的终端节点值对您来说是唯一的， AWS 账户 与以下示例类似:`a3qEXAMPLEsffp-ats.iot.eu-west-1.amazonaws.com`.

1. 

   保存设备数据端点，以便在以下步骤中使用。

## 快速测试连接
<a name="iot-quick-start-test-connection-ping"></a>

此步骤测试与设备数据端点的常规连接，但不测试设备将使用的特定端口。此测试使用通用程序，通常足以了解您的设备是否可以连接到 AWS IoT。

如果要测试与设备将使用的特定端口的连接，请跳过此步骤并继续 [让应用程序测试与设备数据端点和端口的连接](#iot-quick-start-test-connection-app)。

**快速测试设备数据端点**

1. 在设备的终端或命令行窗口中，将示例设备数据终端节点 (`a3qEXAMPLEsffp-ats.iot.eu-west-1.amazonaws.com`) 替换为您账户的设备数据终端节点，然后输入此命令。

------
#### [ Linux ]

   ```
   ping -c 5 a3qEXAMPLEsffp-ats.iot.eu-west-1.amazonaws.com
   ```

------
#### [ Windows ]

   ```
   ping -n 5 a3qEXAMPLEsffp-ats.iot.eu-west-1.amazonaws.com
   ```

------

1. 如果 `ping` 显示类似于以下内容的输出，则表示它已成功连接到设备数据端点。虽然它没有 AWS IoT 直接与之通信，但它确实找到了服务器，而且 AWS IoT 很可能可以通过此端点访问服务器。

   ```
   PING a3qEXAMPLEsffp-ats.iot.eu-west-1.amazonaws.com (xx.xx.xxx.xxx) 56(84) bytes of data.
   64 bytes from ec2-EXAMPLE-218.eu-west-1.compute.amazonaws.com (xx.xx.xxx.xxx): icmp_seq=1 ttl=231 time=127 ms
   64 bytes from ec2-EXAMPLE-218.eu-west-1.compute.amazonaws.com (xx.xx.xxx.xxx): icmp_seq=2 ttl=231 time=127 ms
   64 bytes from ec2-EXAMPLE-218.eu-west-1.compute.amazonaws.com (xx.xx.xxx.xxx): icmp_seq=3 ttl=231 time=127 ms
   64 bytes from ec2-EXAMPLE-218.eu-west-1.compute.amazonaws.com (xx.xx.xxx.xxx): icmp_seq=4 ttl=231 time=127 ms
   64 bytes from ec2-EXAMPLE-218.eu-west-1.compute.amazonaws.com (xx.xx.xxx.xxx): icmp_seq=5 ttl=231 time=127 ms
   ```

   如果您对此结果满意，则可以在此处停止测试。

   如果想要测试与 AWS IoT使用的特定端口的连接，请继续 [让应用程序测试与设备数据端点和端口的连接](#iot-quick-start-test-connection-app)。

1. 如果 `ping` 没有返回成功输出，请检查端点值以确保您拥有正确的端点，然后检查设备与互联网的连接。

## 让应用程序测试与设备数据端点和端口的连接
<a name="iot-quick-start-test-connection-app"></a>

可以通过使用 `nmap` 来执行更彻底的连接测试。此步骤测试 `nmap` 是否已安装在设备上。

**检查设备上的 `nmap`**

1. 在要测试的设备上的终端或命令行窗口中，输入此命令以查看是否已安装 `nmap`。

   ```
   nmap --version
   ```

1. 如果您看到类似于以下内容的输出，则表示已安装 `nmap`，您可以继续 [测试与设备数据端点和端口的连接](#iot-quick-start-test-connection-test)。

   ```
   Nmap version 6.40 ( http://nmap.org )
   Platform: x86_64-koji-linux-gnu
   Compiled with: nmap-liblua-5.2.2 openssl-1.0.2k libpcre-8.32 libpcap-1.5.3 nmap-libdnet-1.12 ipv6
   Compiled without:
   Available nsock engines: epoll poll select
   ```

1. 如果您没有看到类似于上一步中所示的响应，则必须在设备上安装 `nmap`。为设备的操作系统选择相关步骤。

------
#### [ Linux ]

此步骤要求您具有在计算机上安装软件的权限。

**在 Linux 计算机上安装 nmap**

1. 在设备的终端或命令行窗口中，输入与所运行的 Linux 版本对应的命令。

   1. Debian 或 Ubuntu：

      ```
      sudo apt install nmap
      ```

   1. CentOS 或 RHEL：

      ```
      sudo yum install nmap
      ```

1. 使用以下命令测试安装：

   ```
   nmap --version
   ```

1. 如果您看到类似于以下内容的输出，则表示已安装 `nmap`，您可以继续 [测试与设备数据端点和端口的连接](#iot-quick-start-test-connection-test)。

   ```
   Nmap version 6.40 ( http://nmap.org )
   Platform: x86_64-koji-linux-gnu
   Compiled with: nmap-liblua-5.2.2 openssl-1.0.2k libpcre-8.32 libpcap-1.5.3 nmap-libdnet-1.12 ipv6
   Compiled without:
   Available nsock engines: epoll poll select
   ```

------
#### [ macOS ]

此步骤要求您具有在计算机上安装软件的权限。

**在 macOS 计算机上安装 nmap**

1. 在浏览器中打开 [https://nmap.org/download\$1macosx](https://nmap.org/download#macosx)，然后下载**最新稳定**的安装程序。

   出现提示时，选择 “**打开方式**” DiskImageInstaller。

1. 在安装窗口中，将程序包移到 **Applications**（应用程序）文件夹。

1. 在**查找工具**中，找到**应用程序**文件夹中的 `nmap-xxxx-mpkg` 程序包，**Ctrl-click** 该程序包，然后选择**打开**以打开该程序包。

1. 查看安全对话框。如果您已准备好安装 **nmap**，请选择 **Open**（打开）以安装 **nmap**。

1. 在 **Terminal** 中，使用以下命令测试安装。

   ```
   nmap --version
   ```

1. 如果您看到类似于以下内容的输出，则表示已安装 `nmap`，您可以继续 [测试与设备数据端点和端口的连接](#iot-quick-start-test-connection-test)。

   ```
   Nmap version 7.92 ( https://nmap.org )
   Platform: x86_64-apple-darwin17.7.0
   Compiled with: nmap-liblua-5.3.5 openssl-1.1.1k nmap-libssh2-1.9.0 libz-1.2.11 nmap-libpcre-7.6 nmap-libpcap-1.9.1 nmap-libdnet-1.12 ipv6 Compiled without:
   Available nsock engines: kqueue poll select
   ```

------
#### [ Windows ]

此步骤要求您具有在计算机上安装软件的权限。

**在 Windows 计算机上安装 nmap**

1. 在浏览器中打开 [https://nmap.org/download\$1windows](https://nmap.org/download#windows)，然后下载安装程序的**最新稳定**版本。

   出现提示时，请选择 **Save file**（保存文件）。下载文件后，从下载文件夹中打开它。

1.  在安装程序文件完成下载后，打开已下载的 **nmap-xxxx-setup.exe** 以安装应用程序。

1.  安装程序时接受默认设置。

   对于此测试，您不需要 Npcap 应用程序。如果您不想安装它，则可以取消选择该选项。

1. 在 **Command** 中，使用以下命令测试安装。

   ```
   nmap --version
   ```

1. 如果您看到类似于以下内容的输出，则表示已安装 `nmap`，您可以继续 [测试与设备数据端点和端口的连接](#iot-quick-start-test-connection-test)。

   ```
   Nmap version 7.92 ( https://nmap.org )
   Platform: i686-pc-windows-windows
   Compiled with: nmap-liblua-5.3.5 openssl-1.1.1k nmap-libssh2-1.9.0 nmap-libz-1.2.11 nmap-libpcre-7.6 Npcap-1.50 nmap-libdnet-1.12 ipv6
   Compiled without:
   Available nsock engines: iocp poll select
   ```

------

## 测试与设备数据端点和端口的连接
<a name="iot-quick-start-test-connection-test"></a>

此步骤使用所选端口测试物联网设备与设备数据端点的连接。

**测试设备数据端点和端口**

1. 在设备的终端或命令行窗口中，将示例设备数据终端节点 (`a3qEXAMPLEsffp-ats.iot.eu-west-1.amazonaws.com`) 替换为您账户的设备数据终端节点，然后输入此命令。

   ```
   nmap -p 8443 a3qEXAMPLEsffp-ats.iot.eu-west-1.amazonaws.com
   ```

1. 如果 `nmap` 显示类似于以下内容的输出，`nmap` 能够通过所选端口成功连接到您的设备数据端点。

   ```
   Starting Nmap 7.92 ( https://nmap.org ) at 2022-02-18 16:23 Pacific Standard Time
   Nmap scan report for a3qEXAMPLEsffp-ats.iot.eu-west-1.amazonaws.com (xx.xxx.147.160)
   Host is up (0.036s latency).
   Other addresses for a3qEXAMPLEsffp-ats.iot.eu-west-1.amazonaws.com (not scanned): xx.xxx.134.144 xx.xxx.55.139 xx.xxx.110.235 xx.xxx.174.233 xx.xxx.74.65 xx.xxx.122.179 xx.xxx.127.126
   rDNS record for xx.xxx.147.160: ec2-EXAMPLE-160.eu-west-1.compute.amazonaws.com
   
   PORT     STATE SERVICE
   8443/tcp open  https-alt
   MAC Address: 00:11:22:33:44:55 (Cimsys)
   
   Nmap done: 1 IP address (1 host up) scanned in 0.91 seconds
   ```

1. 如果 `nmap` 没有返回成功输出，请检查端点值以确保您拥有正确的端点，然后检查设备与互联网的连接。

通过将步骤 1 中使用的端口 `8443` 替换为要测试的端口，您可以测试设备数据端点上的其他端口，例如主 HTTPS 端口 443。