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

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

安装具有自动资源配置功能的 Amazon IoT Greengrass Core 软件

Amazon IoT Greengrass 核心软件包括一个安装程序,可将您的设备设置为 Greengrass 核心设备。要快速设置设备,安装程序可以配置核心设备运行所需 Amazon IoT 的事物、事物组、 Amazon IoT 角色和角色别名。 Amazon IoT IAM安装程序还可以将本地开发工具部署到核心设备,因此您可以使用该设备开发和测试自定义软件组件。安装程序需要 Amazon 凭据才能配置这些资源和创建部署。

如果您无法向设备提供 Amazon 凭据,则可以配置核心设备运行所需的 Amazon 资源。您还可以将开发工具部署到核心设备上,用作开发设备。这使您能够在运行安装程序时向设备提供较少的权限。有关更多信息,请参阅 使用手动资源配置来安装 Amazon IoT Greengrass Core 软件

重要

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

设置设备环境

按照本节中的步骤,将 Linux 或 Windows 设备设置为您的 Amazon IoT Greengrass 核心设备。

设置 Linux 设备

设置 Linux 设备用于 Amazon IoT Greengrass V2
  1. 安装 Java 运行时, Amazon IoT Greengrass 核心软件需要运行该运行时。我们建议您使用 Amazon Corrett o 或JDK开放长期支持版本。需要版本 8 或更高版本。以下命令向您展示了如何在设备JDK上安装 Open。

    • 对于基于 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
    • 对于 Amazon 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 函数,必须启用 cgroups v1,且必须启用并装载内存设备 cgroups。如果您不打算运行容器化 Lambda 函数,则可跳过此步骤。

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

    cgroup_enable=memory cgroup_memory=1 systemd.unified_cgroup_hierarchy=0

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

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

设置 Windows 设备

注意

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

要将 Windows 设备设置为 Amazon IoT Greengrass V2
  1. 安装 Java 运行时, Amazon IoT Greengrass 核心软件需要运行该运行时。我们建议您使用 Amazon Corrett o 或JDK开放长期支持版本。需要版本 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 帐户中创建默认用户。password替换为安全密码。

    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 账户的凭据管理器实例中。password替换为您之前设置的用户密码。

    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 凭证

向设备提供您的 Amazon 凭据,以便安装程序可以配置所需的 Amazon 资源。有关所需权限的更多信息,请参阅 安装程序配置资源的最低 IAM 策略

