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

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

安装带有自定义资源配置的 C Amazon IoT Greengrass ore 软件

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

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

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

重要

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

先决条件

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

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

设置设备环境

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

设置 Linux 设备

设置 Linux 设备用于 Amazon IoT Greengrass V2
  1. 安装 Java 运行时,Amazon IoT Greengrass核心软件需要运行该运行时。我们建议您使用 Amazon Cor retto OpenJDK 长期支持版本。需要版本 8 或更高版本。以下命令向您展示了如何在您的设备上安装 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
    • 对于亚马逊 Linux 2023:

      sudo dnf install java-11-amazon-corretto -y

    安装完成后,运行以下命令以验证 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,并且必须启用并挂载内存和设备 cgroups。如果您不打算运行容器化 Lambda 函数,则可以跳过此步骤。

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

    cgroup_enable=memory cgroup_memory=1 systemd.unified_cgroup_hierarchy=0

    有关查看和设置设备内核参数的信息,请参阅操作系统和启动加载程序的文档。按照说明永久设置内核参数。

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

设置 Windows 设备

要将 Windows 设备设置为 Amazon IoT Greengrass V2
  1. 安装 Java 运行时,Amazon IoT Greengrass核心软件需要运行该运行时。我们建议您使用 Amazon Cor retto OpenJDK 长期支持版本。需要版本 8 或更高版本。

  2. 检查 PATH 系统变量上是否有 Java 可用,如果没有,请添加它。该 LocalSystem 帐户运行 Amazon IoT Greengrass Core 软件,因此您必须将 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. 如果路径中缺少 Java 安装bin的文件夹,请选择 “新建” 将其添加,然后选择 “确定”

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

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

    net user /add ggc_user password
    提示

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

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

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

      wmic UserAccount where "Name='ggc_user'" set PasswordExpires=False
    • 如果你使用的是已弃用该wmic命令的 Windows 10 或更高版本,请运行以下 PowerShell 命令。

      Get-CimInstance -Query "SELECT * from Win32_UserAccount WHERE name = 'ggc_user'" | Set-CimInstance -Property @{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 Core 软件许可协议

  2. (可选)验证 Greengrass nucleus 软件签名

    注意

    此功能在 Greengrass nucleus 版本 2.9.5 及更高版本中可用。

    1. 使用以下命令验证你的 Greengrass 核工件的签名:

      Linux or Unix
      jarsigner -verify -certs -verbose greengrass-nucleus-latest.zip
      Windows Command Prompt (CMD)

      根据您安装的 JDK 版本,文件名可能有所不同。jdk17.0.6_10替换为您安装的 JDK 版本。

      "C:\\Program Files\\Amazon Corretto\\jdk17.0.6_10\\bin\\jarsigner.exe" -verify -certs -verbose greengrass-nucleus-latest.zip
      PowerShell

      根据您安装的 JDK 版本,文件名可能有所不同。jdk17.0.6_10替换为您安装的 JDK 版本。

      'C:\\Program Files\\Amazon Corretto\\jdk17.0.6_10\\bin\\jarsigner.exe' -verify -certs -verbose greengrass-nucleus-latest.zip
    2. jarsigner调用会产生指示验证结果的输出。

      1. 如果 Greengrass nucleus zip 文件已签名,则输出将包含以下语句:

        jar verified.
      2. 如果 Greengrass nucleus zip 文件未签名,则输出将包含以下语句:

        jar is unsigned.
    3. 如果您提供了 Jarsigner -certs 选项以及-verify-verbose选项,则输出还包括详细的签名者证书信息。

  3. 将 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
  4. (可选)运行以下命令以查看 Amazon IoT Greengrass Core 软件的版本。

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

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

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

安装 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酷睿软件使用的内存量。要控制内存分配,您可以在 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.12.0" 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.12.0 替换为Amazon IoT Greengrass核心软件版本。

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

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

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

    注意

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

    --- 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.12.0" 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 根文件夹替换/greengrass/v2C:\greengrass\v2

    • 将的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 命令行界面

  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 Core 软件作为系统服务安装,则安装程序会为您运行该软件。否则,必须手动运行该软件。有关更多信息,请参阅 运行Amazon IoT Greengrass核心软件

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