AWS IoT Greengrass
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

配置您的设备

要配置设备,您必须执行以下操作:安装 AWS IoT Greengrass 依赖项,配置 AWS IoT Greengrass 核心软件,配置主机以访问设备以及在设备上配置用户权限。

在所测试设备上验证 AWS IoT Greengrass 依赖项

您必须先设置设备(如 AWS IoT Greengrass 入门中所述),然后适用于 AWS IoT Greengrass 的 IDT 才能测试设备。有关支持的平台的信息,请参阅支持的平台

配置 AWS IoT Greengrass 软件

适用于 AWS IoT Greengrass 的 IDT 将测试设备是否与特定版本的 AWS IoT Greengrass 兼容。IDT 提供了两种在设备上测试 AWS IoT Greengrass 的选项:

  • 下载并使用某一版本的 AWS IoT Greengrass 核心软件。IDT 为您安装此软件。

  • 使用设备上已安装的 AWS IoT Greengrass 核心软件版本。

注意

每个版本的 AWS IoT Greengrass 都有相应的 IDT 版本。您必须下载与所用的 AWS IoT Greengrass 版本对应的 IDT 版本。

有两种在设备上安装 AWS IoT Greengrass 的选项:

  • 下载 AWS IoT Greengrass 核心软件和配置适用于 AWS IoT Greengrass 的 IDT 以使用它。

  • 使用 AWS IoT Greengrass 核心软件的现有安装。

以下各节介绍了这些选项。您只需要使用其中一个选项。

选项 1:下载 AWS IoT Greengrass 核心软件并配置 AWS IoT Device Tester 以使用该软件

您可以从 AWS IoT Greengrass Core 软件下载 页面下载 AWS IoT Greengrass 核心软件。

  1. 找到正确的架构和 Linux 发行版,然后选择 Download (下载)

  2. 将该 tar.gz 文件复制到 <device-tester-extract-location>/products/greengrass/ggc

注意

请勿更改 AWS IoT Greengrass tar.gz 文件的名称。对于相同的操作系统和架构,请勿在此目录中放置多个文件。例如,在该目录中同时放置 greengrass-linux-armv7l-1.7.1.tar.gzgreengrass-linux-armv7l-1.8.1.tar.gz 文件将导致测试失败。

选项 2:使用 AWS IoT Greengrass 及 AWS IoT Device Tester 的现有安装

通过将 greengrassLocation 属性添加到 <device_tester_extract_location>/configs 文件夹中的 device.json 文件,将 IDT 配置为测试设备上安装的 AWS IoT Greengrass 核心软件。例如:

"greengrassLocation" : "<path-to-greengrass-on-device>"

有关 device.json 文件的更多信息,请参阅设备配置

在 Linux 设备上,AWS IoT Greengrass 核心软件的默认位置为 /greengrass

注意

您的设备应具有尚未开始的 AWS IoT Greengrass 核心软件安装。

确保您已在设备上添加 ggc_user 用户和 ggc_group。有关更多信息,请参阅 AWS IoT Greengrass 的环境设置

配置主机以访问所测试设备

IDT 在主机上运行,并且必须能够使用 SSH 连接到您的设备。有两个选项允许 IDT 获得对所测试设备的 SSH 访问权限:

  1. 按照此处的说明创建一个 SSH 密钥对并授权您的密钥,以便登录所测试设备而无需指定密码。

  2. device.json 文件中为每个设备提供用户名和密码。有关更多信息,请参阅 设备配置

您可以使用任何 SSL 实施创建 SSH 密钥。以下说明介绍如何使用 SSH-KEYGENPuTTYgen(对于 Windows)。如果您使用的是另一个 SSL 实施,请参阅该实施的文档。

IDT 使用 SSH 密钥对所测试设备进行身份验证。

