將 AWS IoT Greengrass 群組部署至 AWS IoT Greengrass 核心 - AWS IoT Greengrass

AWS IoT Greengrass Version 1 於 2023 年 6 月 30 日進入延長使用壽命階段。如需詳細資訊,請參閱AWS IoT Greengrass V1 維護政策。在此日期之後, AWS IoT Greengrass V1 將不會發行提供功能、增強功能、錯誤修正或安全性修補程式的更新。在上運行的設備 AWS IoT Greengrass V1 不會中斷,並將繼續運行並連接到雲。我們強烈建議您移轉至 AWS IoT Greengrass Version 2,這會增加重要的新功能,並支援其他平台

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

將 AWS IoT Greengrass 群組部署至 AWS IoT Greengrass 核心

使用AWS IoT Greengrass群組來組織邊緣環境中的圖元。您也可以使用群組來控制群組中的圖元如何彼此互動,以及與AWS 雲端. 例如,只有群組中的 Lambda 函數會部署在本機執行,而且只有群組中的裝置可以使用本機 MQTT 伺服器進行通訊。

群組必須包含核心,也就是執行 AWS IoT Greengrass 核心軟體的 AWS IoT 裝置。此核心能做為邊緣閘道,並在節點環境中提供 AWS IoT Core 功能。您也可以根據不同的商務需求,將下列實體新增至群組中:

您可以在中管理 Greengrass 群組,AWS 雲端然後將其部署到核心。部署會將群組組態複製到核心裝置上的 group.json 檔案。此檔案位於 greengrass-root/ggc/deployments/group

部署到核心裝置之 Greengrass 群組的雲端定義。
注意

在部署期間,核心裝置上的 Greengrass 協助程式程序會停止並重新啟動。

從AWS IoT主控台部署群組

您可以從AWS IoT主控台中的群組設定頁面部署群組並管理其部署。

注意

要在控制台中打開此頁面,請選擇 Greengrass 設備,然後選擇組(V1),然後在 Greengrass 組下選擇您的組。

部署群組的目前版本
  • 在「群組組態」頁面中,選擇「部署」。

檢視群組的部署歷史記錄

群組的部署歷史記錄包括日期和時間、群組版本,以及每個部署嘗試狀態。

  1. 在群組組態頁面中,選擇部索引標籤。

  2. 若要查看有關部署的詳細資訊 (包括錯誤訊息),請從AWS IoT主控台選擇 Greengr ass 裝置下的部署

重新部署群組部署

如果目前的部署失敗或還原成不同的群組版本,您可能會想要重新部署部署。

  1. 從AWS IoT主控台選擇 Greengrass 裝置,然後選擇 [群組 (V1)]。

  2. 選擇 Deployment (部署) 索引標籤。

  3. 選擇您要重新部署的部署,然後選擇重新部署。

重設群組部署

您可能想要重設群組部署以移動或刪除群組,或是移除部署資訊。如需詳細資訊,請參閱 重設部署

  1. 從AWS IoT主控台選擇 Greengrass 裝置,然後選擇 [群組 (V1)]。

  2. 選擇 Deployment (部署) 索引標籤。

  3. 選擇您要重設的部署,然後選擇 [重設部署]。

使用 AWS IoT Greengrass API 部署群組

AWS IoT Greengrass API 提供下列動作來部署 AWS IoT Greengrass 群組和管理群組部署。您可以從 AWS CLI、AWS IoT Greengrass API 或 AWS 開發套件來呼叫這些動作。

動作 描述

CreateDeployment

建立 NewDeploymentRedeployment 部署。

如果目前的部署失敗 , 您可能想要重新部署部署。或者,您可能想要重新部署,將其還原至不同的群組版本。

GetDeploymentStatus

傳回部署的狀態:BuildingInProgressSuccessFailure

您可以設定 Amazon EventBridge 事件以接收部署通知。如需詳細資訊,請參閱 取得部署通知

ListDeployments

傳回群組的部署歷史記錄。

ResetDeployments

重設群組的部署。

您可能想要重設群組部署以移動或刪除群組,或是移除部署資訊。如需詳細資訊,請參閱 重設部署

注意

如需大量部署操作的詳細資訊,請參閱建立群組的大量部署

取得群組 ID

群組 ID 通常用於 API 動作。您可以使用此ListGroups動作從群組清單中尋找目標群組的 ID。例如,在 AWS CLI 中,使用 list-groups 命令。

aws greengrass list-groups

您也可以包含 query 選項來篩選結果。例如:

  • 取得最近建立的群組:

    aws greengrass list-groups --query "reverse(sort_by(Groups, &CreationTimestamp))[0]"
  • 按名稱取得群組:

    aws greengrass list-groups --query "Groups[?Name=='MyGroup']"

    群組名稱不需要是唯一名稱,因此可能會傳回多個群組。

以下是 list-groups 回應範例。每個群組的資訊包括群組的 ID (在 Id 屬性中) 和最新群組版本的 ID (在 LatestVersion 屬性中)。若要取得群組的其他版本 ID,請搭配使用群組 ID ListGroupVersions

注意

您也可以在AWS IoT控制台中找到這些值。群組 ID 會顯示在群組的 Settings (設定) 頁面上。群組版本 ID 會顯示在群組的 [部署] 索引標籤上。

