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

Amazon IoT Greengrass Version 12023 年 6 月 30 日进入延长寿命阶段。有关更多信息,请参阅Amazon IoT Greengrass V1维护政策。在此日期之后,Amazon IoT Greengrass V1不会发布提供功能、增强功能、错误修复或安全补丁的更新。在上运行的设备Amazon IoT Greengrass V1不会受到干扰,将继续运行并连接到云端。我们强烈建议你迁移到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 设备,那么组 (V1),然后在Greengrass 组,选择您的组。

部署当前版本的组
  • 在组配置页面上,选择部署.

查看组的的部署历史记录

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

  1. 在组配置页面上,选择部署选项卡。

  2. 要查看关于部署的更多信息(包括错误消息),请选择部署来自 的Amazon IoT控制台,在Greengrass 设备.

重新部署组部署

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

  1. 从Amazon IoT控制台,选择Greengrass 设备,然后选择组 (V1).

  2. 选择部署选项卡。

  3. 选择您要重新部署的部署,然后选择重新部署.

重置组部署

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

  1. 从Amazon IoT控制台,选择Greengrass 设备,然后选择组 (V1).

  2. 选择部署选项卡。

  3. 选择您要重置的部署,然后选择重置部署.

使用 Amazon IoT Greengrass API 部署组

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

操作 描述

CreateDeployment

创建 NewDeploymentRedeployment 部署。

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

GetDeploymentStatus

返回部署的状态:BuildingInProgressSuccessFailure

您可以配置亚马逊 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 组对象模型很有帮助。

在 Amazon 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在中定义相应客户端设备的 ARNAmazon IoT注册表、其设备证书的 ARN,以及其本地影子是否自动与云同步。

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

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


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

更新组

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

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

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

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

注意

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

更新引用的实体Amazon资源

Greengrass Lambda 函数Secret 资源定义特定于 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 函数

另请参阅