

支援終止通知：2026 年 10 月 7 日 AWS 將停止 的支援 AWS IoT Greengrass Version 1。2026 年 10 月 7 日之後，您將無法再存取 AWS IoT Greengrass V1 資源。如需詳細資訊，請造訪[從 遷移 AWS IoT Greengrass Version 1](https://docs.aws.amazon.com/greengrass/v2/developerguide/migrate-from-v1.html)。

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

# 將 AWS IoT Greengrass 群組部署至 AWS IoT Greengrass 核心
<a name="deployments"></a>

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

群組必須包含[核心](gg-core.md)，這是執行 AWS IoT Greengrass Core 軟體 AWS IoT 的裝置。核心可做為邊緣閘道，並在邊緣環境中提供 AWS IoT Core 功能。您也可以根據不同的商務需求，將下列實體新增至群組中：
+ **用戶端裝置**。已表示為 AWS IoT 登錄檔中的物件。這些裝置必須執行 [FreeRTOS](https://docs.aws.amazon.com/freertos/latest/userguide/freertos-lib-gg-connectivity.html) 或使用[AWS IoT 裝置 SDK](what-is-gg.md#iot-device-sdk) 或 [AWS IoT Greengrass Discovery API](gg-discover-api.md) 來取得核心的連線資訊。只有屬於 群組成員的用戶端裝置才能連線到核心。
+ **Lambda 函數**。在核心上執行程式碼的使用者定義無伺服器應用程式。Lambda 函數是在 Greengrass 群組中撰寫 AWS Lambda 和參考。如需詳細資訊，請參閱[在 AWS IoT Greengrass 核心上執行 Lambda 函數](lambda-functions.md)。
+ **連接器**。在核心上執行程式碼的預先定義無伺服器應用程式。連接器可以提供與本機基礎設施、裝置通訊協定 AWS和其他雲端服務的內建整合。如需詳細資訊，請參閱[使用 Greengrass 連接器來整合服務和通訊協定](connectors.md)。
+ **訂閱**。定義專為 MQTT 通訊授權的發佈者、訂閱者和 MQTT 主題 (或主體)。
+ **資源**。參考本機[裝置和磁碟區](access-local-resources.md)、[機器學習模型](ml-inference.md)和[秘密](secrets.md)，用於 Greengrass Lambda 函數和連接器的存取控制。
+ **日誌**。記錄 AWS IoT Greengrass 系統元件和 Lambda 函數的組態。如需詳細資訊，請參閱[使用 AWS IoT Greengrass 日誌監控](greengrass-logs-overview.md)。

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

![部署到核心裝置之 Greengrass 群組的雲端定義。](http://docs.aws.amazon.com/zh_tw/greengrass/v1/developerguide/images/group-deploy.png)


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

## 從 AWS IoT 主控台部署群組
<a name="manage-deployments-console"></a>

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

**注意**  
若要在主控台中開啟此頁面，請選擇 **Greengrass 裝置 **，然後選擇**群組 (V1)**，然後在 **Greengrass 群組**下選擇您的群組。

**部署群組的目前版本**  
+ 在群組組態頁面中，選擇**部署**。

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

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

1. 若要查看部署的詳細資訊，包括錯誤訊息，請在 **Greengrass 裝置**下從 AWS IoT 主控台選擇**部署**。

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

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

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

1. 選擇您要重新部署的部署，然後選擇**重新部署**。

**重設群組部署**  
您可能想要重設群組部署以移動或刪除群組，或是移除部署資訊。如需詳細資訊，請參閱[重設部署](reset-deployments-scenario.md)。  

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

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

1. 選擇您要重設的部署，然後選擇**重設部署**。

## 使用 AWS IoT Greengrass API 部署群組
<a name="manage-deployments-api"></a>

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


| Action | Description | 
| --- | --- | 
| [CreateDeployment](https://docs.aws.amazon.com/greengrass/v1/apireference/createdeployment-post.html) | 建立 `NewDeployment` 或 `Redeployment` 部署。<br />如果目前的部署失敗 , 您可能想要重新部署部署。或者，您可能想要重新部署，將其還原至不同的群組版本。 | 
| [GetDeploymentStatus](https://docs.aws.amazon.com/greengrass/v1/apireference/getdeploymentstatus-get.html) | 傳回部署的狀態：`Building`、`InProgress`、`Success` 或 `Failure`。<br />您可以設定 Amazon EventBridge 事件來接收部署通知。如需詳細資訊，請參閱[取得部署通知](deployment-notifications.md)。 | 
| [ListDeployments](https://docs.aws.amazon.com/greengrass/v1/apireference/listdeployments-get.html) | 傳回群組的部署歷史記錄。 | 
| [ResetDeployments](https://docs.aws.amazon.com/greengrass/v1/apireference/resetdeployments-post.html) | 重設群組的部署。<br />您可能想要重設群組部署以移動或刪除群組，或是移除部署資訊。如需詳細資訊，請參閱[重設部署](reset-deployments-scenario.md)。 | 

**注意**  
如需大量部署操作的詳細資訊，請參閱[建立群組的大量部署](bulk-deploy-cli.md)。

### 取得群組 ID
<a name="api-get-group-id"></a>

群組 ID 通常用於 API 動作。您可以使用 [ListGroups](https://docs.aws.amazon.com/greengrass/v1/apireference/listgroups-get.html) 動作，從群組清單中尋找目標群組的 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](https://docs.aws.amazon.com/greengrass/v1/apireference/listgroupversions-get.html) 的群組 ID。

**注意**  
<a name="find-group-ids-console"></a>您也可以在 AWS IoT 主控台中找到這些值。群組 ID 會顯示在群組的 **Settings (設定)** 頁面上。群組版本 IDs會顯示在群組的**部署**索引標籤上。

```
{
    "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 群組物件模型概觀
<a name="api-overview"></a>

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

### Groups (群組)
<a name="api-overview-groups"></a>

在 AWS IoT Greengrass API 中，最上層`Group`物件包含中繼資料和`GroupVersion`物件清單。 `GroupVersion` 物件會`Group`依 ID 與 建立關聯。

![群組的圖表，其中包含中繼資料和群組版本的清單。](http://docs.aws.amazon.com/zh_tw/greengrass/v1/developerguide/images/om-group.png)


### 群組版本
<a name="api-overview-versions"></a>

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

![依 ARN 參考其他版本類型的群組版本圖表。](http://docs.aws.amazon.com/zh_tw/greengrass/v1/developerguide/images/om-groupversion.png)


例如，若要在群組中包含三個 Lambda 函數、一個裝置和兩個訂閱，`GroupVersion`請參考：
+ `CoreDefinitionVersion`，其中包含必要核心。
+ `FunctionDefinitionVersion`，其中包含三個函數。
+ `DeviceDefinitionVersion` 包含用戶端裝置的 。
+ `SubscriptionDefinitionVersion`，其中包含兩個訂閱。

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

### 群組元件
<a name="api-overview-group-components"></a>

您新增至群組的元件分為三層：
+ *Definition (定義)*，其會參考指定類型之 *DefinitionVersion* 物件清單。例如，`DeviceDefinition` 會參考 `DeviceDefinitionVersion` 物件的清單。
+ *DefinitionVersion*，其中包含一組指定類型的實體。例如，`DeviceDefinitionVersion` 包含了 `Device` 物件的清單。
+ 定義其屬性和行為的個別實體。例如， `Device`定義 AWS IoT 登錄檔中對應用戶端裝置的 ARN、其裝置憑證的 ARN，以及其本機影子是否自動與雲端同步。

  您可以將下列類型的實體新增至群組：
  + [連接器](https://docs.aws.amazon.com/greengrass/v1/apireference/definitions-connector.html)
  + [核心](https://docs.aws.amazon.com/greengrass/v1/apireference/definitions-core.html)
  + [Device](https://docs.aws.amazon.com/greengrass/v1/apireference/definitions-device.html)
  + [函數](https://docs.aws.amazon.com/greengrass/v1/apireference/definitions-function.html)
  + [Logger](https://docs.aws.amazon.com/greengrass/v1/apireference/definitions-logger.html)
  + [Resource](https://docs.aws.amazon.com/greengrass/v1/apireference/definitions-resource.html)
  + [訂閱](https://docs.aws.amazon.com/greengrass/v1/apireference/definitions-subscription.html)

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

![裝置階層的圖表，其中包含 DeviceDefinition、DeviceDefinitionVersion 和 Device 物件。](http://docs.aws.amazon.com/zh_tw/greengrass/v1/developerguide/images/om-devicedefinition.png)


### 更新群組
<a name="api-update-groups"></a>

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

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

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

若要部署 `GroupVersion`，其必須參考其中僅包含一個 `Core` 的 `CoreDefinitionVersion`。所有參考的實體都必須是該群組的成員。此外，[Greengrass 服務角色](service-role.md)必須與您部署 AWS 區域 的 AWS 帳戶 中的 相關聯`GroupVersion`。

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

**更新參考 AWS 資源的實體**

Greengrass Lambda 函數和[秘密資源](secrets.md)會定義 Greengrass 特定的屬性，並參考對應的 AWS 資源。若要更新這些實體，您可以變更對應的 AWS 資源，而不是 Greengrass 物件。例如，Lambda 函數參考 中的函數， AWS Lambda 並定義 Greengrass 群組特定的生命週期和其他屬性。
+ 若要更新 Lambda 函數程式碼或封裝相依性，請在其中進行變更 AWS Lambda。在下一次群組部署期間，這些變更會從 擷取 AWS Lambda 並複製到您的本機環境。
+ 若要更新 [Greengrass 特定屬性](lambda-group-config.md)，您可以建立其中包含已更新 `Function` 屬性的 `FunctionDefinitionVersion`。

**注意**  
Greengrass Lambda 函數可以透過別名 ARN 或版本 ARN 來參考 Lambda 函數。如果是參考別名 ARN (建議)，則當您在 AWS Lambda中發佈新的函數版本時，這時不需要更新 `FunctionDefinitionVersion` (或 `SubscriptionDefinitionVersion`)。如需詳細資訊，請參閱[依別名或版本參考 Lambda 函數](lambda-functions.md#lambda-versions-aliases)。

## 另請參閱
<a name="deployments-see-also"></a>
+ [取得部署通知](deployment-notifications.md)
+ [重設部署](reset-deployments-scenario.md)
+ [建立群組的大量部署](bulk-deploy-cli.md)
+ [疑難排解部署問題](gg-troubleshooting.md#gg-troubleshooting-deploymentissues)<a name="see-also-gg-api-cli"></a>
+ [AWS IoT Greengrass Version 1 API 參考](https://docs.aws.amazon.com/greengrass/v1/apireference/)
+ <a name="see-also-gg-cli"></a>[AWS IoT Greengrass 命令](https://docs.aws.amazon.com/cli/latest/reference/greengrass/index.html)*AWS CLI 參考中的 命令*