使用 SSH-KEYGEN 创建 SSH 密钥

  1. 创建 SSH 密钥。

    您可以使用 Open SSH ssh-keygen 命令创建 SSH 密钥对。如果您的主机上已有一个 SSH 密钥对,则最佳做法是专门为 IDT 创建一个 SSH 密钥对。这样,完成测试后,如果没有输入密码,主机将无法再连接到设备。它还使您能够仅向需要访问远程设备的人员授予访问权限。

    注意

    Windows 没有安装 SSH 客户端。有关在 Windows 上安装 SSH 客户端的信息,请参阅下载 SSH 客户端软件

    ssh-keygen 命令会提示您输入要存储密钥对的名称和路径。默认情况下,密钥对文件的名称为 id_rsa(私有密钥)和 id_rsa.pub(公有密钥)。在 macOS 和 Linux 上,这些文件的默认位置为 ~/.ssh/。在 Windows 上,默认路径为 C:\Users\<user-name>\.ssh

    根据提示,输入密钥短语来保护您的 SSH 密钥。有关更多信息,请参阅生成新的 SSH 密钥

  2. 向所测试设备添加经过授权的 SSH 密钥。

    IDT 必须使用您的 SSH 私有密钥登录所测试设备。要授权 SSH 私有密钥以登录所测试设备,请在主机上使用 ssh-copy-id 命令。此命令会将您的公有密钥添加到所测试设备上的 ~/.ssh/authorized_keys 文件中。例如:

    $ ssh-copy-id <remote-ssh-user>@<remote-device-ip>

    其中 remote-ssh-user 是用于登录所测试设备的用户名,remote-device-ip 是用于运行测试的所测试设备的 IP 地址。例如:

    ssh-copy-id pi@192.168.1.5

    系统提示时,输入在 ssh-copy-id 命令中指定的用户名所对应的密码。

    ssh-copy-id 公有密钥的名称为 id_rsa.pub 并且存储在默认位置(macOS 和 Linux 上的位置为 ~/.ssh/,Windows 上的位置为 C:\Users\<user-name>\.ssh)。如果为公有密钥提供其他名称或将其存储在其他位置,则必须使用 -i 选项与 ssh-copy-id 指定 SSH 公有密钥的完全限定路径(例如,ssh-copy-id -i ~/my/path/myKey.pub)。有关创建 SSH 密钥和复制公有密钥的更多信息,请参阅 SSH-COPY-ID

使用 PuTTYgen 创建 SSH 密钥(仅限 Windows)

  1. 确保您在所测试的设备上安装了 OpenSSH 服务器和客户端。有关更多信息,请参阅 OpenSSH

  2. 在所测试的设备上安装 PuTTYgen

  3. 打开 PuTTYgen。

  4. 选择 Generate (生成),然后在框中移动鼠标光标以生成私有密钥。

  5. Conversions (转换) 菜单中,选择 Export OpenSSH key (导出 OpenSSH 密钥),然后使用 .pem 文件扩展名保存私有密钥 。

  6. 将公有密钥添加到所测试设备上的 /home/<user>/.ssh/authorized_keys 文件中。

    1. 从 PuTTYgen 窗口复制公有密钥文本。

    2. 使用 PuTTY 在所测试设备上创建会话。

      1. 从命令提示符或 Windows Powershell 窗口中,运行以下命令:

        C:/<path-to-putty>/putty.exe -ssh <user>@<dut-ip-address>

      2. 在系统提示时,输入您的设备的密码。

      3. 使用 vi 或其他文本编辑器将公有密钥附加到所测试设备上的 /home/<user>/.ssh/authorized_keys 文件中。

  7. 使用您的用户名、IP 地址以及您刚刚为每个所测试的设备保存在主机上的私钥文件的路径更新 device.json 文件。有关更多信息,请参阅 。确保提供私有密钥的完整路径和文件名,并使用正斜杠(“/”)。例如,对于 Windows 路径 C:\DT\privatekey.pem,请在 device.json 文件中使用 C:/DT/privatekey.pem

在您的设备上配置用户权限

IDT 将对所测试设备中的各种目录和文件执行操作。其中一些操作需要提升的权限(使用 sudo)。要自动执行这些操作,适用于 AWS IoT Greengrass 的 IDT 必须能够在不提示输入密码的情况下使用 sudo 运行命令。

请在所测试设备上执行以下步骤,以允许在不提示输入密码的情况下进行 sudo 访问。

注意

username 是指 IDT 用来访问所测试设备的 SSH 用户。

将用户添加到 sudo 组

  1. 在所测试设备上,运行 sudo usermod -aG sudo <username>

  2. 注销,然后重新登录,以使更改生效。

  3. 要验证您的用户名已成功添加,运行 sudo echo test。如果系统未提示您输入密码,则说明已正确配置您的用户。

  4. 打开 /etc/sudoers 文件,并将以下行添加到文件末尾:

    <ssh-username> ALL=(ALL) NOPASSWD: ALL