为设备提供 Amazon 凭证
  • 向设备提供您的 Amazon 凭据,以便安装程序可以为您的核心设备配置 Amazon IoT 和IAM资源。为了提高安全性,我们建议您为仅允许配置所需的最低权限的IAM角色获取临时证书。有关更多信息,请参阅 安装程序配置资源的最低 IAM 策略

    注意

    安装程序不会保存或存储您的凭证。

    在您的设备上,执行以下任一操作以检索凭证并将其提供给 Amazon IoT Greengrass Core 软件安装程序:

    • (推荐)使用来自的临时证书 Amazon IAM Identity Center

      1. 提供IAM身份中心的访问密钥 ID、私有访问密钥和会话令牌。有关更多信息,请参阅 Id ent IAMity Center 用户指南获取和刷新临时证书中的手动刷新凭证。

      2. 运行以下命令为 Amazon IoT Greengrass 核心软件提供凭据。

        Linux or Unix
        export AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY export AWS_SESSION_TOKEN=AQoDYXdzEJr1K...o5OytwEXAMPLE=
        Windows Command Prompt (CMD)
        set AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE set AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY set AWS_SESSION_TOKEN=AQoDYXdzEJr1K...o5OytwEXAMPLE=
        PowerShell
        $env:AWS_ACCESS_KEY_ID="AKIAIOSFODNN7EXAMPLE" $env:AWS_SECRET_ACCESS_KEY="wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY" $env:AWS_SESSION_TOKEN="AQoDYXdzEJr1K...o5OytwEXAMPLE="
    • 使用来自IAM角色的临时安全证书:

      1. 提供您扮演的IAM角色的访问密钥 ID、私有访问密钥和会话令牌。有关如何检索这些证书的更多信息,请参阅IAM用户指南中的申请临时安全证书

      2. 运行以下命令为 Amazon IoT Greengrass 核心软件提供凭据。

        Linux or Unix
        export AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY export AWS_SESSION_TOKEN=AQoDYXdzEJr1K...o5OytwEXAMPLE=
        Windows Command Prompt (CMD)
        set AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE set AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY set AWS_SESSION_TOKEN=AQoDYXdzEJr1K...o5OytwEXAMPLE=
        PowerShell
        $env:AWS_ACCESS_KEY_ID="AKIAIOSFODNN7EXAMPLE" $env:AWS_SECRET_ACCESS_KEY="wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY" $env:AWS_SESSION_TOKEN="AQoDYXdzEJr1K...o5OytwEXAMPLE="
    • 使用IAM用户的长期证书:

      1. 为您的IAM用户提供访问密钥 ID 和私有访问密钥。您可以为置备创建IAM用户,稍后再将其删除。有关向用户提供的IAM策略,请参阅安装程序配置资源的最低 IAM 策略。有关如何检索长期证书的更多信息,请参阅用户指南中的管理IAM用户访问密钥。IAM

      2. 运行以下命令为 Amazon IoT Greengrass 核心软件提供凭据。

        Linux or Unix
        export AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
        Windows Command Prompt (CMD)
        set AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE set AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
        PowerShell
        $env:AWS_ACCESS_KEY_ID="AKIAIOSFODNN7EXAMPLE" $env:AWS_SECRET_ACCESS_KEY="wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY"
      3. (可选)如果您创建了一个IAM用户来配置您的 Greengrass 设备,请删除该用户。

      4. (可选)如果您使用了现有IAM用户的访问密钥 ID 和私有访问密钥,请更新该用户的密钥,使其不再有效。有关更多信息,请参阅《Amazon Identity and Access Management 用户指南》中的更新访问密钥

下载 Amazon IoT Greengrass 核心软件

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

注意

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

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 Nucleus 构件的签名:

      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 Greengrass C Amazon IoT Greengrass ore 软件使用此文件夹中的文件运行。

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

安装 Amazon IoT Greengrass 核心软件

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

  • 创建核心设备运行所需的 Amazon 资源。

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

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

    重要

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

要使用本地开发工具设置开发设备,请指定 --deploy-dev-tools true 参数。安装完成后,部署本地开发工具可能需要一分钟时间。

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

注意

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

