AWS IoT Greengrass
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

将 AWS IoT Greengrass 组部署到 AWS IoT Greengrass 核心

AWS IoT Greengrass 组用于组织边缘环境中的实体。组还会控制组中的实体如何相互交互并与 AWS 云交互。例如,只针对本地执行部署组中的 Lambda 函数,仅组中的设备可以使用本地 MQTT 服务器进行通信。

一个组必须包含一个核心,它是一个运行 AWS IoT Greengrass 核心软件的 AWS IoT 设备。网关作为边缘核心,可在边缘环境中提供 AWS IoT 核心功能。根据您的业务需求,还可以向组中添加以下实体:

您可以管理 AWS 云中的 Greengrass 组,然后将其部署到核心。部署会将组配置复制到核心设备上的 group.json 文件。此文件位于 greengrass-root/ggc/deployments/group 中:


                    部署到核心设备上的 Greengrass 组的云定义。

注意

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

从 AWS IoT 控制台 中部署组

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


                                    Greengrass 组的部署页面。

注意

要在控制台中打开此页面,请选择 Greengrass,然后选择您的组。

部署当前版本的组
  • 操作中,选择部署

查看组的的部署历史记录

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

  1. 在导航窗格中,选择部署

  2. 要查看关于部署的更多信息(包括错误消息),请选择包含该部署的行。

重新部署组部署

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

  1. 在导航窗格中,选择部署

  2. 在包含部署的行中,请在状态列中,选择省略号 (),然后选择重新部署

    部署页面,显示部署的“重新部署”操作。
重置组部署

您可能希望重置组部署以移动或删除组或删除部署信息。有关更多信息,请参阅 重置部署

  • 操作中,选择重置部署

使用 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

重置组的部署。

您可能希望重置组部署以移动或删除组或删除部署信息。有关更多信息,请参阅 重置部署

注意

有关批量部署操作的更多信息,请参阅 为组创建批量部署

AWS IoT Greengrass 组对象模型概述

当使用 AWS IoT Greengrass API 编程时,了解 Greengrass 组对象模型很有帮助。

在 AWS IoT Greengrass API 中,顶级 Group 对象包含元数据和 GroupVersion 对象的列表。GroupVersion 对象通过 ID 与 Group 关联。


                                组的示意图,包含元数据和组版本的列表。

组版本

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


                                通过 ARN 引用其他版本类型的组版本的示意图。

例如,要在组中包含三个 Lambda 函数、一个设备和两个订阅,GroupVersion 引用:

  • 包含核心的 CoreDefinitionVersion

  • 包含三个函数的 FunctionDefinitionVersion

  • 包含设备的 DeviceDefinitionVersion

  • 包含两个订阅的 SubscriptionDefinitionVersion

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

组组件

添加到组中的组件具有三级层次结构:

  • 引用指定类型的 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 操作来创建 FunctionDefinition(其中包含作为初始版本的 FunctionDefinitionVersion),也可以使用 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 函数

另请参阅