將 AWS IoT Greengrass 元件部署至裝置 - AWS IoT Greengrass

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

將 AWS IoT Greengrass 元件部署至裝置

您可以使用 AWS IoT Greengrass 將元件部署至裝置或裝置群組。您可以使用部署來定義傳送至裝置的元件和組態。 會 AWS IoT Greengrass 部署至代表 Greengrass 核心裝置的目標、 AWS IoT 物件或物件群組。 AWS IoT Greengrass 會使用AWS IoT Core 任務來部署至核心裝置。您可以設定任務如何推展至您的裝置。

核心裝置部署

每個核心裝置都會為該裝置執行部署的元件。相同目標的新部署會覆寫目標的先前部署。建立部署時,您可以定義要套用至核心裝置現有軟體的元件和組態。

當您修改目標的部署時,您可以將先前修訂版中的元件取代為新修訂版中的元件。例如,您將 日誌管理員秘密管理員元件部署到物件群組 TestGroup。然後,您可以為 建立另一個部署TestGroup,僅指定秘密管理員元件。因此,該群組中的核心裝置不再執行日誌管理員。

平台相依性解析

當核心裝置收到部署時,它會檢查以確保元件與核心裝置相容。例如,如果您將 部署Firehose到 Windows 目標,部署將會失敗。

元件相依性解析

核心裝置也會檢查每個元件相依性是否與部署其他元件至此物件群組的版本限制相容。當元件的版本限制重疊時,Greengrass 會使用適用的最高版本元件。例如:

  • 您可以將元件 A 部署到 TestGroup。元件 A 取決於元件com.example.PythonRuntime版本 3.5 - 3.10。

  • 然後,您將元件 B 部署到 TestGroup。元件 B 取決於元件 3.7 到 3.8 com.example.PythonRuntime版。

因此, 的核心裝置會TestGroup判斷其可以部署com.example.PythonRuntime元件的 3.8 版,因為此版本是版本限制重疊的最高適用版本。

範例元件的元件相依性。

然後,您將元件 C 部署到 TestGroup。元件 C 取決於元件com.example.PythonRuntime版本 2.6 - 2.7。此部署失敗,因為沒有符合 2.6 - 2.7 和 3.7 - 3.8 限制條件的元件版本。

導致部署失敗的元件相依性。

從物件群組移除裝置

當您從物件群組中移除核心裝置時,元件部署行為取決於核心裝置執行的 Greengrass 核的版本。

2.5.1 and later

當您從物件群組中移除核心裝置時,行為取決於 AWS IoT 政策是否授予greengrass:ListThingGroupsForCoreDevice許可。如需有關此許可和核心裝置 AWS IoT 政策的詳細資訊,請參閱 的裝置身分驗證和授權 AWS IoT Greengrass

  • 如果 AWS IoT 政策授予此許可

    當您從物件群組移除核心裝置時,下次對裝置進行部署時, 會 AWS IoT Greengrass 移除物件群組的元件。如果下一次部署中包含裝置上的元件,則該元件不會從裝置中移除。

  • 如果 AWS IoT 政策未授予此許可

    當您從物件群組中移除核心裝置時, AWS IoT Greengrass 不會從裝置刪除該物件群組的元件。

    若要從裝置移除元件,請使用 Greengrass CLI 的部署建立命令。使用--remove引數指定要移除的元件,並使用--groupId引數指定物件群組。

2.5.0

當您從物件群組移除核心裝置時,下次對裝置進行部署時, 會 AWS IoT Greengrass 移除物件群組的元件。如果下一次部署中包含裝置上的元件,則該元件不會從裝置中移除。

此行為需要核心裝置的 AWS IoT 政策授予 greengrass:ListThingGroupsForCoreDevice許可。如果核心裝置沒有此許可,則核心裝置無法套用部署。如需詳細資訊,請參閱的裝置身分驗證和授權 AWS IoT Greengrass

2.0.x - 2.4.x