{ "Groups": [ { "LatestVersionArn": "arn:aws:us-west-2:123456789012:/greengrass/groups/00dedaaa-ac16-484d-ad77-c3eedEXAMPLE/versions/4cbc3f07-fc5e-48c4-a50e-7d356EXAMPLE", "Name": "MyFirstGroup", "LastUpdatedTimestamp": "2019-11-11T05:47:31.435Z", "LatestVersion": "4cbc3f07-fc5e-48c4-a50e-7d356EXAMPLE", "CreationTimestamp": "2019-11-11T05:47:31.435Z", "Id": "00dedaaa-ac16-484d-ad77-c3eedEXAMPLE", "Arn": "arn:aws:us-west-2:123456789012:/greengrass/groups/00dedaaa-ac16-484d-ad77-c3eedEXAMPLE" }, { "LatestVersionArn": "arn:aws:us-west-2:123456789012:/greengrass/groups/036ceaf9-9319-4716-ba2a-237f9EXAMPLE/versions/8fe9e8ec-64d1-4647-b0b0-01dc8EXAMPLE", "Name": "GreenhouseSensors", "LastUpdatedTimestamp": "2020-01-07T19:58:36.774Z", "LatestVersion": "8fe9e8ec-64d1-4647-b0b0-01dc8EXAMPLE", "CreationTimestamp": "2020-01-07T19:58:36.774Z", "Id": "036ceaf9-9319-4716-ba2a-237f9EXAMPLE", "Arn": "arn:aws:us-west-2:123456789012:/greengrass/groups/036ceaf9-9319-4716-ba2a-237f9EXAMPLE" }, ... ] }

如果您未指定AWS 區域,指AWS CLI令會使用您設定檔中的預設「地區」。若要傳回不同區域中的群組,請包含區域選項。例如:

aws greengrass list-groups --region us-east-1

AWS IoT Greengrass 群組物件模型概觀

當程式設計採用 AWS IoT Greengrass API 進行時,了解 Greengrass 群組物件模型會很有幫助。

群組

在 AWS IoT Greengrass API 中,最上層 Group 物件包含中繼資料和 GroupVersion 物件的清單。GroupVersion 物件則與透過 ID 與 Group 相關聯。

群組的圖表,其中包含中繼資料和群組版本的清單。

群組版本

GroupVersion 物件定義了群組成員資格。每個 GroupVersion 均參考 CoreDefinitionVersion 及其他依 ARN 的元件版本。這些參考決定了要包含在群組中的實體。

依 ARN 參考其他版本類型的群組版本圖表。

例如,若要在群組中包含三個 Lambda 函數、一個裝置和兩個訂用帳戶,參GroupVersion考資料如下:

  • CoreDefinitionVersion,其中包含必要核心。

  • FunctionDefinitionVersion,其中包含三個函數。

  • DeviceDefinitionVersion含用戶端裝置的。

  • SubscriptionDefinitionVersion,其中包含兩個訂閱。

核心裝置上的已部署 GroupVersion 則決定了本機環境中的可用實體,及其互動方式。

群組元件

您新增至群組的元件分為三層:

  • 引用給類型的DefinitionVersion對象列表的定義。例如,DeviceDefinition 會參考 DeviceDefinitionVersion 物件的清單。

  • DefinitionVersion含一組指定類型之實體的。例如,DeviceDefinitionVersion 包含了 Device 物件的清單。

  • 定義其屬性和行為的個別實體。例如,定Device義AWS IoT登錄中對應用戶端裝置的 ARN、其裝置憑證的 ARN,以及其本機陰影是否自動與雲端同步。

    您可以將下列類型的實體新增至群組:

下面範例 DeviceDefinition 參考了三個 DeviceDefinitionVersion 物件,其中每個都會包含多個 Device 物件。一次只會在群組中使用一個 DeviceDefinitionVersion

一個設備層次結構的圖表,它包括 DeviceDefinition DeviceDefinitionVersion,和設備對象。

更新群組

在 AWS IoT Greengrass API 中,您可以使用版本來更新群組的組態。版本是不可變的,因此若要新增、移除或變更群組元件,您必須建立包含新實體或更新實體的DefinitionVersion物件。

您可以將新DefinitionVersions物件與新的或現有的定義物件相關聯。例如,您可以使用 CreateFunctionDefinition 動作來建立包含以 FunctionDefinitionVersion 做為初始版本的 FunctionDefinition,或者您可以使用 CreateFunctionDefinitionVersion 動作,同時參考現有的 FunctionDefinition

建立群組元件之後,您可以建立一GroupVersion個包含您要包含在群組中的所有DefinitionVersion物件。然後,您要部署 GroupVersion

若要部署 GroupVersion,其必須參考其中僅包含一個 CoreCoreDefinitionVersion。所有參考的實體都必須是該群組的成員。此外,Greengrass 服務角色必須與您AWS 帳戶AWS 區域在部署的. GroupVersion

注意

API 中的 Update 動作是用於變更 Group 或元件 Definition (定義) 物件的名稱。

更新參考資AWS源的實體

Greengrass Lambda 函數和秘密資源定義了 Greengrass 特定的屬性,並且還引用相應的資源。AWS若要更新這些實體,您可以變更對應的AWS資源,而不是 Greengrass 物件。例如,Lambda 函數會參考中的函數AWS Lambda,也會定義 Greengrass 群組特有的生命週期和其他屬性。

  • 若要更新 Lambda 函數程式碼或封裝的相依性,請在中進行變更AWS Lambda。在下一次群組部署期間,這些變更會擷取自 AWS Lambda,並複製到您的本機環境。

  • 若要更新 Greengrass 特定屬性,您可以建立其中包含已更新 Function 屬性的 FunctionDefinitionVersion

注意

Greengrass Lambda 函數可以通過別名 ARN 或 ARN 版本引用一個 Lambda 函數。如果是參考別名 ARN (建議),則當您在 AWS Lambda 中發佈新的函數版本時,這時不需要更新 FunctionDefinitionVersion (或 SubscriptionDefinitionVersion)。如需詳細資訊,請參閱 依別名或版本參考 Lambda 函數

另請參閱