使用自定义资源配置安装Amazon IoT Greengrass核心软件 - Amazon IoT Greengrass
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

使用自定义资源配置安装Amazon IoT Greengrass核心软件

此功能适用于 v2.4.0 及更高版本的 Greengrass nucleus 组件

Amazon IoT GreengrassCore 软件安装程序提供了一个 Java 接口,您可以在预置所需Amazon资源的自定义插件中实现该接口。您可以开发配置插件来使用自定义 X.509 客户端证书或运行其他安装过程不支持的复杂配置步骤。有关更多信息,请参阅Amazon IoT Core开发者指南中的创建自己的客户端证书

要在安装Amazon IoT Greengrass Core 软件时运行自定义配置插件,需要创建提供给安装程序的 JAR 文件。安装程序运行插件,插件返回配置用于定义 Greengrass 核心设备的Amazon资源。安装程序使用此信息在设备上配置Amazon IoT Greengrass核心软件。有关更多信息,请参阅开发自定义配置插件

重要

在下载Amazon IoT Greengrass核心软件之前,请检查您的核心设备是否符合安装和运行Amazon IoT Greengrass Core 软件 v2.0 的要求

先决条件

要使用自定义配置安装Amazon IoT Greengrass核心软件,您必须具备以下条件:

  • 用于实现的自定义配置插件的 JAR 文件DeviceIdentityInterface。自定义配置插件必须返回每个系统和 nucleus 配置参数的值。否则,您必须在安装期间在配置文件中提供这些值。有关更多信息,请参阅开发自定义配置插件

设置设备环境

按照本节中的步骤设置 Linux 或 Windows 设备用作Amazon IoT Greengrass核心设备。

将 Linux 设备设置为Amazon IoT Greengrass V2
  1. 安装 Java 运行时,Amazon IoT Greengrass核心软件需要使用该运行库。我们建议你使用亚马逊 Corretto 11OpenJDK 11。以下命令向您展示如何在您的设备上安装 OpenJDK。

    • 对于基于 Debian 或基于 Ubuntua 的发行版:

      sudo apt install default-jdk
    • 对于基于 Red Hat 的发行版:

      sudo yum install java-11-openjdk-devel
    • 对于 Amazon Linux 2:

      sudo amazon-linux-extras install java-openjdk11

    安装完成后,运行以下命令以验证 Java 是否在您的 Linux 设备上运行。

    java -version

    该命令打印设备上运行的 Java 版本。例如,在基于 Debian 的发行版上,输出可能类似于以下示例。

    openjdk version "11.0.9.1" 2020-11-04
    OpenJDK Runtime Environment (build 11.0.9.1+1-post-Debian-1deb10u2)
    OpenJDK 64-Bit Server VM (build 11.0.9.1+1-post-Debian-1deb10u2, mixed mode)
  2. (可选)创建在设备上运行组件的默认系统用户和组。您也可以选择让Amazon IoT Greengrass核心软件安装程序在安装期间使用安装程序参数创建此用户和组。--component-default-user有关更多信息,请参阅安装程序参数

    sudo useradd --system --create-home ggc_user sudo groupadd --system ggc_group
  3. 验证运行Amazon IoT Greengrass Core 软件的用户(通常root)是否有权sudo与任何用户和任何组一起运行。

    1. 运行以下命令以打开此/etc/sudoers文件。

      sudo visudo
    2. 确认用户的权限如以下示例所示。

      root ALL=(ALL:ALL) ALL
  4. (可选)要运行容器化的 Lambda 函数,必须启用 c groups v1,并且必须启用和装载内存设备 cgroup。如果您不打算运行容器化的 Lambda 函数,则可跳过此步骤。

    要启用这些 cgroups 选项,请使用以下 Linux 内核参数启动设备。

    cgroup_enable=memory cgroup_memory=1 systemd.unified_cgroup_hierarchy=0

    有关查看和设置设备内核参数的更多信息,请参阅您的操作系统的文档。按照说明永久设置内核参数。

    提示:在 Raspberry Pi 上设置内核参数

    如果您的设备是 Raspberry Pi,则可以完成以下步骤来查看和更新其 Linux 内核参数:

    1. 打开 /boot/cmdline.txt 文件。此文件指定树莓派启动时要应用的 Linux 内核参数。

      例如,在基于 Linux 的系统上,您可以运行以下命令使用 GNU nano 打开文件。

      sudo nano /boot/cmdline.txt
    2. 确认该/boot/cmdline.txt文件包含以下内核参数。该systemd.unified_cgroup_hierarchy=0参数指定使用 cgroups v1 而不是 cgroups v2。

      cgroup_enable=memory cgroup_memory=1 systemd.unified_cgroup_hierarchy=0

      如果/boot/cmdline.txt文件不包含这些参数,或者它包含这些具有不同值的参数,请更新文件以包含这些参数和值。

    3. 如果您更新了/boot/cmdline.txt文件,请重新启动 Raspberry Pi 以应用更改。

      sudo reboot
  5. 按照中的要求列表所示,在您的设备上安装所有其他必需的依赖项设备要求

