

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

# 安装具有 Amazon IoT 队列配置功能的 C Amazon IoT Greengrass ore 软件
<a name="fleet-provisioning"></a>

此功能适用于 [Greengrass Nucleus 组件](greengrass-nucleus-component.md)的 v2.4.0 及更高版本。

借助 Amazon IoT 队列配置，您可以配置 Amazon IoT 为在设备首次连接时生成 X.509 设备证书和私钥并将其安全地交付 Amazon IoT 给设备。 Amazon IoT 提供由 Amazon 根证书颁发机构 (CA) 签署的客户证书。您还可以进行配置， Amazon IoT 为使用队列配置配置的 Greengrass 核心设备指定事物组、事物类型和权限。您可以定义*配置模板*来定义如何配置 Amazon IoT 每台设备。预置模板指定在预置时要为设备创建的事物、策略和证书资源。有关更多信息，请参阅《Amazon IoT Core 开发人员指南》中的[预置模板](https://docs.amazonaws.cn/iot/latest/developerguide/provision-template.html)。**

Amazon IoT Greengrass 提供了一个 Amazon IoT 队列配置插件，您可以使用该插件使用 Amazon IoT 队列配置创建的 Amazon 资源来安装 Amazon IoT Greengrass 核心软件。实例集预置插件使用*通过声明进行预置*。设备使用预置声明证书和私钥来获取可用于常规操作的唯一 X.509 设备证书和私钥。在制造过程中，您可以将声明证书和私钥嵌入每台设备，这样您的客户便可以在每台设备联机后激活设备。您可以为多台设备使用相同的声明证书和私钥。有关更多信息，请参阅《Amazon IoT Core 开发人员指南》中的[通过声明进行预置](https://docs.amazonaws.cn/iot/latest/developerguide/provision-wo-cert.html#claim-based)。**

**注意**  
[Greengrass](greengrass-nucleus-component.md) nucleus 的舰队配置插件目前不支持在硬件安全模块 (HSM) 中存储私钥和证书文件。要使用带有 [Greengrass nucleus 的 HSM，请使用手动配置](greengrass-nucleus-component.md)来安装 Core [软件](manual-installation.md)。 Amazon IoT Greengrass [Greengrass nucleus](greengrass-nucleus-lite-component.md) lite v2.5.0 及更高版本支持 TPM，原生提供舰队配置。

要安装具有 Amazon IoT 队列配置功能的 Amazon IoT Greengrass Core 软件，您必须在中设置用于配置 Gre Amazon IoT engrass 核心设备的资源。 Amazon Web Services 账户 这些资源包括预置模板、声明证书和[令牌交换 IAM 角色](device-service-role.md)。创建这些资源后，您可以重复使用资源来预置实例集中的多个核心设备。有关更多信息，请参阅 [为 Greengrass 核心 Amazon IoT 设备设置队列配置](fleet-provisioning-setup.md)。

**重要**  <a name="install-greengrass-core-requirements-note"></a>
在下载 Amazon IoT Greengrass 酷睿软件之前，请检查您的核心设备是否满足安装和运行 Amazon IoT Greengrass 酷睿软件 v2.0 的[要求](greengrass-nucleus-component.md#greengrass-v2-requirements)。

**Topics**
+ [先决条件](#fleet-provisioning-prerequisites)
+ [检索 Amazon IoT 端点](#retrieve-iot-endpoints)
+ [将证书下载到设备](#download-claim-certificates)
+ [设置设备环境](#set-up-device-environment)
+ [下载 Amazon IoT Greengrass 核心软件](#download-greengrass-core-v2)
+ [下载 Amazon IoT 舰队配置插件](#download-fleet-provisioning-plugin)
+ [安装 Amazon IoT Greengrass 核心软件](#run-greengrass-core-v2-installer-fleet)
+ [为 Greengrass 核心 Amazon IoT 设备设置队列配置](fleet-provisioning-setup.md)
+ [配置 Amazon IoT 舰队配置插件](fleet-provisioning-configuration.md)
+ [Amazon IoT 实例集预置插件更改日志](fleet-provisioning-changelog.md)

## 先决条件
<a name="fleet-provisioning-prerequisites"></a>

要安装具有 Amazon IoT 队列配置功能的 Amazon IoT Greengrass Core 软件，必须先[为 Greengrass 核心 Amazon IoT 设备设置队列配置](fleet-provisioning-setup.md)。完成这些步骤后，您可以使用队列配置在任意数量的设备上安装 Amazon IoT Greengrass 核心软件。

## 检索 Amazon IoT 端点
<a name="retrieve-iot-endpoints"></a>

获取您的终 Amazon IoT 端节点 Amazon Web Services 账户，然后将其保存以备后用。您的设备使用这些端点来连接 Amazon IoT。执行以下操作：

1. 获取您的 Amazon IoT 数据端点 Amazon Web Services 账户。

   ```
   aws iot describe-endpoint --endpoint-type iot:Data-ATS
   ```

   如果请求成功，响应类似如下示例。

   ```
   {
     "endpointAddress": "{{device-data-prefix}}-ats.iot.us-west-2.amazonaws.com"
   }
   ```

1. 获取您的 Amazon IoT 凭证终端节点 Amazon Web Services 账户。

   ```
   aws iot describe-endpoint --endpoint-type iot:CredentialProvider
   ```

   如果请求成功，响应类似如下示例。

   ```
   {
     "endpointAddress": "{{device-credentials-prefix}}.credentials.iot.us-west-2.amazonaws.com"
   }
   ```

## 将证书下载到设备
<a name="download-claim-certificates"></a>

设备使用索赔证书和私钥来验证其 Amazon 调配资源和获取 X.509 设备证书的请求。您可以在制造过程中将声明证书和私钥嵌入设备中，也可以在安装过程中将证书和密钥复制到设备。在本节中，您需将声明证书和私有密钥复制到设备。您还需将 Amazon 根证书颁发机构（CA）证书下载到设备。

**重要**  <a name="installation-fleet-provisioning-secure-claim-private-keys"></a>
预置声明私钥应始终得到保护，包括在 Greengrass 核心设备上时。我们建议您使用 Amazon CloudWatch 指标和日志来监控是否存在滥用迹象，例如未经授权使用索赔证书来配置设备。如果您检测到滥用，请禁用预置声明证书，以使其不能用于设备预置。有关更多信息，请参阅 *Amazon IoT Core 开发人员指南* 中的 [监控 Amazon IoT](https://docs.amazonaws.cn/iot/latest/developerguide/monitoring_overview.html)。  
为了帮助您更好地管理自己在您的设备中注册的设备数量和设备 Amazon Web Services 账户，您可以在创建队列配置模板时指定预配置挂钩。预配置挂钩是一种验证设备在注册期间提供的模板参数的 Amazon Lambda 功能。例如，您可以创建一个预置前钩子，根据数据库检查设备 ID，以验证设备是否有权进行预置。有关更多信息，请参阅《Amazon IoT Core 开发人员指南》中的[预置前钩子](https://docs.amazonaws.cn/iot/latest/developerguide/pre-provisioning-hook.html)。**

**将声明证书下载到设备**

1. 将声明证书和私钥复制到设备。如果在开发计算机和设备上启用了 SSH 和 SCP，则可以在开发计算机上使用 `scp` 命令传输声明证书和私钥。以下示例命令会将开发计算机上名为 `claim-certs` 的文件夹中的这些文件传输到设备。{{device-ip-address}}替换为设备的 IP 地址。

   ```
   scp -r claim-certs/ {{device-ip-address}}:~
   ```

1. <a name="installation-create-greengrass-root-folder"></a>在设备上创建 Greengrass 根文件夹。稍后，您将将 Amazon IoT Greengrass Core 软件安装到此文件夹。
**注意**  
Windows 的路径长度限制为 260 个字符。如果您使用的是 Windows，请使用 `C:\greengrass\v2` 或 `D:\greengrass\v2` 等根文件夹，将 Greengrass 组件的路径保持在 260 个字符的限制以下。

------
#### [ Linux or Unix ]
   + 将 `{{/greengrass/v2}}` 替换为要使用的文件夹。

   ```
   sudo mkdir -p {{/greengrass/v2}}
   ```

------
#### [ Windows Command Prompt ]
   + 将 {{C:\\greengrass\\v2}} 替换为要使用的文件夹。

   ```
   mkdir {{C:\greengrass\v2}}
   ```

------
#### [ PowerShell ]
   + 将 {{C:\\greengrass\\v2}} 替换为要使用的文件夹。

   ```
   mkdir {{C:\greengrass\v2}}
   ```

------

1. <a name="installation-set-greengrass-root-folder-permissions"></a>（仅限 Linux）设置 Greengrass 根文件夹的父文件夹的权限。
   + {{/greengrass}}替换为根文件夹的父文件夹。

   ```
   sudo chmod 755 {{/greengrass}}
   ```

1. 将声明证书移动到 Greengrass 根文件夹。
   + 用 Greengrass 根文件夹替换`{{/greengrass/v2}}`或{{C:\\greengrass\\v2}}。

------
#### [ Linux or Unix ]

   ```
   sudo mv ~/claim-certs {{/greengrass/v2}}
   ```

------
#### [ Windows Command Prompt (CMD) ]

   ```
   move %USERPROFILE%\claim-certs {{C:\greengrass\v2}}
   ```

------
#### [ PowerShell ]

   ```
   mv -Path ~\claim-certs -Destination {{C:\greengrass\v2}}
   ```

------

1. <a name="installation-download-root-ca-certificate"></a>下载 Amazon 根证书颁发机构 (CA) 证书。 Amazon IoT 默认情况下，证书与亚马逊的根 CA 证书相关联。

------
#### [ Linux or Unix ]

   ```
   sudo curl -o {{/greengrass/v2}}/AmazonRootCA1.pem https://www.amazontrust.com/repository/AmazonRootCA1.pem
   ```

------
#### [ Windows Command Prompt (CMD) ]

   ```
   curl -o {{C:\greengrass\v2}}\\AmazonRootCA1.pem https://www.amazontrust.com/repository/AmazonRootCA1.pem
   ```

------
#### [ PowerShell ]

   ```
   iwr -Uri https://www.amazontrust.com/repository/AmazonRootCA1.pem -OutFile {{C:\greengrass\v2}}\\AmazonRootCA1.pem
   ```

------

## 设置设备环境
<a name="set-up-device-environment"></a>

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

### 设置 Linux 设备
<a name="set-up-linux-device-environment"></a><a name="set-up-linux-device-environment-procedure"></a>

**设置 Linux 设备用于 Amazon IoT Greengrass V2**

1. 安装 Java 运行时， Amazon IoT Greengrass 核心软件需要运行该运行时。我们建议您使用 [Amazon Corretto](https://www.amazonaws.cn/corretto/) 或 [OpenJDK](https://openjdk.java.net/) 长期支持版本。需要版本 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
     ```
   + 对于 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)
   ```

1. （可选）创建在设备上运行组件的默认系统用户和组。您也可以选择让 Amazon IoT Greengrass 核心软件安装程序在安装过程中使用安装程序参数创建此用户和组。`--component-default-user`有关更多信息，请参阅 [安装程序参数](configure-installer.md)。

   ```
   sudo useradd --system --create-home ggc_user
   sudo groupadd --system ggc_group
   ```

1. 验证运行 Amazon IoT Greengrass Core 软件的用户（通常`root`）是否有权`sudo`与任何用户和任何组一起运行。

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

      ```
      sudo visudo
      ```

   1. 验证用户的权限是否如以下示例所示。

      ```
      root    ALL=(ALL:ALL) ALL
      ```

1. （可选）要[运行容器化 Lambda 函数](run-lambda-functions.md)，必须启用 [cgroups](https://en.wikipedia.org/wiki/Cgroups) v1，且必须启用并装载*内存*和*设备* cgroups。如果您不打算运行容器化 Lambda 函数，则可跳过此步骤。

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

   ```
   cgroup_enable=memory cgroup_memory=1 systemd.unified_cgroup_hierarchy=0
   ```

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

1. 按照 [设备要求](greengrass-nucleus-component.md#greengrass-v2-requirements) 中的要求列表所示，在您的设备上安装所有其他必需的依赖关系。

### 设置 Windows 设备
<a name="set-up-windows-device-environment"></a>

**注意**  
此功能适用于 [Greengrass Nucleus 组件](greengrass-nucleus-component.md) v2.5.0 及更高版本。<a name="set-up-windows-device-environment-procedure"></a>

**要将 Windows 设备设置为 Amazon IoT Greengrass V2**

1. 安装 Java 运行时， Amazon IoT Greengrass 核心软件需要运行该运行时。我们建议您使用 [Amazon Corretto](https://www.amazonaws.cn/corretto/) 或 [OpenJDK](https://openjdk.java.net/) 长期支持版本。需要版本 8 或更高版本。

1. 检查在 [PATH](https://en.wikipedia.org/wiki/PATH_(variable)) 系统变量上是否有 Java 可用，如果没有，请进行添加。该 LocalSystem 帐户运行 Amazon IoT Greengrass Core 软件，因此您必须将 Java 添加到 PATH 系统变量中，而不是用户的 PATH 用户变量。执行以下操作：

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

   1. 键入 **environment variables** 以从开始菜单中搜索系统选项。

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

   1. 选择**环境变量...**，打开**环境变量**窗口。

   1. 在**系统变量**下，选择**路径**，然后选择**编辑**。在**编辑环境变量**窗口中，您可以分行查看每个路径。

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

      ```
      C:\\Program Files\\Amazon Corretto\\jdk11.0.13_8\\bin
      ```

   1. 如果**路径**中缺少 Java 安装的 `bin` 文件夹，请选择**新建**，添加该文件夹，然后选择**确定**。

1. <a name="set-up-windows-device-environment-open-cmd"></a>以管理员身份打开 Windows 命令提示符 (`cmd.exe`)。

1. <a name="set-up-windows-device-environment-create"></a>在 Windows 设备上的 LocalSystem 帐户中创建默认用户。{{password}}替换为安全密码。

   ```
   net user /add ggc_user {{password}}
   ```
**提示**  <a name="windows-password-expiration-tip"></a>
根据您的 Windows 配置，用户密码可能会设置为在将来某个日期过期。为确保您的 Greengrass 应用程序继续运行，请跟踪密码过期时间，并在密码过期之前对其进行更新。您还可以将用户的密码设置为永不过期。  
要检查用户及其密码的过期时间，请运行以下命令。  

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

     ```
     wmic UserAccount where "Name='{{ggc_user}}'" set PasswordExpires=False
     ```
如果你使用的是[已弃用该`wmic`命令的](https://learn.microsoft.com/en-us/windows/win32/wmisdk/wmic) Windows 10 或更高版本，请运行以下 PowerShell 命令。  

     ```
     Get-CimInstance -Query "SELECT * from Win32_UserAccount WHERE name = '{{ggc_user}}'" | Set-CimInstance -Property @{PasswordExpires="False"}
     ```

1. <a name="set-up-windows-device-psexec"></a>从微软下载该[PsExec实用程序](https://docs.microsoft.com/en-us/sysinternals/downloads/psexec)并将其安装到设备上。

1. <a name="set-up-windows-device-credentials"></a>使用该 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 IoT Greengrass 核心软件
<a name="download-greengrass-core-v2"></a>

您可以从以下位置下载最新版本的 Amazon IoT Greengrass Core 软件：
+ [https://d2s8p88vqu9w66.cloudfront。 net/releases/greengrass](https://d2s8p88vqu9w66.cloudfront.net/releases/greengrass-nucleus-latest.zip)-nucleus-latest.zip

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

```
https://d2s8p88vqu9w66.cloudfront.net/releases/greengrass-{{version}}.zip
```

**下载 Amazon IoT Greengrass 核心软件**

1. <a name="installation-download-ggc-software-step"></a>在您的核心设备上，将 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
   ```

------

   <a name="core-software-license"></a>下载此软件即表示您同意[Greengrass Core 软件许可协议](https://greengrass-release-license.s3.us-west-2.amazonaws.com/greengrass-license-v1.pdf)。

1. <a name="verify-gg-nucleus-signature"></a>（可选）验证 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
      ```

------

   1. `jarsigner` 调用会生成输出，指示验证结果。

      1. 如果 Greengrass Nucleus ZIP 文件已签署，则输出将包含以下语句：

         ```
         jar verified.
         ```

      1. 如果 Greengrass Nucleus ZIP 文件未签署，则输出将包含以下语句：

         ```
         jar is unsigned.
         ```

   1. 如果您提供了 Jarsigner `-certs` 选项以及 `-verify` 和 `-verbose` 选项，则输出还将包含详细的签名者证书信息。

1. <a name="installation-unzip-ggc-software-step"></a>将 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
   ```

------

1. （可选）运行以下命令以查看 Amazon IoT Greengrass Core 软件的版本。

   ```
   java -jar ./{{GreengrassInstaller}}/lib/Greengrass.jar --version
   ```

**重要**  <a name="installer-folder-2.4.0-warning"></a>
如果您安装了 v2.4.0 之前的 Greengrass nucleus 版本，则在安装 Core 软件后请勿删除此文件夹。 Amazon IoT Greengrass C Amazon IoT Greengrass ore 软件使用此文件夹中的文件来运行。  
如果您下载的是最新版本的软件，则需要安装 v2.4.0 或更高版本，并且可以在安装 C Amazon IoT Greengrass ore 软件后删除此文件夹。

## 下载 Amazon IoT 舰队配置插件
<a name="download-fleet-provisioning-plugin"></a>

您可以从以下位置下载最新版本的 Amazon IoT 舰队配置插件：
+ [https://d2s8p88vqu9w66.cloudfront。 net/releases/aws-greengrass-FleetProvisioningByClaim/fleetprovisioningbyclaim](https://d2s8p88vqu9w66.cloudfront.net/releases/aws-greengrass-FleetProvisioningByClaim/fleetprovisioningbyclaim-latest.jar)-latest.jar

**注意**  
您可以从以下位置下载特定版本的 Amazon IoT 舰队配置插件。{{version}}替换为要下载的版本。有关各版本实例集预置插件的更多信息，请参阅 [Amazon IoT 实例集预置插件更改日志](fleet-provisioning-changelog.md)。  

```
https://d2s8p88vqu9w66.cloudfront.net/releases/aws-greengrass-FleetProvisioningByClaim/fleetprovisioningbyclaim-{{version}}.jar
```

实例集预置插件是开源插件。要查看其源代码，请参阅上的[Amazon IoT 舰队配置插件](https://github.com/aws-greengrass/aws-greengrass-fleet-provisioning-by-claim) GitHub。

**下载 Amazon IoT 舰队配置插件**
+ 在您的设备上，将 Amazon IoT 队列配置插件下载到名为的文件中`aws.greengrass.FleetProvisioningByClaim.jar`。{{GreengrassInstaller}}替换为要使用的文件夹。

------
#### [ Linux or Unix ]

  ```
  curl -s https://d2s8p88vqu9w66.cloudfront.net/releases/aws-greengrass-FleetProvisioningByClaim/fleetprovisioningbyclaim-latest.jar > {{GreengrassInstaller}}/aws.greengrass.FleetProvisioningByClaim.jar
  ```

------
#### [ Windows Command Prompt (CMD) ]

  ```
  curl -s https://d2s8p88vqu9w66.cloudfront.net/releases/aws-greengrass-FleetProvisioningByClaim/fleetprovisioningbyclaim-latest.jar > {{GreengrassInstaller}}/aws.greengrass.FleetProvisioningByClaim.jar
  ```

------
#### [ PowerShell ]

  ```
  iwr -Uri https://d2s8p88vqu9w66.cloudfront.net/releases/aws-greengrass-FleetProvisioningByClaim/fleetprovisioningbyclaim-latest.jar -OutFile {{GreengrassInstaller}}/aws.greengrass.FleetProvisioningByClaim.jar
  ```

------

  <a name="core-software-license"></a>下载此软件即表示您同意[Greengrass Core 软件许可协议](https://greengrass-release-license.s3.us-west-2.amazonaws.com/greengrass-license-v1.pdf)。

## 安装 Amazon IoT Greengrass 核心软件
<a name="run-greengrass-core-v2-installer-fleet"></a>

使用可指定以下操作的参数运行安装程序：
+ 从部分配置文件进行安装，该文件指定使用队列配置插件来配置 Amazon 资源。 Amazon IoT Greengrass Core 软件使用配置文件来指定设备上每个 Greengrass 组件的配置。安装程序会根据您提供的部分配置文件，以及实例集预置插件创建的 Amazon 资源来创建完整的配置文件。
+ <a name="install-argument-component-default-user"></a>指定使用 `ggc_user` 系统用户在核心设备上运行软件组件。在 Linux 设备上，此命令还指定使用 `ggc_group` 系统组，安装程序会为您创建系统用户和组。
+ <a name="install-argument-system-service"></a>将 Amazon IoT Greengrass Core 软件设置为启动时运行的系统服务。在 Linux 设备上，这需要 [Systemd](https://en.wikipedia.org/wiki/Systemd) 初始化系统。
**重要**  <a name="windows-system-service-requirement-important-note"></a>
在 Windows 核心设备上，必须将 Amazon IoT Greengrass 核心软件设置为系统服务。

有关您可以指定的参数的更多信息，请参阅[安装程序参数](configure-installer.md)。

**注意**  
<a name="jvm-tuning-note"></a>如果您在内存有限的设备 Amazon IoT Greengrass 上运行，则可以控制 Amazon IoT Greengrass 酷睿软件使用的内存量。要控制内存分配，您可以在 Nucleus 组件的 `jvmOptions` 配置参数中设置 JVM 堆大小选项。有关更多信息，请参阅 [使用 JVM 选项控制内存分配](configure-greengrass-core-v2.md#jvm-tuning)。

**安装 Amazon IoT Greengrass 核心软件**

1. <a name="installer-check-greengrass-core-software-version"></a>检查 Amazon IoT Greengrass 核心软件的版本。
   + {{GreengrassInstaller}}替换为包含该软件的文件夹的路径。

   ```
   java -jar ./{{GreengrassInstaller}}/lib/Greengrass.jar --version
   ```

1. 使用文本编辑器创建名为 `config.yaml` 的配置文件，以提供给安装程序。

   <a name="nano-command-intro"></a>例如，在基于 Linux 的系统上，您可以运行以下命令来使用 GNU nano 创建该文件。

   ```
   nano {{GreengrassInstaller}}/config.yaml
   ```

   将以下 YAML 内容复制到该文件中。此部分配置文件会指定实例集预置插件的参数。有关可以指定的选项的更多信息，请参阅[配置 Amazon IoT 舰队配置插件](fleet-provisioning-configuration.md)。

------
#### [ Linux or Unix ]

   ```
   ---
   services:
     aws.greengrass.Nucleus:
       version: "{{2.17.0}}"
     aws.greengrass.FleetProvisioningByClaim:
       configuration:
         rootPath: "{{/greengrass/v2}}"
         awsRegion: "{{us-west-2}}"
         iotDataEndpoint: "{{device-data-prefix}}-ats.iot.{{us-west-2}}.amazonaws.com"
         iotCredentialEndpoint: "{{device-credentials-prefix}}.credentials.iot.{{us-west-2}}.amazonaws.com"
         iotRoleAlias: "{{GreengrassCoreTokenExchangeRoleAlias}}"
         provisioningTemplate: "{{GreengrassFleetProvisioningTemplate}}"
         claimCertificatePath: "{{{{/greengrass/v2}}/claim-certs/claim.pem.crt}}"
         claimCertificatePrivateKeyPath: "{{{{/greengrass/v2}}/claim-certs/claim.private.pem.key}}"
         rootCaPath: "{{/greengrass/v2}}/AmazonRootCA1.pem"
         templateParameters:
           ThingName: "{{MyGreengrassCore}}"
           ThingGroupName: "{{MyGreengrassCoreGroup}}"
   ```

------
#### [ Windows ]

   ```
   ---
   services:
     aws.greengrass.Nucleus:
       version: "{{2.17.0}}"
     aws.greengrass.FleetProvisioningByClaim:
       configuration:
         rootPath: "{{C:\\greengrass\\v2}}"
         awsRegion: "{{us-west-2}}"
         iotDataEndpoint: "{{device-data-prefix}}-ats.iot.{{us-west-2}}.amazonaws.com"
         iotCredentialEndpoint: "{{device-credentials-prefix}}.credentials.iot.{{us-west-2}}.amazonaws.com"
         iotRoleAlias: "{{GreengrassCoreTokenExchangeRoleAlias}}"
         provisioningTemplate: "{{GreengrassFleetProvisioningTemplate}}"
         claimCertificatePath: "{{C:\\greengrass\\v2\\claim-certs\\claim.pem.crt}}"
         claimCertificatePrivateKeyPath: "{{C:\\greengrass\\v2\\claim-certs\\claim.private.pem.key}}"
         rootCaPath: "{{C:\\greengrass\\v2}}\\AmazonRootCA1.pem"
         templateParameters:
           ThingName: "{{MyGreengrassCore}}"
           ThingGroupName: "{{MyGreengrassCoreGroup}}"
   ```

------

   然后执行以下操作：
   + {{2.17.0}}替换为 Amazon IoT Greengrass Core 软件的版本。
   + 用 Greengrass 根{{C:\\greengrass\\v2}}文件夹替换`{{/greengrass/v2}}`或的每个实例。
**注意**  
在 Windows 设备上，您必须将路径分隔符指定为双反斜杠 (`\\`)，例如 `C:\\greengrass\\v2`。
   + {{us-west-2}}替换为您创建置备模板和其他资源的 Amazon 区域。
   + `iotDataEndpoint`用您的 Amazon IoT 数据端点替换。
   + 用您的`iotCredentialEndpoint` Amazon IoT 凭证终端节点替换。
   + {{GreengrassCoreTokenExchangeRoleAlias}}替换为令牌交换角色别名的名称。
   + {{GreengrassFleetProvisioningTemplate}}替换为队列配置模板的名称。
   + 将 `claimCertificatePath` 替换为设备上声明证书的路径。
   + 将 `claimCertificatePrivateKeyPath` 替换为设备上声明证书私钥的路径。
   + 将模板参数（`templateParameters`）替换为用于预置设备的值。此示例参考用于定义 `ThingName` 和 `ThingGroupName` 参数的[示例模板](fleet-provisioning-setup.md#example-fleet-provisioning-template)。
**注意**  
在此配置文件中，您可以自定义其他配置选项（例如要使用的端口和网络代理），如以下示例所示。有关更多信息，请参阅 [Greengrass Nucleus 配置](greengrass-nucleus-component.md#greengrass-nucleus-component-configuration)。  

   ```
   ---
   services:
     aws.greengrass.Nucleus:
       version: "{{2.17.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"
     aws.greengrass.FleetProvisioningByClaim:
       configuration:
         rootPath: "{{/greengrass/v2}}"
         awsRegion: "{{us-west-2}}"
         iotDataEndpoint: "{{device-data-prefix}}-ats.iot.{{us-west-2}}.amazonaws.com"
         iotCredentialEndpoint: "{{device-credentials-prefix}}.credentials.iot.{{us-west-2}}.amazonaws.com"
         iotRoleAlias: "{{GreengrassCoreTokenExchangeRoleAlias}}"
         provisioningTemplate: "{{GreengrassFleetProvisioningTemplate}}"
         claimCertificatePath: "{{{{/greengrass/v2}}/claim-certs/claim.pem.crt}}"
         claimCertificatePrivateKeyPath: "{{{{/greengrass/v2}}/claim-certs/claim.private.pem.key}}"
         rootCaPath: "{{/greengrass/v2}}/AmazonRootCA1.pem"
         templateParameters:
           ThingName: "{{MyGreengrassCore}}"
           ThingGroupName: "{{MyGreengrassCoreGroup}}"
         mqttPort: 443
         proxyUrl: "http://my-proxy-server:1100"
         proxyUserName: "Mary_Major"
         proxyPassword: "pass@word1357"
   ```

   ```
   ---
   services:
     aws.greengrass.Nucleus:
       version: "{{2.17.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"
     aws.greengrass.FleetProvisioningByClaim:
       configuration:
         rootPath: "{{C:\\greengrass\\v2}}"
         awsRegion: "{{us-west-2}}"
         iotDataEndpoint: "{{device-data-prefix}}-ats.iot.{{us-west-2}}.amazonaws.com"
         iotCredentialEndpoint: "{{device-credentials-prefix}}.credentials.iot.{{us-west-2}}.amazonaws.com"
         iotRoleAlias: "{{GreengrassCoreTokenExchangeRoleAlias}}"
         provisioningTemplate: "{{GreengrassFleetProvisioningTemplate}}"
         claimCertificatePath: "{{C:\\greengrass\\v2\\claim-certs\\claim.pem.crt}}"
         claimCertificatePrivateKeyPath: "{{C:\\greengrass\\v2\\claim-certs\\claim.private.pem.key}}"
         rootCaPath: "{{C:\\greengrass\\v2}}\\AmazonRootCA1.pem"
         templateParameters:
           ThingName: "{{MyGreengrassCore}}"
           ThingGroupName: "{{MyGreengrassCoreGroup}}"
         mqttPort: 443
         proxyUrl: "http://my-proxy-server:1100"
         proxyUserName: "Mary_Major"
         proxyPassword: "pass@word1357"
   ```
要使用 HTTPS 代理，您必须使用 1.1.0 版本或更高版本的实例集预置插件。您还必须在 `system` 下指定 `rootCaPath`，如以下示例所示。  

   ```
   ---
   system:
     rootCaPath: "{{/greengrass/v2}}/AmazonRootCA1.pem"
   services:
     {{...}}
   ```

   ```
   ---
   system:
     rootCaPath: "{{C:\\greengrass\\v2}}\\AmazonRootCA1.pem"
   services:
     {{...}}
   ```

1. 运行安装程序。指定 `--trusted-plugin` 来提供实例集预置插件，并指定 `--init-config` 来提供配置文件。
   + 将 `{{/greengrass/v2}}` 替换为 Greengrass 根文件夹。
   + 将的{{GreengrassInstaller}}每个实例替换为解压安装程序所在的文件夹。

------
#### [ Linux or Unix ]

   ```
   sudo -E java -Droot="{{/greengrass/v2}}" -Dlog.store=FILE \
     -jar ./{{GreengrassInstaller}}/lib/Greengrass.jar \
     --trusted-plugin ./{{GreengrassInstaller}}/aws.greengrass.FleetProvisioningByClaim.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 ./{{GreengrassInstaller}}/aws.greengrass.FleetProvisioningByClaim.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 ./{{GreengrassInstaller}}/aws.greengrass.FleetProvisioningByClaim.jar `
     --init-config ./{{GreengrassInstaller}}/config.yaml `
     --component-default-user ggc_user `
     --setup-system-service true
   ```

------
**重要**  <a name="windows-system-service-installer-argument-important-note"></a>
在 Windows 核心设备上，`--setup-system-service true`必须指定将 Amazon IoT Greengrass 核心软件设置为系统服务。

   <a name="installer-setup-system-service-output-message"></a>如果指定 `--setup-system-service true`，则安装程序会在将软件设置为系统服务并运行后打印 `Successfully set up Nucleus as a system service`。否则，如果安装程序成功安装软件，则不会输出任何消息。
**注意**  <a name="installer-deploy-dev-tools-without-provision"></a>
在没有 `deploy-dev-tools` 参数的情况下运行安装程序时，您不能使用 `--provision true` 参数来部署本地开发工具。有关直接在您的设备上部署 Greengrass CLI 的信息，请参阅 [Greengrass 命令行界面](gg-cli.md)。

1. <a name="installer-verify-installation"></a>通过查看根文件夹中的文件来验证安装情况。

------
#### [ Linux or Unix ]

   ```
   ls {{/greengrass/v2}}
   ```

------
#### [ Windows Command Prompt (CMD) ]

   ```
   dir {{C:\greengrass\v2}}
   ```

------
#### [ PowerShell ]

   ```
   ls {{C:\greengrass\v2}}
   ```

------

   如果安装成功，则根文件夹中包含多个文件夹，例如 `config`、`packages` 和 `logs`。

<a name="install-greengrass-core-run-software"></a>如果您将 Amazon IoT Greengrass Core 软件作为系统服务安装，则安装程序会为您运行该软件。否则，您必须手动运行该软件。有关更多信息，请参阅 [运行 Amazon IoT Greengrass 核心软件](run-greengrass-core-v2.md)。

<a name="install-greengrass-core-next-steps-intro"></a>有关如何配置和使用软件的更多信息 Amazon IoT Greengrass，请参阅以下内容：<a name="install-greengrass-core-next-steps-links"></a>
+ [配置 Amazon IoT Greengrass 核心软件](configure-greengrass-core-v2.md)
+ [开发 Amazon IoT Greengrass 组件](develop-greengrass-components.md)
+ [将 Amazon IoT Greengrass 组件部署到设备](manage-deployments.md)
+ [Greengrass 命令行界面](gg-cli.md)