

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 升級 Greengrass V1 核心裝置至 Greengrass V2
<a name="upgrade-v1-core-devices"></a>

確認您的應用程式和元件可在 AWS IoT Greengrass V2 核心裝置上運作後，您可以在目前執行 v1.x 的裝置上安裝 AWS IoT Greengrass Core 軟體 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。  
您可以聯絡您的 AWS 企業支援代表，詢問如何以最佳方式自動化升級程序。



## 步驟 1：安裝 AWS IoT Greengrass Core 軟體 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 Core 軟體 v2.x 並確認 V2 應用程式是否正常運作後，請解除安裝 AWS IoT Greengrass Core 軟體 v1.x。選擇此選項之前，請考慮同時執行兩個 AWS IoT Greengrass Core 軟體版本所需的額外 RAM。

### 在安裝 v2.x 之前解除安裝 AWS IoT Greengrass Core v1.x
<a name="install-v2-after-uninstall"></a>

如果您想要循序升級，請在裝置上安裝 v2.x 之前解除安裝 AWS IoT Greengrass Core 軟體 v1.x。

**解除安裝 AWS IoT Greengrass Core 軟體 v1.x**

1. 如果 AWS IoT Greengrass Core 軟體 v1.x 以服務的形式執行，您必須停止、停用和移除服務。

   1. 停止執行中的 AWS IoT Greengrass Core 軟體 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. 如果 AWS IoT Greengrass Core 軟體 v1.x 不是以服務的形式執行，請使用下列命令來停止協助程式。以 {{Greengrass 根資料夾的名稱取代 greengrass-root}}。預設位置為 `/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 核：您可以使用 [的安裝說明 AWS IoT Greengrass V2](install-greengrass-core-v2.md)，在裝置上安裝 Greengrass 核。

針對 Greengrass nucleus lite：您可以使用 [Greengrass nucleus lite 的安裝指示](greengrass-nucleus-lite-component.md)來安裝 Greengrass 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 Core 軟體 v2.x
<a name="install-v2-side-by-side"></a>

如果您在已執行 AWS IoT Greengrass Core 軟體 v1.x 的裝置上安裝 AWS IoT Greengrass Core v2.x 軟體，請記住下列事項：
+ V2 核心裝置的 AWS IoT 物件名稱必須是唯一的。請勿使用與 V1 核心裝置相同的物件名稱。
+ 您用於 AWS IoT Greengrass Core 軟體 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 服務。
  + 在沒有系統服務的情況下安裝 AWS IoT Greengrass Core 軟體 v2.x，然後手動[將軟體設定為名稱為 以外的系統服務](configure-greengrass-core-v2.md#configure-system-service)`greengrass`。

**重新命名 v1.x 的 Greengrass 服務**

  1. 停止 AWS IoT Greengrass Core 軟體 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>

在裝置上安裝 AWS IoT Greengrass Core 軟體 v2.x 之後，請根據您選擇的執行時間部署元件。

### 針對 Greengrass 核：
<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 核心裝置上傳至 Amazon CloudWatch 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. 確認您的元件是否正確執行