當您從物件群組中移除核心裝置時, AWS IoT Greengrass 不會從裝置刪除該物件群組的元件。

若要從裝置移除元件,請使用 Greengrass CLI 的部署建立命令。使用--remove引數指定要移除的元件,並使用--groupId引數指定物件群組。

部署

部署是連續的。當您建立部署時, 會將部署 AWS IoT Greengrass 轉出至線上的目標裝置。如果目標裝置未上線,則下次連線時會接收部署 AWS IoT Greengrass。當您將核心裝置新增至目標物件群組時, 會將該物件群組的最新部署 AWS IoT Greengrass 傳送給裝置。

在核心裝置部署元件之前,預設會通知裝置上的每個元件。Greengrass 元件可以回應通知以延遲部署。如果裝置電池電量低或正在執行無法中斷的程序,建議您延遲部署。如需詳細資訊,請參閱教學課程:開發可延遲元件更新的 Greengrass 元件。建立部署時,您可以設定部署,而無需通知元件。

每個目標物件或物件群組一次可以有一個部署。這表示當您為目標建立部署時, AWS IoT Greengrass 不會再部署該目標部署的先前修訂版。

部署選項

部署提供多種選項,可讓您控制哪些裝置接收更新,以及更新部署的方式。建立部署時,您可以設定下列選項:

  • AWS IoT Greengrass 元件

    定義要在目標 device. AWS IoT Greengrass components 上安裝和執行的元件,是您部署並在 Greengrass 核心裝置上執行的軟體模組。裝置只會在元件支援裝置的平台時接收元件。這可讓您部署到裝置群組,即使目標裝置在多個平台上執行。如果元件不支援裝置的平台,則元件不會部署到裝置。

    您可以將自訂元件和 AWS提供的元件部署到裝置。當您部署元件時, 會 AWS IoT Greengrass 識別任何元件相依性,並一併部署它們。如需詳細資訊,請參閱 開發 AWS IoT Greengrass 元件AWS提供的元件

    您可以定義要為每個元件部署的版本和組態更新。組態更新會指定如何修改核心裝置上的元件現有組態,或如果核心裝置上不存在元件,則修改元件的預設組態。您可以指定要重設為預設值的組態值,以及要合併到核心裝置的新組態值。當核心裝置收到不同目標的部署,且每個部署指定相容的元件版本時,核心裝置會根據您建立部署時的時間戳記,依序套用組態更新。如需詳細資訊,請參閱更新元件組態

    重要

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

    為了防止在您裝置上執行之元件的意外更新,我們建議您在建立部署時直接包含該元件的偏好版本。如需 AWS IoT Greengrass Core 軟體更新行為的詳細資訊,請參閱 更新 AWS IoT Greengrass 核心軟體 (OTA)

  • 部署政策

    定義何時可安全地部署組態,以及部署失敗時該怎麼做。您可以指定是否要等待元件報告其可以更新。如果裝置套用失敗的部署,您也可以指定是否要將裝置復原到先前的組態。

  • 停止組態

    定義停止部署的時間和方式。如果符合您定義的條件,則部署會停止並失敗。例如,您可以設定部署,在最小數量的裝置接收後,如果一定百分比的裝置無法套用該部署,則停止部署。

  • 推展組態

    定義部署推展到目標裝置的速率。您可以設定指數速率增加,並設定最小和最大速率界限。

  • 逾時組態

    定義每個裝置必須套用部署的時間上限。如果裝置超過您指定的持續時間,則裝置無法套用部署。

重要

自訂元件可以在 S3 儲存貯體中定義成品。 AWS IoT Greengrass 核心軟體部署元件時,會從 下載元件的成品 AWS 雲端。根據預設,核心裝置角色不允許存取 S3 儲存貯體。若要部署自訂元件來定義 S3 儲存貯體中的成品,核心裝置角色必須授予許可,才能從該儲存貯體下載成品。如需詳細資訊,請參閱允許存取元件成品的 S3 儲存貯體