

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# AWS IoT Greengrass V1与AWS IoT Greengrass V2的区别
<a name="greengrass-v1-concept-differences"></a>

AWS IoT Greengrass V2 为设备、实例集和可部署软件引入了新的基本概念。本节介绍了 V2 中不同于 V1 的概念。


**Greengrass 概念和术语**  

| 概念 | AWS IoT Greengrass V1 | AWS IoT Greengrass V2 | 
| --- | --- | --- | 
|  应用程序代码  |  在 AWS IoT Greengrass V1 中，Lambda 函数定义了在核心设备上运行的软件。在每个 Greengrass 组中，您可以定义该函数使用的订阅和本地资源。对于 AWS IoT Greengrass Core 软件在容器化 Lambda 运行时环境中运行的 Lambda 函数，您可以定义容器参数，例如内存限制。  |  在 AWS IoT Greengrass V2 中，*组件*是在核心设备上运行的软件。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/greengrass-v1-concept-differences.html) 您可以将 V1 Lambda 函数作为在 Lambda 运行时环境中运行的组件导入 AWS IoT Greengrass V2。导入 Lambda 函数时，您需要为该函数指定订阅、本地资源和容器参数。有关更多信息，请参阅 [步骤 2：创建和部署 AWS IoT Greengrass V2 组件以迁移 AWS IoT Greengrass V1 应用程序](set-up-v2-test-device.md#run-v1-applications)。 有关如何创建自定义组件的更多信息，请参阅[开发 AWS IoT Greengrass 组件](develop-greengrass-components.md)。  | 
|  AWS IoT Greengrass 组和部署  |  在 AWS IoT Greengrass V1 中，一个组定义了核心设备、该核心设备的设置和软件，以及可以连接到该核心设备的 AWS IoT 事物列表。您可以创建部署以将组的配置发送到核心设备。  |  在 AWS IoT Greengrass V2 中，您可以使用*部署*来定义在核心设备上运行的软件组件和配置。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/greengrass-v1-concept-differences.html) 有关更多信息，请参阅 [将 AWS IoT Greengrass 组件部署到设备](manage-deployments.md)。 在 AWS IoT Greengrass V2 中，您还可以使用 [Greengrass CLI](gg-cli.md) 创建本地部署，以便在开发自定义软件组件的设备上测试这些组件。有关更多信息，请参阅 [创建 AWS IoT Greengrass 组件](create-components.md)。  | 
|  AWS IoT Greengrass Core 软件  |  在 AWS IoT Greengrass V1 中，AWS IoT Greengrass Core 软件是一个包含该软件及其所有功能的单个软件包。您安装 AWS IoT Greengrass Core 软件的边缘设备称为 Greengrass 核心。  |  在 AWS IoT Greengrass V2 中，AWS IoT Greengrass Core 软件是模块化的，因此您可以选择要安装的内容，从而控制内存占用空间。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/greengrass-v1-concept-differences.html)  | 
|  连接器  |  在 AWS IoT Greengrass V1 中，连接器是您部署到 AWS IoT Greengrass V1 核心设备的预置模块，用以与本地基础设施、设备协议、AWS 和其他云服务的交互。  |  在 AWS IoT Greengrass V2 中，AWS 提供了 Greengrass 组件，这些组件实现了 V1 中连接器提供的功能。以下 AWS IoT Greengrass V2 组件提供 Greengrass V1 连接器功能： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/greengrass-v1-concept-differences.html) 有关更多信息，请参阅 [AWS提供的组件](public-components.md)。  | 
|  连接的设备（Greengrass 设备）  |  在 AWS IoT Greengrass V1 中，连接的设备是您添加到 Greengrass 组中的 AWS IoT 事物，用于连接到该组中的核心设备并通过 MQTT 进行通信。每次添加或移除连接的设备时，都必须部署该组。您可以使用订阅在连接的设备、AWS IoT Core 和核心设备上的应用程序之间中继消息。  |  在 AWS IoT Greengrass V2 中，连接的设备称为 Greengrass 客户端设备。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/greengrass-v1-concept-differences.html) 在 AWS IoT Greengrass V1 和 AWS IoT Greengrass V2 中，设备都可以运行 [FreeRTOS](https://docs.aws.amazon.com/freertos/latest/userguide/freertos-lib-gg-connectivity.html)，或使用 [AWS IoT Device SDK](https://docs.aws.amazon.com/iot/latest/developerguide/iot-sdks.html) 或 [Greengrass 发现 API](greengrass-discover-api.md) 来获取有关其可以连接的核心设备的信息。Greengrass 发现 API 向下兼容，因此，如果您的客户端设备连接到 V1 核心设备，则无需更改代码即可将其连接到 V2 核心设备。 有关客户端设备的更多信息，请参阅[与本地 IoT 设备交互](interact-with-local-iot-devices.md)。  | 
|  本地资源  |  在 AWS IoT Greengrass V1 中，在容器中运行的 Lambda 函数可以配置为能够访问核心设备文件系统上的卷和设备。这些文件系统资源称为本地资源。  |  在 AWS IoT Greengrass V2 中，您可以运行以下组件：[Lambda 函数](run-lambda-functions.md)、[Docker 容器](run-docker-container.md)或[本机操作系统进程或自定义运行时](develop-greengrass-components.md)。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/greengrass-v1-concept-differences.html)  | 
|  本地影子服务  |  在 AWS IoT Greengrass V1 中，本地影子服务默认处于启用状态，并且仅支持未命名的经典影子。您可以在 Lambda 函数中使用 AWS IoT Greengrass Core SDK 与设备上的影子进行交互。  |  在 AWS IoT Greengrass V2 中，您可以通过部署影子管理器组件来启用本地影子服务。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/greengrass-v1-concept-differences.html) 有关更多信息，请参阅 [与设备影子交互](interact-with-shadows.md)。  | 
|  订阅  |  在 AWS IoT Greengrass V1 中，您可以为 Greengrass 组定义订阅，指定 Lambda 函数、连接器、连接的设备、AWS IoT Core MQTT 代理和本地影子服务之间的通信渠道。订阅指定 Lambda 函数在何处接收事件消息以作为函数负载。  |  在 AWS IoT Greengrass V2 中，您可以在不使用订阅的情况下指定通信渠道。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/greengrass-v1-concept-differences.html)  | 
|  访问其他 AWS 服务  |  在 AWS IoT Greengrass V1 中，您将一个名为组角色的 AWS Identity and Access Management（IAM）角色附加到 Greengrass 组。该组角色定义了该组核心设备上的 Lambda 函数和 AWS IoT Greengrass 功能用于访问 AWS 服务 的权限。  |  在 AWS IoT Greengrass V2 中，您将 AWS IoT 角色别名附加到 Greengrass 核心设备。角色别名指向称为*令牌交换角色*的 IAM 角色。令牌交换角色定义了核心设备上的 Greengrass 组件用于访问 AWS 服务 的权限。有关更多信息，请参阅 [授权核心设备与 AWS 服务交互](device-service-role.md)。  | 