將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 取決於元件com.example.PythonRuntime版本 3.7 至 3.8。

因此,中的核心裝置會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元件

    定義要在目標裝置上安裝和執行的元件。 AWS IoT Greengrass元件是您在 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 儲存貯體