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

若我們提供該指南英語版本的翻譯,在有任何牴觸的狀況下請以英文版本的指南為主。其透過機器翻譯提供翻譯。

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

AWS IoT Greengrass 群組是用來組織節點環境中的實體。群組也可用來控制群組內實體彼此、以及與 AWS 雲端的互動方式。例如,只有該群組的 Lambda 函數會部署用於本機執行,而且只有該群組的裝置可以使用本機 MQTT 伺服器來進行通訊。

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

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


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

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

從 AWS IoT 主控台 部署群組

您可以在 AWS IoT 主控台 中部署群組,並從該群組的組態頁面管理其部署。


                                    Greengrass 群組的部署頁面。
注意

若要在主控台中開啟此頁面,請選擇 GreengrassGroups (群組),然後選擇您的群組。

部署群組的目前版本
  • Actions (動作) 中,選擇 Deploy (部署)

檢視群組的部署歷史記錄

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

  1. 從導覽窗格中,選擇 Deployments (部署)

  2. 若要查看部署的詳細資訊 (包括錯誤訊息),請選擇包含該部署的資料列。

重新部署群組部署

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

  1. 從導覽窗格中,選擇 Deployments (部署)

  2. 在包含部署的一列中,從 Status (狀態) 欄中選擇省略符號 (),然後選擇 Re-deploy (重新部署)

    顯示重新部署動作以進行部署的部署頁面。
重設群組部署

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

  • Actions (動作) 中,選擇 Reset Deployments (重設部署)

使用 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,請使用具有 ListGroupVersions 的群組 ID。

注意

您也可以在 中找到這些值。AWS IoT 主控台. 組ID顯示在組的 設置 第頁。組版本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 則決定了本機環境中的可用實體,及其互動方式。

群組元件

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

  • Definition (定義),其會參考指定類型之 DefinitionVersion 物件清單。例如,DeviceDefinition 會參考 DeviceDefinitionVersion 物件的清單。

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

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

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

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


                                裝置階層的圖表,其中包含 DeviceDefinition、DeviceDefinitionVersion 和 Device 物件。

更新群組

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

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

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

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

注意

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 或版本來參考 Lambda 函數。如果是參考別名 ARN (建議),則當您在 AWS Lambda 中發佈新的函數版本時,這時不需要更新 FunctionDefinitionVersion (或 SubscriptionDefinitionVersion)。如需詳細資訊,請參閱依別名或版本參考 Lambda 函數

另請參閱