注意

此功能适用于 Greengrass nucleus 组件的 v2.5.0 及更高版本。

将 Windows 设备设置为Amazon IoT Greengrass V2
  1. 安装 Java 运行时,Amazon IoT Greengrass核心软件需要使用该运行库。我们建议你使用亚马逊 Corretto 11OpenJDK 11

  2. 检查 PATH 系统变量上是否有 Java,如果不可用,则添加它。该 LocalSystem 帐户运行Amazon IoT Greengrass核心软件,因此您必须将 Java 添加到 PATH 系统变量中,而不是用户的 PATH 用户变量。执行以下操作:

    1. 按 Windows 键打开开始菜单。

    2. environment variables在开始菜单中键入搜索系统选项。

    3. 在开始菜单搜索结果中,选择编辑系统环境变量以打开系统属性窗口。

    4. 选择环境变量... 打开 “环境变量” 窗口。

    5. 在 “系统变量” 下,选择 “路径”,然后选择 “编辑”。在 “编辑环境变量” 窗口中,可以在单独的行上查看每条路径。

    6. 检查 Java 安装bin文件夹的路径是否存在。该路径可能类似于以下示例。

      C:\Program Files\Amazon Corretto\jdk11.0.13_8\bin
    7. 如果 Path 中缺少 Java 安装bin文件夹,请选择 “新建” 进行添加,然后选择 “确定”

  3. 以管理员身份打开 Windows 命令提示符 (cmd.exe)。

  4. 在 Windows 设备上的 LocalSystem 帐户中创建默认用户。用安全密码替换密码。

    net user /add ggc_user password
    提示

    根据您的 Windows 配置,用户的密码可能会设置为在将future 某个日期过期。为确保您的 Greengrass 应用程序继续运行,请跟踪密码何时过期,并在密码过期之前进行更新。您也可以将用户的密码设置为永不过期。

    • 要检查用户及其密码何时过期,请运行以下命令。

      net user ggc_user | findstr /C:expires
    • 要将用户的密码设置为永不过期,请运行以下命令。

      wmic UserAccount where "Name='ggc_user'" set PasswordExpires=False
  5. 从微软下载并在设备上安装该PsExec实用程序

  6. 使用该 PsExec 实用程序将默认用户的用户名和密码存储在该 LocalSystem 账户的凭据管理器实例中。用您之前设置的用户密码替换密码。

    psexec -s cmd /c cmdkey /generic:ggc_user /user:ggc_user /pass:password

    如果PsExec License Agreement打开,Accept请选择同意许可证并运行命令。

    注意

    在 Windows 设备上,该 LocalSystem 帐户运行 Greengrass 核心,您必须使用该 PsExec 实用程序在 LocalSystem 帐户中存储默认用户信息。使用凭据管理器应用程序将此信息存储在当前登录用户的 Windows 帐户中,而不是 LocalSystem 帐户中。

下载Amazon IoT Greengrass核心软件

您可以从以下位置下载Amazon IoT Greengrass Core 软件的最新版本:

注意

您可以从以下位置下载特定版本的Amazon IoT Greengrass Core 软件。将版本替换为要下载的版本。

