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 功能。您也可以根據不同的商務需求,將下列實體新增至群組中:
-
用戶端裝置。已表示為 AWS IoT 登錄檔中的物件。這些裝置必須執行 FreeRTOS 或使用AWS IoT裝置 SDK 或AWS IoT Greengrass探索 API 來取得核心的連線資訊。只有屬於群組成員的用戶端裝置才能連線至核心。
Lambda 函數。在核心執行程式碼的使用者定義無伺服器應用程式。Lambda 函數編寫AWS Lambda並從 Greengrass 組引用。如需詳細資訊,請參閱 在AWS IoT Greengrass核心上執行 Lambda 函數。
連接器。在核心執行程式碼的預先定義無伺服器應用程式。連接器可提供與本機基礎結構、裝置通訊協定及其他雲端服務的內建整合。AWS如需詳細資訊,請參閱 使用 Greengrass 連接器來整合服務和通訊協定。
訂閱。定義專為 MQTT 通訊授權的發佈者、訂閱者和 MQTT 主題 (或主體)。
記錄檔。AWS IoT Greengrass系統元件和 Lambda 函數的記錄組態。如需詳細資訊,請參閱 使用 AWS IoT Greengrass 日誌進行監控。
您可以在中管理 Greengrass 群組,AWS 雲端然後將其部署到核心。部署會將群組組態複製到核心裝置上的 group.json
檔案。此檔案位於
:greengrass-root
/ggc/deployments/group
![部署到核心裝置之 Greengrass 群組的雲端定義。](images/group-deploy.png)
注意
在部署期間,核心裝置上的 Greengrass 協助程式程序會停止並重新啟動。
從AWS IoT主控台部署群組
您可以從AWS IoT主控台中的群組設定頁面部署群組並管理其部署。
注意
要在控制台中打開此頁面,請選擇 Greengrass 設備,然後選擇組(V1),然後在 Greengrass 組下選擇您的組。
- 部署群組的目前版本
-
-
在「群組組態」頁面中,選擇「部署」。
-
- 檢視群組的部署歷史記錄
-
群組的部署歷史記錄包括日期和時間、群組版本,以及每個部署嘗試狀態。
-
在群組組態頁面中,選擇部署索引標籤。
-
若要查看有關部署的詳細資訊 (包括錯誤訊息),請從AWS IoT主控台選擇 Greengr ass 裝置下的部署。
-
- 重新部署群組部署
-
如果目前的部署失敗或還原成不同的群組版本,您可能會想要重新部署部署。
-
從AWS IoT主控台選擇 Greengrass 裝置,然後選擇 [群組 (V1)]。
-
選擇 Deployment (部署) 索引標籤。
-
選擇您要重新部署的部署,然後選擇重新部署。
-
- 重設群組部署
-
您可能想要重設群組部署以移動或刪除群組,或是移除部署資訊。如需詳細資訊,請參閱 重設部署。
-
從AWS IoT主控台選擇 Greengrass 裝置,然後選擇 [群組 (V1)]。
-
選擇 Deployment (部署) 索引標籤。
-
選擇您要重設的部署,然後選擇 [重設部署]。
-
使用 AWS IoT Greengrass API 部署群組
AWS IoT Greengrass API 提供下列動作來部署 AWS IoT Greengrass 群組和管理群組部署。您可以從 AWS CLI、AWS IoT Greengrass API 或 AWS 開發套件來呼叫這些動作。
注意
如需大量部署操作的詳細資訊,請參閱建立群組的大量部署。
取得群組 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
相關聯。
![群組的圖表,其中包含中繼資料和群組版本的清單。](images/om-group.png)
群組版本
GroupVersion
物件定義了群組成員資格。每個 GroupVersion
均參考 CoreDefinitionVersion
及其他依 ARN 的元件版本。這些參考決定了要包含在群組中的實體。
![依 ARN 參考其他版本類型的群組版本圖表。](images/om-groupversion.png)
例如,若要在群組中包含三個 Lambda 函數、一個裝置和兩個訂用帳戶,參GroupVersion
考資料如下:
CoreDefinitionVersion
,其中包含必要核心。FunctionDefinitionVersion
,其中包含三個函數。包
DeviceDefinitionVersion
含用戶端裝置的。SubscriptionDefinitionVersion
,其中包含兩個訂閱。
核心裝置上的已部署 GroupVersion
則決定了本機環境中的可用實體,及其互動方式。
群組元件
您新增至群組的元件分為三層:
引用給定類型的DefinitionVersion對象列表的定義。例如,
DeviceDefinition
會參考DeviceDefinitionVersion
物件的清單。包DefinitionVersion含一組指定類型之實體的。例如,
DeviceDefinitionVersion
包含了Device
物件的清單。定義其屬性和行為的個別實體。例如,定
Device
義AWS IoT登錄中對應用戶端裝置的 ARN、其裝置憑證的 ARN,以及其本機陰影是否自動與雲端同步。您可以將下列類型的實體新增至群組:
下面範例 DeviceDefinition
參考了三個 DeviceDefinitionVersion
物件,其中每個都會包含多個 Device
物件。一次只會在群組中使用一個 DeviceDefinitionVersion
。
![一個設備層次結構的圖表,它包括 DeviceDefinition DeviceDefinitionVersion,和設備對象。](images/om-devicedefinition.png)
更新群組
在 AWS IoT Greengrass API 中,您可以使用版本來更新群組的組態。版本是不可變的,因此若要新增、移除或變更群組元件,您必須建立包含新實體或更新實體的DefinitionVersion物件。
您可以將新DefinitionVersions物件與新的或現有的定義物件相關聯。例如,您可以使用 CreateFunctionDefinition
動作來建立包含以 FunctionDefinitionVersion
做為初始版本的 FunctionDefinition
,或者您可以使用 CreateFunctionDefinitionVersion
動作,同時參考現有的 FunctionDefinition
。
建立群組元件之後,您可以建立一GroupVersion
個包含您要包含在群組中的所有DefinitionVersion物件。然後,您要部署 GroupVersion
。
若要部署 GroupVersion
,其必須參考其中僅包含一個 Core
的 CoreDefinitionVersion
。所有參考的實體都必須是該群組的成員。此外,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 函數。
另請參閱
-
AWS IoT Greengrass《指令參考》中的指AWS CLI令