将 Amazon IoT Greengrass 组部署到 Amazon IoT Greengrass 核心 - Amazon IoT Greengrass
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

您正在查看Amazon IoT Greengrass Version 1.Amazon IoT Greengrass Version 2是最新的主要版本Amazon IoT Greengrass. 有关使用Amazon IoT Greengrass V2,请参阅Amazon IoT Greengrass Version 2开发人员指南.

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

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

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

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

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


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

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

从 中部署组Amazon IoT控制台

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


                                    Greengrass 组的部署页面。
注意

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

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

查看组的的部署历史记录

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

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

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

重新部署组部署

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

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

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

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

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

  • 操作中,选择重置部署

使用 Amazon IoT Greengrass API 部署组

Amazon IoT Greengrass API 提供了以下操作,可用于部署 Amazon IoT Greengrass 组和管理组部署。您可以从 Amazon CLI、Amazon IoT Greengrass API 或 Amazon 开发工具包中调用这些操作。

操作 描述

CreateDeployment

创建 NewDeploymentRedeployment 部署。

如果当前部署失败,您可能希望重新部署一个部署。或者,您可能希望重新部署,以恢复到另一个组版本。

GetDeploymentStatus

返回部署的状态:BuildingInProgressSuccessFailure

您可以配置 Amazon EventBridge 事件以接收部署通知。有关更多信息,请参阅获取部署通知

ListDeployments

返回组的部署历史记录。

ResetDeployments

重置组的部署。

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

注意

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

获取组 ID

组 ID 通常用于 API 操作中。您可以使用 ListGroups 操作从组列表中查找目标组的 ID。例如,在 Amazon 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 结合使用。

注意

您还可以在中找到这些值。Amazon 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" }, ... ] }

如果您未指定 Amazon Web Services 区域 、Amazon CLI命令使用您的配置文件中的默认区域。要返回不同区域中的组,请包含区域选项。例如:

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

Amazon IoT Greengrass 组对象模型概述

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

Groups

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


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

组版本

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


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

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

  • 包含所需核心的 CoreDefinitionVersion

  • 包含三个函数的 FunctionDefinitionVersion

  • 包含设备的 DeviceDefinitionVersion

  • 包含两个订阅的 SubscriptionDefinitionVersion

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

组组件

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

  • A定义,它引用了DefinitionVersion给定类型的对象。例如,DeviceDefinition 引用 DeviceDefinitionVersion 对象的列表。

  • 包含一组指定类型的实体的 DefinitionVersion。例如,DeviceDefinitionVersion 包含 Device 对象的列表。

  • 用于定义其属性和行为的各个实体。例如,Device 用于定义 Amazon IoT 注册表中相应设备的 ARN、其设备证书的 ARN,以及其本地影子是否自动与云同步。

    您可以向组中添加以下类型的实体:

以下示例 DeviceDefinition 会引用三个 DeviceDefinitionVersion 对象,每个都包含多个 Device 对象。一个组中一次只使用一个 DeviceDefinitionVersion


                                设备层次结构示意图,其中包含 DeviceDefinition、DeviceDefinitionVersion 和 Device 对象。

更新组

在 Amazon IoT Greengrass API 中,您可以使用多个版本更新组的配置。版本是不变的,因此,若要添加、删除或更改组组件,必须创建包含新实体或已更新实体的 DefinitionVersion 对象。

您可以将新 DefinitionVersions 对象与新的或现有的 Definition 对象相关联。例如,您可以使用 CreateFunctionDefinition 操作来创建 FunctionDefinition(其中包含作为初始版本的 FunctionDefinitionVersion),也可以使用 CreateFunctionDefinitionVersion 操作并引用现有 FunctionDefinition

在创建组组件后,创建一个 GroupVersion,其中包含要包含在组中的所有 DefinitionVersion 对象。然后,部署 GroupVersion

要部署 GroupVersion,则必须引用包含一个 CoreCoreDefinitionVersion。所有引用的实体必须是组的成员。另外,Greengrass 服务角色必须与 Amazon Web Services 账户 中的 Amazon Web Services 区域 在其中部署GroupVersion.

注意

API 中的 Update 操作用于更改 Group 或组件 Definition 对象的名称。

更新引用的实体Amazonresources

Greengrass Lambda 函数和密钥资源定义 Greengrass 特定属性,并引用相应的Amazon资源的费用。要更新这些实体,您可以更改相应的Amazon资源,而不是您的 Greengrass 对象。例如,Lambda 函数引用Amazon Lambda并且定义特定于 Greengrass 组的生命周期和其他属性。

  • 要更新 Lambda 函数代码或打包依赖项,请在Amazon Lambda. 在检索下一组部署的过程中,会从 Amazon Lambda 中检索这些更改并将其复制到您的本地环境中。

  • 要更新 Greengrass 特定的属性,您可以创建一个包含已更新 Function 属性的 FunctionDefinitionVersion

注意

Greengrass Lambda 函数可以通过别名 ARN 或版本 ARN 引用 Lambda 函数。如果您引用别名 ARN(推荐),则在 Amazon Lambda 中发布新的函数版本时不需要更新 FunctionDefinitionVersion(或 SubscriptionDefinitionVersion)。有关更多信息,请参阅按别名或版本引用 Lambda 函数

另请参阅