https://d2s8p88vqu9w66.cloudfront.net/releases/greengrass-version.zip
下载Amazon IoT Greengrass核心软件
  1. 在您的核心设备上,将Amazon IoT Greengrass Core 软件下载到名为的文件中greengrass-nucleus-latest.zip

    Linux or Unix
    curl -s https://d2s8p88vqu9w66.cloudfront.net/releases/greengrass-nucleus-latest.zip > greengrass-nucleus-latest.zip
    Windows Command Prompt (CMD)
    curl -s https://d2s8p88vqu9w66.cloudfront.net/releases/greengrass-nucleus-latest.zip > greengrass-nucleus-latest.zip
    PowerShell
    iwr -Uri https://d2s8p88vqu9w66.cloudfront.net/releases/greengrass-nucleus-latest.zip -OutFile greengrass-nucleus-latest.zip

    下载此软件即表示您同意 Greengrass 核心软件许可协议

  2. 将Amazon IoT Greengrass Core 软件解压缩到设备上的文件夹。GreengrassInstaller替换为要使用的文件夹。

    Linux or Unix
    unzip greengrass-nucleus-latest.zip -d GreengrassInstaller && rm greengrass-nucleus-latest.zip
    Windows Command Prompt (CMD)
    mkdir GreengrassInstaller && tar -xf greengrass-nucleus-latest.zip -C GreengrassInstaller && del greengrass-nucleus-latest.zip
    PowerShell
    Expand-Archive -Path greengrass-nucleus-latest.zip -DestinationPath .\GreengrassInstaller rm greengrass-nucleus-latest.zip
  3. (可选)运行以下命令以查看Amazon IoT Greengrass Core 软件的版本。

    java -jar ./GreengrassInstaller/lib/Greengrass.jar --version
重要

如果您安装的版本早于 v2.4.0 的 Greengrass nucleus,请勿在安装Amazon IoT Greengrass Core 软件后删除此文件夹。Amazon IoT GreengrassCore 软件使用此文件夹中的文件来运行。

如果您下载了最新版本的软件,则安装了 v2.4.0 或更高版本,并且可以在安装Amazon IoT Greengrass Core 软件后删除此文件夹。

安装 Amazon IoT Greengrass Core 软件

使用指定以下操作的参数运行安装程序:

  • 从指定使用自定义配置插件预置Amazon资源的部分配置文件进行安装。Amazon IoT GreengrassCore 软件使用配置文件来指定设备上每个 Greengrass 组件的配置。安装程序根据您提供的部分配置文件和自定义配置插件创建的Amazon资源创建完整的配置文件。

  • 指定使用ggc_user系统用户在核心设备上运行软件组件。在 Linux 设备上,此命令还指定使用ggc_group系统组,安装程序会为您创建系统用户和组。

  • 将Amazon IoT Greengrass Core 软件设置为在启动时运行的系统服务。在 Linux 设备上,这需要 Systemd 初始化系统。

    重要

    在 Windows 核心设备上,必须将Amazon IoT Greengrass核心软件设置为系统服务。

有关您可以指定的参数的更多信息,请参阅安装程序参数

注意

如果您在内存有限的设备Amazon IoT Greengrass上运行,则可以控制Amazon IoT Greengrass Core 软件使用的内存量。要控制内存分配,可以在 nucleus 组件的jvmOptions配置参数中设置 JVM 堆大小选项。有关更多信息,请参阅使用 JVM 选项控制内存分配

