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 功能。根据您的业务需求,还可以向组中添加以下实体:
-
Client 设备. 在 Amazon IoT 注册表中表示为事物。这些设备必须运行FreeRTOS或者使用Amazon IoT设备软件开发工具包要么Amazon IoT Greengrass查找 API以获取核心的连接信息。只有作为组成员的客户端设备才可以连接到核心。
Lambda 函数. 在核心上运行代码的用户定义无服务器应用程序。Lambda 函数是在Amazon Lambda并从Greengrass 组中引用。有关更多信息,请参阅 在Amazon IoT Greengrass核心上运行 Lambda 函数。
连接器。在核心上运行代码的预定义无服务器应用程序。连接器可提供与本地基础设施、设备协议、Amazon,以及其他云服务。有关更多信息,请参阅 使用 Greengrass 连接器与服务和协议集成。
订阅。定义有权进行 MQTT 通信的发布者、订阅者和 MQTT 主题(或对象)。
日志. 为配置日志记录Amazon IoT Greengrass系统组件和 Lambda 函数。有关更多信息,请参阅 利用 Amazon IoT Greengrass 日志进行监控。
您可以管理您的 Greengrass 组Amazon Web Services 云然后将其部署到核心。部署会将组配置复制到核心设备上的 group.json
文件。此文件位于
中:greengrass-root
/ggc/deployments/group

注意
在部署期间,核心设备上的 Greengrass 守护程序进程停止,然后重新启动。
从 中部署组Amazon IoT控制台
您可以从组配置页面中部署组并管理其部署Amazon IoT控制台。
注意
要在控制台中打开此页面,请选择Greengrass 设备,那么组 (V1),然后在Greengrass 组,选择您的组。
- 部署当前版本的组
-
-
在组配置页面上,选择部署.
-
- 查看组的的部署历史记录
-
组的部署历史记录包括每次部署尝试的日期和时间、组版本和状态。
-
在组配置页面上,选择部署选项卡。
-
要查看关于部署的更多信息(包括错误消息),请选择部署来自 的Amazon IoT控制台,在Greengrass 设备.
-
- 重新部署组部署
-
如果当前部署失败,您可能希望重新部署一个部署,或者恢复为不同的组版本。
-
从Amazon IoT控制台,选择Greengrass 设备,然后选择组 (V1).
-
选择部署选项卡。
-
选择您要重新部署的部署,然后选择重新部署.
-
- 重置组部署
-
您可能希望重置组部署以移动或删除组或删除部署信息。有关更多信息,请参阅 重置部署。
-
从Amazon IoT控制台,选择Greengrass 设备,然后选择组 (V1).
-
选择部署选项卡。
-
选择您要重置的部署,然后选择重置部署.
-
使用 Amazon IoT Greengrass API 部署组
Amazon IoT Greengrass API 提供了以下操作,可用于部署 Amazon IoT Greengrass 组和管理组部署。您可以从 Amazon CLI、Amazon IoT Greengrass API 或 Amazon 开发工具包中调用这些操作。
注意
有关批量部署操作的更多信息,请参阅 为组创建批量部署。
获取组 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
和其他组件版本。这些引用可确定组中要包括哪些实体。

例如,要在组中包含三个 Lambda 函数、一个设备和两个订阅,GroupVersion
引用:
包含所需核心的
CoreDefinitionVersion
。包含三个函数的
FunctionDefinitionVersion
。这些区域有:
DeviceDefinitionVersion
其中包含。包含两个订阅的
SubscriptionDefinitionVersion
。
部署到核心设备的 GroupVersion
决定了本地环境中的可用实体及其它们如何进行交互。
组组件
添加到组中的组件具有三级层次结构:
一个定义引用了一份清单DefinitionVersion指定类型的对象。例如,
DeviceDefinition
引用DeviceDefinitionVersion
对象的列表。一个DefinitionVersion其中包含一组指定类型的实体。例如,
DeviceDefinitionVersion
包含Device
对象的列表。用于定义其属性和行为的各个实体。例如,一个
Device
在中定义相应客户端设备的 ARNAmazon IoT注册表、其设备证书的 ARN,以及其本地影子是否自动与云同步。您可以向组中添加以下类型的实体:
以下示例 DeviceDefinition
会引用三个 DeviceDefinitionVersion
对象,每个都包含多个 Device
对象。一个组中一次只使用一个 DeviceDefinitionVersion
。

更新组
在 Amazon IoT Greengrass API 中,您可以使用多个版本更新组的配置。版本是不变的,因此,若要添加、删除或更改组件,必须创建DefinitionVersion包含新实体或更新实体的对象。
您可以在DefinitionVersions具有新的或现有的对象定义对象。例如,您可以使用 CreateFunctionDefinition
操作来创建 FunctionDefinition
(其中包含作为初始版本的 FunctionDefinitionVersion
),也可以使用 CreateFunctionDefinitionVersion
操作并引用现有 FunctionDefinition
。
创建组组件后,您可以创建一个GroupVersion
它包含了所有DefinitionVersion要包含在组中的对象。然后,部署 GroupVersion
。
要部署 GroupVersion
,则必须引用包含一个 Core
的 CoreDefinitionVersion
。所有引用的实体必须是组的成员。另外,一个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 函数。
另请参阅
-
Amazon IoT Greengrass命令中的Amazon CLI命令参考