

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

# 更新 AWS IoT Greengrass 核心軟體 (OTA)
<a name="update-greengrass-core-v2"></a>

 AWS IoT Greengrass 核心軟體包含 [Greengrass 核元件](greengrass-nucleus-component.md)和其他選用元件，您可以將這些元件部署到您的裝置，以執行軟體的over-the-air(OTA) 更新。此功能內建於 AWS IoT Greengrass 核心軟體。

OTA 更新可讓您更有效率地執行下列作業：
+ 修復安全漏洞。
+ 解決軟體穩定性問題。
+ 部署新功能和改良的功能。

**Topics**
+ [要求](#ota-update-requirements)
+ [核心裝置的考量事項](#ota-update-considerations)
+ [Greengrass 核更新行為](#ota-update-behavior-nucleus)
+ [執行 OTA 更新](#create-ota-update)

## 要求
<a name="ota-update-requirements"></a>

下列需求適用於部署 AWS IoT Greengrass 核心軟體的 OTA 更新：
+ Greengrass 核心裝置必須連線至 AWS 雲端 才能接收部署。
+ Greengrass 核心裝置必須正確設定和佈建憑證和金鑰，以便使用 AWS IoT Core 和 進行身分驗證 AWS IoT Greengrass。
+  AWS IoT Greengrass 核心軟體必須設定為系統服務並執行。如果您從 JAR 檔案 執行 核，OTA 更新將無法運作`Greengrass.jar`。如需詳細資訊，請參閱[將 Greengrass 核設定為系統服務](configure-greengrass-core-v2.md#configure-system-service)。

## 核心裝置的考量事項
<a name="ota-update-considerations"></a>

執行 OTA 更新之前，請注意您更新的核心裝置及其連線的用戶端裝置的影響：
+ Greengrass 核會關閉。
+ 在核心裝置上執行的所有元件也會關閉。如果這些元件寫入本機資源，除非正確關閉，否則這些資源可能會處於不正確的狀態。元件可以使用[程序間通訊](interprocess-communication.md)來告知 nucleus 元件延遲更新，直到清除其使用的資源為止。
+ 當核心元件關閉時，核心裝置會失去與 AWS 雲端 和本機裝置的連線。關閉時，核心裝置不會從用戶端裝置路由訊息。
+ 做為元件執行的長期 Lambda 函數會遺失其動態狀態資訊，並捨棄所有待處理的工作。

## Greengrass 核更新行為
<a name="ota-update-behavior-nucleus"></a>

<a name="component-patch-update"></a>部署元件時， 會 AWS IoT Greengrass 安裝該元件所有相依性的最新支援版本。因此，如果您將新裝置新增至物件群組，或者您更新以這些裝置為目標的部署，則可能會自動將新修補程式版本的 AWS公有元件部署到核心裝置。有些自動更新，例如 核更新，可能會導致您的裝置意外重新啟動。

當 [Greengrass 核子元件](greengrass-nucleus-component.md)的版本變更時，包含您裝置上的核子和所有其他元件 AWS IoT Greengrass 的核心軟體會開始套用變更。由於 核元件更新時[對核心裝置的影響](#ota-update-considerations)，因此您可能想要控制何時將新的核修補程式版本部署至您的裝置。若要這樣做，您必須在部署中直接包含 Greengrass 核元件。直接包含元件表示您在部署組態中包含該元件的特定版本，且不依賴元件相依性將該元件部署至您的裝置。如需在元件配方中定義相依性的詳細資訊，請參閱[配方格式](component-recipe-reference.md#recipe-format)。

檢閱下表，根據您的動作和部署組態了解 Greengrass 核元件的更新行為。


| 動作 | 部署組態 | Nucleus 更新行為 | 
| --- | --- | --- | 
| 將新裝置新增至現有部署以目標為目標的物件群組，而不修改部署。 | 部署不會直接包含 Greengrass 核。<br />部署直接包含至少一個 AWS提供的元件，或包含取決於 AWS提供的元件或 Greengrass 核的自訂元件。<br /> | 在新裝置上， 安裝符合所有元件相依性需求的最新版 核。<br />在現有裝置上， 不會更新已安裝的 核版本。 | 
| 將新裝置新增至現有部署以目標為目標的物件群組，而不修改部署。 | 部署直接包含特定版本的 Greengrass 核。 | 在新裝置上， 安裝指定的 nucleus 版本。<br />在現有裝置上， 不會更新已安裝的 核版本。<br /> | 
| 建立新的部署或修改現有的部署。 | 部署不會直接包含 Greengrass 核。<br />部署直接包含至少一個 AWS提供的元件，或包含取決於 AWS提供的元件或 Greengrass 核的自訂元件。<br /> | 在所有目標裝置上， 會安裝符合所有元件相依性需求的最新版 核，包括您新增至目標物件群組的任何新裝置。 | 
| 建立新的部署或修改現有的部署。 | 部署直接包含特定版本的 Greengrass 核。 | 在所有目標裝置上， 安裝指定的 核版本，包括您新增至目標物件群組的任何新裝置。 | 

## 執行 OTA 更新
<a name="create-ota-update"></a>

若要執行 OTA 更新，[請建立包含 核元件和要安裝之版本的部署](create-deployments.md)。 [Greengrass 核](greengrass-nucleus-component.md)