安装Amazon IoT Greengrass核心软件 (Linux)
  1. 检查Amazon IoT Greengrass核心软件的版本。

    • GreengrassInstaller替换为包含该软件的路径。

    java -jar ./GreengrassInstaller/lib/Greengrass.jar --version
  2. 使用文本编辑器创建名为的配置文件config.yaml,提供给安装程序。

    例如,在基于 Linux 的系统上,您可以运行以下命令来使用 GNU nano 创建文件。

    nano GreengrassInstaller/config.yaml

    将以下 YAML 内容复制到该文件中。

    --- system: rootpath: "/greengrass/v2" # The following values are optional. Return them from the provisioning plugin or set them here. # certificateFilePath: "" # privateKeyPath: "" # rootCaPath: "" # thingName: "" services: aws.greengrass.Nucleus: version: "2.9.4" configuration: # The following values are optional. Return them from the provisioning plugin or set them here. # awsRegion: "" # iotRoleAlias: "" # iotDataEndpoint: "" # iotCredEndpoint: "" com.example.CustomProvisioning: configuration: # You can specify configuration parameters to provide to your plugin. # pluginParameter: ""

    然后,执行以下操作:

    • 2.9.4 替换为Amazon IoT Greengrass核心软件版本。

    • Greengrass/v2 的每个实例替换 Greengrass 根文件夹。

    • (可选)指定系统和核心配置值。如果您的配置插件不提供这些值,则必须设置这些值。

    • (可选)指定要提供给您的配置插件的配置参数。

    注意

    在此配置文件中,您可以自定义其他配置选项,例如要使用的端口和网络代理,如以下示例所示。有关更多信息,请参阅 Greengrass ss 核心配置

    --- system: rootpath: "/greengrass/v2" # The following values are optional. Return them from the provisioning plugin or set them here. # certificateFilePath: "" # privateKeyPath: "" # rootCaPath: "" # thingName: "" services: aws.greengrass.Nucleus: version: "2.9.4" configuration: mqtt: port: 443 greengrassDataPlanePort: 443 networkProxy: noProxyAddresses: "http://192.168.0.1,www.example.com" proxy: url: "http://my-proxy-server:1100" username: "Mary_Major" password: "pass@word1357" # The following values are optional. Return them from the provisioning plugin or set them here. # awsRegion: "" # iotRoleAlias: "" # iotDataEndpoint: "" # iotCredEndpoint: "" com.example.CustomProvisioning: configuration: # You can specify configuration parameters to provide to your plugin. # pluginParameter: ""
  3. 运行安装程序。指定--trusted-plugin提供您的自定义配置插件,--init-config并指定提供配置文件。

    • Greengrass/v2C:\greengrass\v2 替换 Greengrass 根文件夹。

    • 将的GreengrassInstaller每个实例替换为解压缩安装程序所在的文件夹。

    • 将自定义配置插件 JAR 文件的路径替换为插件的 JAR 文件的路径。

    Linux or Unix
    sudo -E java -Droot="/greengrass/v2" -Dlog.store=FILE \ -jar ./GreengrassInstaller/lib/Greengrass.jar \ --trusted-plugin /path/to/com.example.CustomProvisioning.jar \ --init-config ./GreengrassInstaller/config.yaml \ --component-default-user ggc_user:ggc_group \ --setup-system-service true
    Windows Command Prompt (CMD)
    java -Droot="C:\greengrass\v2" "-Dlog.store=FILE" ^ -jar ./GreengrassInstaller/lib/Greengrass.jar ^ --trusted-plugin /path/to/com.example.CustomProvisioning.jar ^ --init-config ./GreengrassInstaller/config.yaml ^ --component-default-user ggc_user ^ --setup-system-service true
    PowerShell
    java -Droot="C:\greengrass\v2" "-Dlog.store=FILE" ` -jar ./GreengrassInstaller/lib/Greengrass.jar ` --trusted-plugin /path/to/com.example.CustomProvisioning.jar ` --init-config ./GreengrassInstaller/config.yaml ` --component-default-user ggc_user ` --setup-system-service true
    重要

    在 Windows 核心设备上--setup-system-service true,必须指定将Amazon IoT Greengrass核心软件设置为系统服务。

    如果您指定--setup-system-service true,则安装程序Successfully set up Nucleus as a system service是否将软件设置并作为系统服务运行。否则,如果安装程序成功安装软件,则不会输出任何消息。

    注意

    在没有deploy-dev-tools参数的情况下运行安装程序时,不能使用--provision true参数来部署本地开发工具。有关直接在您的设备上部署 Greengrass CLI 的信息,请参阅Greengrass Command Line Interface

  4. 通过查看根文件夹中的文件来验证安装。

    Linux or Unix
    ls /greengrass/v2
    Windows Command Prompt (CMD)
    dir C:\greengrass\v2
    PowerShell
    ls C:\greengrass\v2

    如果安装成功,则根文件夹包含多个文件夹,例如configpackages、和logs

如果您将Amazon IoT Greengrass核心软件作为系统服务安装,则安装程序会为您运行该软件。否则,您必须手动运行该软件。有关更多信息,请参阅运行Amazon IoT GreengrassCore 软件

有关如何配置和使用该软件的更多信息Amazon IoT Greengrass,请参阅以下内容: