

终止支持通知：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 core
<a name="deployments"></a>

使用 AWS IoT Greengrass 群组来组织边缘环境中的实体。您也可以使用组来控制组中的实体如何相互交互并与 AWS Cloud交互。例如，只针对本地运行部署组中的 Lambda 函数，仅组中的设备可以使用本地 MQTT 服务器进行通信。

一个组必须包括一个[内核](gg-core.md)，即运行 AWS IoT Greengrass 核心软件的 AWS IoT 设备。核心充当边缘网关，在边缘环境中提供 AWS IoT Core 功能。根据您的业务需求，还可以向组中添加以下实体：
+ **客户端设备**。在 AWS IoT 注册表中表示为事物。这些设备必须运行 [FreeRTOS](https://docs.aws.amazon.com/freertos/latest/userguide/freertos-lib-gg-connectivity.html) 或使用 [AWS IoT 设备开发工具包](what-is-gg.md#iot-device-sdk)或[AWS IoT Greengrass 发现 API](gg-discover-api.md) 来获取核心的连接信息。只有作为组成员的客户端设备才可以连接到核心。
+ **Lambda 函数**。 User-defined 在核心上运行代码的无服务器应用程序。Lambda 函数是在 Greengrass 群 AWS Lambda 组中编写和引用的。有关更多信息，请参阅 [在上运行 Lambda 函数 AWS IoT Greengrass core](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 logs](greengrass-logs-overview.md)。

你可以在中管理你的 Greengrass 群组，然后将其部署 AWS Cloud 到核心。部署会将组配置复制到核心设备上的 `group.json` 文件。此文件位于 `{{greengrass-root}}/ggc/deployments/group` 中：

![部署到核心设备上的 Greengrass 组的云定义。](http://docs.aws.amazon.com/zh_cn/greengrass/v1/developerguide/images/group-deploy.png)


**注意**  
在部署期间，核心设备上的 Greengrass 守护程序进程停止，然后重新启动。

## 从中部署群组 AWS IoT 控制台
<a name="manage-deployments-console"></a>

您可以通过 AWS IoT 控制台中的群组配置页面部署群组并管理其部署。

**注意**  
要在控制台中打开此页面，请依次选择 **Greengrass 设备**和**组 (V1)**，然后在 **Greengrass 组**下选择您的组。

**部署当前版本的组**  
+ 在组配置页面上，选择 **部署**。

**查看组的部署历史记录**  
组的部署历史记录包括每次部署尝试的日期和时间、组版本和状态。  

1. 在组配置页面中，选择**部署**选项卡。

1. 要查看有关部署的更多信息（包括错误消息），请在 AWS IoT 控制台的 **Greengrass** 设备下选择**部署**。

**重新部署组部署**  
如果当前部署失败，您可能希望重新部署一个部署，或者恢复为不同的组版本。  

1. **在 AWS IoT 控制台中，选择 **Greengrass** 设备，然后选择群组 (V1)。**

1. 选择 **部署** 选项卡。

1. 选择要重新部署的部署，然后选择**重新部署**。

**重置组部署**  
您可能希望重置组部署以移动或删除组或删除部署信息。有关更多信息，请参阅 [重置部署](reset-deployments-scenario.md)。  

1. **在 AWS IoT 控制台中，选择 **Greengrass** 设备，然后选择群组 (V1)。**

1. 选择 **部署** 选项卡。

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 调用这些操作。


| 处理建议 | 说明 | 
| --- | --- | 
| [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，请使用群组 ID 和[ListGroupVersions](https://docs.aws.amazon.com/greengrass/v1/apireference/listgroupversions-get.html)。

**注意**  
<a name="find-group-ids-console"></a>您也可以在 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 命令将使用您个人资料中的默认区域。要返回不同地区的群组，请添加{{region}}选项。例如：

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

## 概述 AWS IoT Greengrass 群组对象模型
<a name="api-overview"></a>

在使用 AWS IoT Greengrass API 进行编程时，理解 Greengrass 群组对象模型会很有帮助。

### 组
<a name="api-overview-groups"></a>

在 AWS IoT Greengrass API 中，顶级`Group`对象由元数据和`GroupVersion`对象列表组成。 `GroupVersion`对象与 b `Group` y ID 相关联。

![组的示意图，包含元数据和组版本的列表。](http://docs.aws.amazon.com/zh_cn/greengrass/v1/developerguide/images/om-group.png)


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

`GroupVersion` 对象可定义组成员资格。每个 `GroupVersion` 通过 ARN 引用一个 `CoreDefinitionVersion` 和其他组件版本。这些引用可确定组中要包括哪些实体。

![通过 ARN 引用其他版本类型的组版本的示意图。](http://docs.aws.amazon.com/zh_cn/greengrass/v1/developerguide/images/om-groupversion.png)


例如，要在组中包含三个 Lambda 函数、一个设备和两个订阅，`GroupVersion` 引用：
+ 包含所需核心的 `CoreDefinitionVersion`。
+ 包含三个函数的 `FunctionDefinitionVersion`。
+ 包含客户端设备的 `DeviceDefinitionVersion`。
+ 包含两个订阅的 `SubscriptionDefinitionVersion`。

部署到核心设备的 `GroupVersion` 决定了本地环境中的可用实体及其它们如何进行交互。

### 组组件
<a name="api-overview-group-components"></a>

添加到组中的组件具有三级层次结构：
+ 引用给定类型*DefinitionVersion*对象列表的*定义*。例如，`DeviceDefinition` 引用 `DeviceDefinitionVersion` 对象的列表。
+ *DefinitionVersion*包含一组给定类型的实体的类型。例如，`DeviceDefinitionVersion` 包含 `Device` 对象的列表。
+ 用于定义其属性和行为的各个实体。例如，a `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)
  + [设备](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)
  + [资源](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、和设备对象组成。](http://docs.aws.amazon.com/zh_cn/greengrass/v1/developerguide/images/om-devicedefinition.png)


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

在 AWS IoT Greengrass API 中，您可以使用版本来更新群组的配置。版本是不可变的，因此要添加、移除或更改组组件，必须创建包含新的或更新的实*DefinitionVersion*体的对象。

您可以将新*DefinitionVersions*对象与新的或现有的*定义*对象相关联。例如，您可以使用 `CreateFunctionDefinition` 操作来创建 `FunctionDefinition`（其中包含作为初始版本的 `FunctionDefinitionVersion`），也可以使用 `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-specific 。 AWS 要更新这些实体，您可以更改相应的 AWS 资源，而不是 Greengrass 对象。例如，Lambda 函数引用了中的 AWS Lambda 函数，还定义了生命周期和其他特定于 Greengrass 组的属性。
+ 要更新 Lambda 函数代码或打包依赖项，请在 AWS Lambda中进行更改。在下次群组部署期间，这些更改将从您的本地环境中检索 AWS Lambda 并复制到您的本地环境中。
+ 要更新[Greengrass-specific 属性](lambda-group-config.md)，请创建`FunctionDefinitionVersion`包含更新的`Function`属性的一个。

**注意**  
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 命令*