

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

# 将 Greengrass V1 核心设备升级至 Greengrass V2
<a name="upgrade-v1-core-devices"></a>

验证您的应用程序和组件在 AWS IoT Greengrass V2 核心设备上运行后，可以在当前运行 v1.x 的设备（例如生产设备）上安装 C AWS IoT Greengrass ore 软件 v2.x。然后，部署 Greengrass V2 组件，以在设备上运行您的 Greengrass 应用程序。

要将设备实例集从 V1 升级到 V2，请为每台要升级的设备完成以下步骤。您可以使用事物组将 V2 组件部署到核心设备实例集中。

**提示**  
我们建议您创建一个脚本来自动执行设备实例集的升级过程。如果您使用 [AWS Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/what-is-systems-manager.html) 管理实例集，则可以使用 Systems Manager 在每台设备上运行该脚本，将您的实例集从 V1 升级至 V2。  
您可以联系您的 E AWS nterprise Support 代表，询问有关如何以最佳方式自动执行升级过程的问题。



## 步骤 1：安装 AWS IoT Greengrass 核心软件 v2.x
<a name="install-v2-on-v1"></a>

从以下选项中进行选择，在 V1 AWS IoT Greengrass 核心设备上安装 Core 软件 v2.x：
+ **[以更少的步骤升级](#install-v2-after-uninstall)**

  要以更少的步骤升级，您可以在安装 v2.x 软件之前卸载 v1.x 软件。
+ **[在最短停机时间内升级](#install-v2-side-by-side)**

  要在最短的停机时间内进行升级，您可以同时安装两个版本的 AWS IoT Greengrass Core 软件。安装 AWS IoT Greengrass 核心软件 v2.x 并验证 V2 应用程序是否正常运行后，即可卸载 C AWS IoT Greengrass ore 软件 v1.x。在选择此选项之前，请考虑同时运行两个版本的 AWS IoT Greengrass 酷睿软件所需的额外内存。

### 在安装 v2.x 之前卸载 C AWS IoT Greengrass ore v1.x
<a name="install-v2-after-uninstall"></a>

如果要按顺序升级，请在设备上安装 v2.x 之前卸载 C AWS IoT Greengrass ore 软件 v1.x。

**卸载 AWS IoT Greengrass 核心软件 v1.x**

1. 如果 AWS IoT Greengrass 核心软件 v1.x 作为服务运行，则必须停止、禁用和删除该服务。

   1. 停止正在运行的 AWS IoT Greengrass 核心软件 v1.x 服务。

      ```
      sudo systemctl stop greengrass 
      ```

   1. 等待直至系统停止。您可以使用 `list` 命令检查服务的状态。

      ```
      sudo systemctl list-units --type=service | grep greengrass
      ```

   1. 禁用服务。

      ```
      sudo systemctl disable greengrass
      ```

   1. 移除服务。

      ```
      sudo rm /etc/systemd/system/greengrass.service
      ```

1. 如果 C AWS IoT Greengrass ore 软件 v1.x 未作为服务运行，请使用以下命令停止守护程序。*greengrass-root*替换为你的 Greengrass 根文件夹的名称。默认位置是 `/greengrass`。

   ```
   cd /greengrass-root/ggc/core/
   sudo ./greengrassd stop
   ```

1. （可选）将 Greengrass 根文件夹以及[自定义写入文件夹](https://docs.aws.amazon.com/greengrass/v1/developerguide/gg-core.html#write-directory)（如果适用）备份到设备上的其他文件夹中。

   1. 使用以下命令将当前 Greengrass 根文件夹复制到其他文件夹，然后移除该根文件夹。

      ```
      sudo cp -r /greengrass-root /path/to/greengrass-backup
      rm -rf /greengrass-root
      ```

   1. 使用以下命令将写入文件夹移至其他文件夹，然后移除该写入文件夹。

      ```
      sudo cp -r /write-directory /path/to/write-directory-backup
      rm -rf /write-directory
      ```

对于 Greengrass nucleus：您可以使用的安装[说明在](install-greengrass-core-v2.md)设备上安装 Greengrass 核。 AWS IoT Greengrass V2

对于 Greengrass nucleus lite：你可以使用 Greengrass nucleus lite 的[安装说明来安装 Greengrass](greengrass-nucleus-lite-component.md) nucleus lite。

**提示**  <a name="tip-migrate-reuse-core-device-identity"></a>
要在将核心设备从 V1 迁移到 V2 时重复使用其身份，请按照说明[通过手动配置安装 AWS IoT Greengrass 核心软件](manual-installation.md)。首先从设备中删除 V1 核心软件，然后重复使用 V1 核心设备的 AWS IoT 东西和证书，并更新证书的 AWS IoT 策略以授予 v2.x 软件所需的权限。

### 在已经运行 v1.x 的设备上安装 AWS IoT Greengrass 酷睿软件 v2.x
<a name="install-v2-side-by-side"></a>

如果您在已经运行 AWS IoT Greengrass 酷睿软件 v1.x 的设备上安装 C AWS IoT Greengrass ore v2.x 软件，请记住以下几点：
+ V2 核心设备 AWS IoT 的事物名称必须是唯一的。请勿使用与 V1 核心设备相同的事物名称。
+ 用于 AWS IoT Greengrass 核心软件 v2.x 的端口必须与用于 v1.x 的端口不同。
  + 将 V1 流管理器配置为使用 8088 以外的端口。有关更多信息，请参阅[配置流管理器](https://docs.aws.amazon.com/greengrass/v1/developerguide/configure-stream-manager.html)。
  + 将 V1 MQTT 代理配置为使用 8883 以外的端口。有关更多信息，请参阅[为本地消息收发配置 MQTT 端口](https://docs.aws.amazon.com/greengrass/v1/developerguide/gg-core.html#config-local-mqtt-port)。
+ AWS IoT Greengrass V2 不提供重命名 Greengrass 系统服务的选项。如果您将 Greengrass 作为系统服务运行，则必须执行以下操作之一，以避免系统服务名称发生冲突：
  + 在安装 v2.x 之前，请重命名 v1.x 的 Greengrass 服务。
  + 在没有系统服务的情况下安装 C AWS IoT Greengrass ore 软件 v2.x，然后手动[将该软件配置为系统服务](configure-greengrass-core-v2.md#configure-system-service)，其名称不是。`greengrass`

**重命名 v1.x Greengrass 服务**

  1. 停止 AWS IoT Greengrass 核心软件 v1.x 服务。

     ```
     sudo systemctl stop greengrass
     ```

  1. 等待系统停止。服务可能需要数分钟才会停止。您可以使用 `list-units` 命令检查服务是否已停止。

     ```
     sudo systemctl list-units --type=service | grep greengrass
     ```

  1. 禁用服务。

     ```
     sudo systemctl disable greengrass
     ```

  1. 对服务进行重命名。

     ```
     sudo mv /etc/systemd/system/greengrass.service /etc/systemd/system/greengrass-v1.service
     ```

  1. 重新加载服务并启动。

     ```
     sudo systemctl daemon-reload
     sudo systemctl reset-failed
     sudo systemctl enable greengrass-v1 
     sudo systemctl start greengrass-v1
     ```

然后，您可以使用 [AWS IoT Greengrass V2安装说明](install-greengrass-core-v2.md)在您的设备上安装该软件。

**提示**  <a name="tip-migrate-reuse-core-device-identity"></a>
要在将核心设备从 V1 迁移到 V2 时重复使用其身份，请按照说明[通过手动配置安装 AWS IoT Greengrass 核心软件](manual-installation.md)。首先从设备中删除 V1 核心软件，然后重复使用 V1 核心设备的 AWS IoT 东西和证书，并更新证书的 AWS IoT 策略以授予 v2.x 软件所需的权限。

## 步骤 2：将 AWS IoT Greengrass V2 组件部署到核心设备
<a name="deploy-v2-resources"></a>

在设备上安装 C AWS IoT Greengrass ore 软件 v2.x 后，请根据您选择的运行时部署组件。

### 对于 Greengrass nucleus 来说：
<a name="deploy-nucleus-components"></a>

创建包含以下资源的部署。要将组件部署到由相似设备组成的实例集，请为包含这些设备的事物组创建部署。
+ 您通过 V1 Lambda 函数创建的 Lambda 函数组件。有关更多信息，请参阅 [运行 AWS Lambda 函数](run-lambda-functions.md)。
+ 如果您使用 V1 订阅，则为[旧版订阅路由器组件](legacy-subscription-router-component.md)。
+ 如果您使用流管理器，则为[流管理器组件](stream-manager-component.md)。有关更多信息，请参阅 [管理 Greengrass 核心设备上的数据流](manage-data-streams.md)。
+ 如果您使用本地密钥，则为[密钥管理器组件](secret-manager-component.md)。
+ 如果您使用 V1 连接器，则为 [AWS提供的连接器组件](set-up-v2-test-device.md#use-v1-connectors)。
+ 如果您使用 Docker 容器，则为 [Docker 应用程序管理器组件](docker-application-manager-component.md)。有关更多信息，请参阅 [运行 Docker 容器](run-docker-container.md)。
+ 如果您使用已连接的设备，则为[客户端设备支持的组件](client-device-components.md)。您还必须启用客户端设备支持，并将客户端设备与核心设备关联。有关更多信息，请参阅 [与本地 IoT 设备交互](interact-with-local-iot-devices.md)。
+ 如果您使用设备影子，则为[影子管理器组件](shadow-manager-component.md)。有关更多信息，请参阅 [与设备影子交互](interact-with-shadows.md)。
+ [如果您将日志从 Greengrass 核心设备上传到日志管理器组件 CloudWatch Amazon Logs。](log-manager-component.md)有关更多信息，请参阅 [监控 AWS IoT Greengrass 日志](monitor-logs.md)。
+ 如果您与集成 AWS IoT SiteWise，[请按照说明](https://docs.aws.amazon.com/iot-sitewise/latest/userguide/configure-gateway-ggv2.html)将 V2 核心设备设置为 AWS IoT SiteWise 网关。 AWS IoT SiteWise 提供了为您部署 AWS IoT SiteWise 组件的安装脚本。
+ 您为实现自定义功能而开发的用户定义组件。

有关创建和修改部署的更多信息，请参阅[将 AWS IoT Greengrass 组件部署到设备](manage-deployments.md)。

### 对于 Greengrass nucleus lite 来说：
<a name="deploy-nucleus-lite-components"></a>

将您在[迁移指南的第 2 步中创建的](set-up-v2-test-device-lite.md#lite-step-2-convert-lambda)通用组件部署到 Greengrass nucleus lite 设备上：

1. 使用您创建的组件配方创建组件

1. 创建针对您的 Greengrass nucleus lite 设备的部署，其中包括您的通用组件

1. 验证您的组件是否正常运行