本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用自定义资源配置安装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
-
安装 Java 运行时,Amazon IoT Greengrass核心软件需要使用该运行库。我们建议你使用亚马逊 Corretto 11
或 OpenJDK 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)
-
-
(可选)创建在设备上运行组件的默认系统用户和组。您也可以选择让Amazon IoT Greengrass核心软件安装程序在安装期间使用安装程序参数创建此用户和组。
--component-default-user
有关更多信息,请参阅安装程序参数:sudo useradd --system --create-home ggc_user sudo groupadd --system ggc_group
-
验证运行Amazon IoT Greengrass Core 软件的用户(通常
root
)是否有权sudo
与任何用户和任何组一起运行。-
运行以下命令以打开此
/etc/sudoers
文件。sudo visudo
-
确认用户的权限如以下示例所示。
root ALL=(ALL:ALL) ALL
-
-
(可选)要运行容器化的 Lambda 函数,必须启用 c
groups v1,并且必须启用和装载内存和设备 cgroup。如果您不打算运行容器化的 Lambda 函数,则可跳过此步骤。 要启用这些 cgroups 选项,请使用以下 Linux 内核参数启动设备。
cgroup_enable=memory cgroup_memory=1 systemd.unified_cgroup_hierarchy=0
有关查看和设置设备内核参数的更多信息,请参阅您的操作系统的文档。按照说明永久设置内核参数。
提示:在 Raspberry Pi 上设置内核参数
如果您的设备是 Raspberry Pi,则可以完成以下步骤来查看和更新其 Linux 内核参数:
-
打开
/boot/cmdline.txt
文件。此文件指定树莓派启动时要应用的 Linux 内核参数。例如,在基于 Linux 的系统上,您可以运行以下命令使用 GNU nano 打开文件。
sudo nano /boot/cmdline.txt
-
确认该
/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
文件不包含这些参数,或者它包含这些具有不同值的参数,请更新文件以包含这些参数和值。 -
如果您更新了
/boot/cmdline.txt
文件,请重新启动 Raspberry Pi 以应用更改。sudo reboot
-
-
按照中的要求列表所示,在您的设备上安装所有其他必需的依赖项设备要求。
注意
此功能适用于 Greengrass nucleus 组件的 v2.5.0 及更高版本。
将 Windows 设备设置为Amazon IoT Greengrass V2
-
安装 Java 运行时,Amazon IoT Greengrass核心软件需要使用该运行库。我们建议你使用亚马逊 Corretto 11
或 OpenJDK 11 。 -
检查 PATH
系统变量上是否有 Java,如果不可用,则添加它。该 LocalSystem 帐户运行Amazon IoT Greengrass核心软件,因此您必须将 Java 添加到 PATH 系统变量中,而不是用户的 PATH 用户变量。执行以下操作: -
按 Windows 键打开开始菜单。
-
environment variables
在开始菜单中键入搜索系统选项。 -
在开始菜单搜索结果中,选择编辑系统环境变量以打开系统属性窗口。
-
选择环境变量... 打开 “环境变量” 窗口。
-
在 “系统变量” 下,选择 “路径”,然后选择 “编辑”。在 “编辑环境变量” 窗口中,可以在单独的行上查看每条路径。
-
检查 Java 安装
bin
文件夹的路径是否存在。该路径可能类似于以下示例。C:\Program Files\Amazon Corretto\jdk11.0.13_8\bin
-
如果 Path 中缺少 Java 安装
bin
文件夹,请选择 “新建” 进行添加,然后选择 “确定”。
-
-
以管理员身份打开 Windows 命令提示符 (
cmd.exe
)。 -
在 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
-
-
从微软下载并在设备上安装该PsExec实用程序
。 -
使用该 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核心软件
-
在您的核心设备上,将Amazon IoT Greengrass Core 软件下载到名为的文件中
greengrass-nucleus-latest.zip
。下载此软件即表示您同意 Greengrass 核心软件许可协议
。 -
将Amazon IoT Greengrass Core 软件解压缩到设备上的文件夹。
GreengrassInstaller
替换为要使用的文件夹。 -
(可选)运行以下命令以查看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)
-
检查Amazon IoT Greengrass核心软件的版本。
-
GreengrassInstaller
替换为包含该软件的路径。
java -jar ./
GreengrassInstaller
/lib/Greengrass.jar --version -
-
使用文本编辑器创建名为的配置文件
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: "" -
-
运行安装程序。指定
--trusted-plugin
提供您的自定义配置插件,--init-config
并指定提供配置文件。-
用
Greengrass/v2
或C:\greengrass\v2
替换 Greengrass 根文件夹。 -
将的
GreengrassInstaller
每个实例替换为解压缩安装程序所在的文件夹。 -
将自定义配置插件 JAR 文件的路径替换为插件的 JAR 文件的路径。
重要
在 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。 -
-
通过查看根文件夹中的文件来验证安装。
如果安装成功,则根文件夹包含多个文件夹,例如
config
packages
、和logs
。
如果您将Amazon IoT Greengrass核心软件作为系统服务安装,则安装程序会为您运行该软件。否则,您必须手动运行该软件。有关更多信息,请参阅运行Amazon IoT GreengrassCore 软件:
有关如何配置和使用该软件的更多信息Amazon IoT Greengrass,请参阅以下内容: