创建 Amazon IoT 资源和连接 Raspberry Pi 运行影子应用程序 - Amazon IoT Core
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

创建 Amazon IoT 资源和连接 Raspberry Pi 运行影子应用程序

本教程演示如何设置和配置 Raspberry Pi 设备,并创建设备连接和交换 MQTT 消息所需的 Amazon IoT 资源。

注意

如果您计划 使用 Amazon EC2 创建虚拟设备,您可以跳过此页面并继续执行 配置您的设备。创建虚拟事物时,您将创建这些资源。如果您想使用不同的设备,而不是 Raspberry Pi ,可以尝试按照这些教程进行操作,将它们调整到您选择的设备。

在本教程中,您将学习如何:

  • 设置 Raspberry Pi 设备,并进行配置,以与 Amazon IoT 搭配使用。

  • 创建 Amazon IoT 策略文档,该文档将授权您的设备与 Amazon IoT 服务交互。

  • 在 Amazon IoT X.509 设备证书中创建事物资源,然后附加策略文档。

    事物是您的设备在 Amazon IoT 注册表中的虚拟展示。该证书将对您的设备进行身份验证以访问 Amazon IoT Core,并且策略文档授权您的设备与 Amazon IoT 交互。

如何运行本教程?

要为 Device Shadow 运行 shadow.py 示例应用程序,您将需要一个连接到 Amazon IoT 的 Raspberry Pi 设备。我们建议您按照此处显示的顺序遵循本教程,首先设置 Raspberry Pi 及其配件,然后创建策略并将策略附加到您创建的事物资源。然后,您可以遵循此教程,使用 Raspberry Pi 支持的图形用户界面 (GUI) 在设备的 Web 浏览器上打开 Amazon IoT 控制台,这也使您可以更轻松地将证书直接下载到您的 Raspberry Pi,以便连接到 Amazon IoT。

在开始本教程之前,请确保您具有:

  • 一个 Amazon Web Services 账户 。如果您没有账户,请完成 设置您的 Amazon Web Services 账户 中介绍的步骤然后继续操作。您将需要用到您的 Amazon Web Services 账户 和 Amazon IoT 控制台以完成本教程。

  • Raspberry Pi 及其必要的配件。您将需要:

    • Raspberry Pi 3 Model B 或更新型号。本教程可能适用于早期版本的 Raspberry Pi,但我们还没有测试过。

    • Raspberry Pi OS (32 位)或更高版本。我们始终建议使用最新版本的 Raspberry Pi OS。早期版本的操作系统可能有用,但我们还没有测试过。

    • 以太网或 Wi-Fi 连接。

    • 键盘、鼠标、显示器、电缆和电源。

完成本教程需要大约 30 分钟。

设置和配置 Raspberry Pi 设备

在本部分中,我们将配置一个 Raspberry Pi 设备,用于 Amazon IoT。

重要

将这些指令用于其他设备和操作系统可能会非常困难。您需要充分了解您的设备,以便能够解释这些说明并将它们应用到您的设备上。如果遇到困难,可以尝试使用其他设备选项之一作为替代方案,例如 使用 Amazon EC2 创建虚拟设备 或者 将您的 Windows 或 Linux PC 或 Mac 用作 Amazon IoT 设备

您需要配置您的 Raspberry Pi,以便它可以启动操作系统 (OS),连接到互联网,并允许您在命令行界面与它进行交互。您还可以使用 Raspberry Pi 支持的图形用户界面 (GUI) 打开 Amazon IoT 控制台并运行本教程的其余部分。

设置 Raspberry Pi:

  1. 将 SD 卡插入 Raspberry Pi 上的 MicroSD 卡槽。有些 SD 卡预装了一个安装管理器,将为您显示在启动主板后安装操作系统的菜单。您还可以使用 Raspberry Pi 在您的卡上安装操作系统。

  2. 将 HDMI TV 或显示器 Connect 到 HDMI 电缆,然后连接到 Raspberry Pi 的 HDMI 端口。

  3. 将键盘和鼠标连接到 Raspberry Pi 的 USB 端口,然后插入电源适配器以启动主板。

Raspberry Pi 启动后,如果 SD 卡预先加载了安装管理器,则会出现一个菜单来帮助您安装操作系统。如果您在安装操作系统时遇到问题,请尝试以下步骤。有关设置 Raspberry Pi 的更多信息,请参阅设置您的 Raspberry Pi

如果您在设置 Raspberry Pi 时遇到问题:

  • 在启动主板之前,请检查是否插入了 SD 卡。如果在启动主板后插入 SD 卡,则可能不会显示安装菜单。

  • 确保电视或显示器已打开,并且选择了正确的输入信号源。

  • 确保您使用的是兼容 Raspberry Pi 的软件。

如果您仍遇到问题或需要其他帮助,请参阅为您的 Raspberry Pi 获取帮助

安装操作系统后,使用 Raspberry Pi 的 Web 浏览器打开 Amazon IoT 控制台以继续本教程中的剩余步骤。

创建事物影子 Amazon IoT 策略

X.509 证书使用 Amazon IoT Core 对您的设备进行身份验证。Amazon IoT 策略附加到允许设备执行 Amazon IoT 操作(如订阅或发布 Device Shadow 服务使用的 MQTT 预留主题)的证书。您的设备在与 Amazon IoT Core 连接并向其发送消息时会提供其证书。