安装 Amazon IoT Greengrass 核心软件
  1. 运行 Amazon IoT Greengrass 核心安装程序。如下所示替换命令中的参数值。

    注意

    Windows 的路径长度限制为 260 个字符。如果您使用的是 Windows,请使用 C:\greengrass\v2D:\greengrass\v2 等根文件夹,将 Greengrass 组件的路径保持在 260 个字符的限制以下。

    1. /greengrass/v2C:\greengrass\v2:用于安装 C Amazon IoT Greengrass ore 软件的根文件夹的路径。

    2. GreengrassInstaller。 您解压缩 Amazon IoT Greengrass 核心软件安装程序的文件夹的路径。

    3. region。 Amazon Web Services 区域 在其中查找或创建资源。

    4. MyGreengrassCore。 你的 Green Amazon IoT grass 核心设备的名称。如果该事物不存在,安装程序会进行创建。安装程序下载证书以进行身份 Amazon IoT 验证。有关更多信息,请参阅 Amazon IoT Greengrass 的设备身份验证和授权

      注意

      事物名称不得包含英文冒号 (:) 字符。

    5. MyGreengrassCoreGroup。 你的 Greengrass 核心设备 Amazon IoT 的事物组名称。如果该事物组不存在,安装程序会进行创建并向其中添加事物。如果事物组存在且有活动的部署,则核心设备将下载并运行部署指定的软件。

      注意

      事物组名称不得包含英文冒号 (:) 字符。

    6. GreengrassV2IoTThingPolicy。 允许 Greengrass 核心设备与和通信的 Amazon IoT 策略名称。 Amazon IoT Amazon IoT Greengrass如果该 Amazon IoT 策略不存在,则安装程序会使用此名称创建允许 Amazon IoT 策略。您可以根据自己的使用案例限制此策略的权限。有关更多信息,请参阅 Amazon IoT Greengrass V2 核心设备的最低 Amazon IoT 策略

    7. GreengrassV2TokenExchangeRole。 允许 Greengrass 核心设备获取临时证书的IAM角色名称。 Amazon 如果该角色不存在,则安装程序会创建该角色并附加名为 GreengrassV2TokenExchangeRoleAccess 的策略。有关更多信息,请参阅 授权核心设备与 Amazon 服务交互

    8. GreengrassCoreTokenExchangeRoleAlias。 该IAM角色的别名,允许 Greengrass 核心设备稍后获得临时证书。如果角色别名不存在,则安装程序会创建该别名并将其指向您指定的IAM角色。有关更多信息,请参阅 授权核心设备与 Amazon 服务交互

    Linux or Unix
    sudo -E java -Droot="/greengrass/v2" -Dlog.store=FILE \ -jar ./GreengrassInstaller/lib/Greengrass.jar \ --aws-region region \ --thing-name MyGreengrassCore \ --thing-group-name MyGreengrassCoreGroup \ --thing-policy-name GreengrassV2IoTThingPolicy \ --tes-role-name GreengrassV2TokenExchangeRole \ --tes-role-alias-name GreengrassCoreTokenExchangeRoleAlias \ --component-default-user ggc_user:ggc_group \ --provision true \ --setup-system-service true
    Windows Command Prompt (CMD)
    java -Droot="C:\greengrass\v2" "-Dlog.store=FILE" ^ -jar ./GreengrassInstaller/lib/Greengrass.jar ^ --aws-region region ^ --thing-name MyGreengrassCore ^ --thing-group-name MyGreengrassCoreGroup ^ --thing-policy-name GreengrassV2IoTThingPolicy ^ --tes-role-name GreengrassV2TokenExchangeRole ^ --tes-role-alias-name GreengrassCoreTokenExchangeRoleAlias ^ --component-default-user ggc_user ^ --provision true ^ --setup-system-service true
    PowerShell
    java -Droot="C:\greengrass\v2" "-Dlog.store=FILE" ` -jar ./GreengrassInstaller/lib/Greengrass.jar ` --aws-region region ` --thing-name MyGreengrassCore ` --thing-group-name MyGreengrassCoreGroup ` --thing-policy-name GreengrassV2IoTThingPolicy ` --tes-role-name GreengrassV2TokenExchangeRole ` --tes-role-alias-name GreengrassCoreTokenExchangeRoleAlias ` --component-default-user ggc_user ` --provision true ` --setup-system-service true
    重要

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

    如果成功,安装程序会打印以下消息:

    • 如果您指定 --provision,则安装程序将在成功配置资源后打印 Successfully configured Nucleus with provisioned resource details

    • 如果您指定 --deploy-dev-tools,则安装程序将在成功创建部署后打印 Configured Nucleus to deploy aws.greengrass.Cli component

    • 如果您指定 --setup-system-service true,则安装程序会在将软件设置为服务并运行后打印 Successfully set up Nucleus as a system service

    • 如果您未指定 --setup-system-service true,则安装程序会在成功安装并运行软件后打印 Launched Nucleus successfully

  2. 如果您安装了 Greengrass Nucleus v2.0.4 或更高版本,请跳过此步骤。如果您下载的是最新版本的软件,则说明您安装了 v2.0.4 或更高版本。

    运行以下命令为 Amazon IoT Greengrass 核心软件根文件夹设置所需的文件权限。/greengrass/v2替换为您在安装命令中指定的根文件夹,并/greengrass替换为根文件夹的父文件夹。

    sudo chmod 755 /greengrass/v2 && sudo chmod 755 /greengrass

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

注意

默认情况下,安装程序创建的IAM角色不允许访问 S3 存储桶中的组件项目。要在 Amazon S3 中部署可定义构件的自定义组件,您必须为该角色添加权限以允许核心设备检索组件构件。有关更多信息,请参阅 允许访问 S3 存储桶中的组件构件

如果您还没有适用于组件构件的 S3 存储桶,则可以在创建存储桶后添加这些权限。

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