在此流程中,您将创建一个策略以允许您的设备执行运行示例程序所必要的 Amazon IoT 操作。建议您创建一个策略以仅授予执行任务所需的许可。您可以先创建 Amazon IoT 策略,然后将其附加到稍后将创建的设备证书。

创建 Amazon IoT 策略

  1. 在左侧菜单中,选择 Secure(安全),然后选 Policies(策略)。如果您的账户已有策略,请选择 Create(创建),否则,在 You don’t have a policy yet(您还没有策略)页面上,选择 Create a policy(创建策略)。

  2. Create a policy(创建策略)页面上:

    1. Name(名称)字段,输入策略的名称(例如 My_Device_Shadow_policy)。请勿在策略名称中使用个人身份信息。

    2. 在策略文档中,您描述了授予设备发布和订阅 MQTT 保留主题权限的连接、订阅、接收和发布操作。

      复制以下策略并将其粘贴到策略文档中。将 thingname 替换为您要创建的事物名称(例如 My_light_bulb),将 region 替换为您正在使用这些服务的 Amazon IoT 区域,将 account 替换为您的 Amazon Web Services 账户 数量。有关 Amazon IoT 策略的更多信息,请参阅 Amazon IoT Core 策略

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Publish" ], "Resource": [ "arn:aws:iot:region:account:topic/$aws/things/thingname/shadow/get", "arn:aws:iot:region:account:topic/$aws/things/thingname/shadow/update" ] }, { "Effect": "Allow", "Action": [ "iot:Receive" ], "Resource": [ "arn:aws:iot:region:account:topic/$aws/things/thingname/shadow/get/accepted", "arn:aws:iot:region:account:topic/$aws/things/thingname/shadow/get/rejected", "arn:aws:iot:region:account:topic/$aws/things/thingname/shadow/update/accepted", "arn:aws:iot:region:account:topic/$aws/things/thingname/shadow/update/rejected", "arn:aws:iot:region:account:topic/$aws/things/thingname/shadow/update/delta" ] }, { "Effect": "Allow", "Action": [ "iot:Subscribe" ], "Resource": [ "arn:aws:iot:region:account:topicfilter/$aws/things/thingname/shadow/get/accepted", "arn:aws:iot:region:account:topicfilter/$aws/things/thingname/shadow/get/rejected", "arn:aws:iot:region:account:topicfilter/$aws/things/thingname/shadow/update/accepted", "arn:aws:iot:region:account:topicfilter/$aws/things/thingname/shadow/update/rejected", "arn:aws:iot:region:account:topicfilter/$aws/things/thingname/shadow/update/delta" ] }, { "Effect": "Allow", "Action": "iot:Connect", "Resource": "arn:aws:iot:region:account:client/test-*" } ] }

创建事物资源并将策略附加到事物

连接到 Amazon IoT 的设备在 Amazon IoT 注册表中由事物资源表示。事物资源表示特定设备或逻辑实体,如本教程中的灯泡。

要了解如何在 Amazon IoT 创建事物,请执行 创建一个事物对象 中所述的步骤。以下是您在遵循该教程中的步骤时需要注意的几个关键事项:

  1. 选择 Create a single thing(创建单个事物),并在 Name(名称)字段中,输入 与您在之前创建策略时指定的 thingname 相同的事物名称(例如,My_light_bulb)。

    事物名称一旦创建,便不可更改。如果您给它一个不同于 thingname 的名字,请以 thingname 为名称创建新的事物,并删除旧的事物。

    注意

    请勿在事物名称中使用个人身份信息。事物名称可以出现在未加密的通信和报告中。

  2. 我们建议您将 Certificate created!(已创建证书!)页面的每个证书文件下载到您可以轻松找到的位置。您需要安装这些文件才能运行示例应用程序。

    建议您将文件下载到 Raspberry Pi 中您的 home 目录下的 certs 子目录中,并使用一个更简单的名称命名各个文件,如下表所示。

    证书文件名

    文件

    文件路径

    根 CA 证书

    ~/certs/Amazon-root-CA-1.pem

    设备证书

    ~/certs/device.pem.crt

    私有密钥

    ~/certs/private.pem.key

  3. 激活证书以启用与 Amazon IoT 的连接后,请选择 Attach a policy(附加策略)并确保将您之前创建的策略(例如,My_Device_Shadow_policy)附加到事物。

    创建事物后,您可以看到您的事物资源在 Amazon IoT 控制台中的事物列表里显示。

查看结果和后续步骤

在本教程中,您学习了如何:

  • 设置和配置 Raspberry Pi 设备.

  • 创建 Amazon IoT 策略文档,以授权您的设备与 Amazon IoT 服务交互。

  • 创建事物资源和关联的 X.509 设备证书,并将策略文档附加到其中。

后续步骤

您现在可以安装适用于 Python 的 Amazon IoT设备软件开发工具包,运行 shadow.py 示例应用程序,然后使用 Device Shadow 控制状态。有关如何使用该教程的更多信息,请参阅 安装设备开发工具包并运行 shadow.py Device Shadow 示例应用程序