本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
将 Lambda 函数作为组件导入(控制台)
使用Amazon IoT Greengrass控制台
在开始之前,请查看在 Greengr ass 设备上运行 Lambda 函数的要求。
任务
步骤 1:选择要导入的 Lambda 函数
-
在Amazon IoT Greengrass控制台
导航菜单中,选择组件。 -
在组件页面上,选择创建组件。
-
在创建组件页面的组件信息下,选择导入 Lambda 函数。
-
在 Lambda 函数中,搜索并选择要导入的 Lambda 函数。
Amazon IoT Greengrass创建名为 Lambda 函数的组件。
-
在 Lambda 函数版本中,选择要导入的版本。你不能像这样选择 Lambda 别名。
$LATEST
Amazon IoT Greengrass使用 Lambda 函数的版本作为有效的语义版本创建组件。例如,如果您的函数版本是
3
,则组件版本将变为3.0.0
。
步骤 2:配置 Lambda 函数参数
在创建组件页面的 Lambda 函数配置下,配置用于运行 Lambda 函数的以下参数。
-
(可选)添加 Lambda 函数订阅的工作消息的事件源列表。您可以指定事件源来订阅此函数以订阅本地发布/订阅消息和 Amazon IoT Core MQTT 消息。Lambda 函数在收到来自事件源的消息时被调用。
注意
要将此函数订阅来自其他 Lambda 函数或组件的消息,请在部署此 Lambda 函数组件时部署旧版订阅路由器组件。部署旧版订阅路由器组件时,请指定 Lambda 函数使用的订阅。
在 “事件源” 下,执行以下操作以添加事件源:
-
对于您添加的每个事件源,请指定以下选项:
-
主题-订阅消息的主题。
-
类型-事件源的类型。从以下选项中进行选择:
-
本地发布/订阅-订阅本地发布/订阅消息。
如果您使用 Greengrass nucleus v2.6.0 或更高版本以及 Lambda manager v2.2.5 或更高版本,则在指定此类型时,可以在主题中使用 MQTT 主题通配符(和)。
+
#
-
Amazon IoT CoreMQTT — 订阅 Amazon IoT Core MQTT 消息。
当您指定此类型时,可以在主题中使用 MQTT 主题通配符(
+
和#
)。
-
-
-
要添加其他事件源,请选择添加事件源并重复上一步操作。要移除事件源,请选择要移除的事件源旁边的 “移除”。
-
-
对于超时(秒),输入非固定 Lambda 函数在超时之前可以运行的最大时间(秒)。默认值为 3 秒。
-
对于已固定,请选择是否固定 Lambda 函数组件。默认值为 True。
-
固定的(或长寿命的)Lambda 函数在启动时Amazon IoT Greengrass启动,并在自己的容器中继续运行。
-
非固定(或按需)Lambda 函数仅在收到工作项目时启动,并在指定的最大空闲时间内保持空闲状态后退出。如果该函数有多个工作项,Amazon IoT Greengrass Core 软件将创建该函数的多个实例。
-
-
(可选)在 “其他参数” 下,设置以下 Lambda 函数参数。
-
状态超时(秒)-Lambda 函数组件向 Lambda 管理器组件发送状态更新的间隔(以秒为单位)。此参数仅适用于固定函数。默认值为 60 秒。
-
最大队列大小-Lambda 函数组件的消息队列的最大大小。Amazon IoT GreengrassCore 软件将消息存储在 FIFO(先进先出)队列中,直到它可以运行 Lambda 函数来使用每条消息。默认值为 1,000 条消息。
-
最大实例数-非固定 Lambda 函数可以同时运行的最大实例数。默认值为 100 个实例。
-
最大空闲时间(秒)-在Amazon IoT Greengrass核心软件停止其进程之前,非固定 Lambda 函数可以空闲的最大时间(以秒为单位)。默认值为 60 秒。
-
编码类型-Lambda 函数支持的负载类型。从以下选项中进行选择:
-
JSON
-
二进制
默认值为 JSON。
-
-
-
(可选)指定在 Lambda 函数运行时要传递给 Lambda 函数的命令行参数列表。
-
在 “其他参数” 的 “处理参数” 下,选择 “添加参数”。
-
对于您添加的每个参数,输入要传递给该函数的参数。
-
要删除参数,请选择要删除的参数旁边的 “删除”。
-
-
(可选)指定 Lambda 函数在运行时可用的环境变量。环境变量使您无需更改函数代码即可存储和更新配置设置。
-
在 “其他参数” 的 “环境变量” 下,选择 “添加环境变量”。
-
对于您添加的每个环境变量,请指定以下选项:
-
Key-变量名。
-
值-此变量的默认值。
-
-
要移除环境变量,请选择要移除的环境变量旁边的移除。
-
步骤 3:(可选)为 Lambda 函数指定支持的平台
所有核心设备都具有操作系统和架构的属性。当您部署 Lambda 函数组件时,Amazon IoT GreengrassCore 软件会将您指定的平台值与核心设备上的平台属性进行比较,以确定该设备是否支持 Lambda 函数。
在 Lambda 函数配置下的其他参数 “平台” 下,执行以下操作以指定此 Lambda 函数支持的平台。
-
对于每个平台,请指定以下选项:
-
操作系统-平台操作系统的名称。目前,唯一支持的值是
linux
。 -
架构-平台的处理器架构。支持的值为:
-
amd64
-
arm
-
aarch64
-
x86
-
-
-
要添加其他平台,请选择添加平台并重复上一步操作。要移除支持的平台,请选择要移除的平台旁边的 “移除”。
步骤 4:(可选)为 Lambda 函数指定组件依赖关系
组件依赖关系Amazon可识别您的函数使用的其他由提供的组件或自定义组件。当您部署 Lambda 函数组件时,部署中会包含这些依赖关系供您的函数运行。
重要
要导入您创建的在 Amazon IoT Greengrass V1 上运行的 Lambda 函数,必须为函数使用的功能(例如机密、本地阴影和流管理器)定义各个组件依赖关系。将这些组件定义为硬依赖关系,这样 Lambda 函数组件在依赖关系状态发生变化时会重新启动。有关更多信息,请参阅 导入 V1 Lambda 函数。
在 Lambda 函数配置 “其他参数”、“组件依赖关系” 下,完成以下步骤,为 Lambda 函数指定组件依赖关系。
-
选择 “添加依赖关系”。
-
对于您添加的每个组件依赖关系,请指定以下选项:
-
要移除组件依赖关系,请选择组件依赖关系旁边的 “删除”
步骤 5:(可选)在容器中运行 Lambda 函数
默认情况下,Lambda 函数在Amazon IoT Greengrass核心软件内部的隔离运行时环境中运行。您也可以选择将 Lambda 函数作为不带任何隔离的进程运行(即在 “无容器” 模式下)。
在 Linux 进程配置下,对于隔离模式,从以下选项中进行选择,为您的 Lambda 函数选择容器化:
-
Greengrass 容器 — Lambda 函数在容器中运行。这是默认选择。
-
无容器 — Lambda 函数作为进程运行,没有任何隔离。
如果您在容器中运行 Lambda 函数,请完成以下步骤来配置 Lambda 函数的流程配置。
-
配置容器可用的内存量和系统资源,例如卷和设备。
在 “容器参数” 下,执行以下操作。
-
在内存大小中,输入要分配给容器的内存大小。您可以以 MB 或 K B 为单位指定内存大小。
-
对于只读的 sys 文件夹,请选择容器是否可以读取设备
/sys
文件夹中的信息。默认值为 False。
-
-
(可选)配置容器化 Lambda 函数可以访问的本地卷。定义卷时,Amazon IoT Greengrass Core 软件会将源文件挂载到容器内的目标。
-
在 “卷” 下,选择 “添加卷”。
-
对于您添加的每个卷,请指定以下选项:
-
物理卷-核心设备上源文件夹的路径。
-
逻辑卷-容器中目标文件夹的路径。
-
权限-(可选)从容器访问源文件夹的权限。从以下选项中进行选择:
-
只读-Lambda 函数对源文件夹具有只读访问权限。这是默认选择。
-
读写-Lambda 函数具有对源文件夹的读/写访问权限。
-
-
添加群组所有者 —(可选)是否将运行 Lambda 函数组件的系统群组添加为源文件夹的所有者。默认值为 False。
-
-
要移除卷,请选择要移除的卷旁边的 “移除”。
-
-
(可选)配置容器化 Lambda 函数可以访问的本地系统设备。
-
在 “设备” 下,选择 “添加设备”。
-
对于您添加的每台设备,请指定以下选项:
-
挂载路径-核心设备上系统设备的路径。
-
权限-(可选)从容器访问系统设备的权限。从以下选项中进行选择:
-
只读-Lambda 函数对系统设备具有只读访问权限。这是默认选择。
-
读写-Lambda 函数具有对源文件夹的读/写访问权限。
-
-
添加群组所有者 —(可选)是否将运行 Lambda 函数组件的系统组添加为系统设备的所有者。默认值为 False。
-
-
步骤 6:创建 Lambda 函数组件
为 Lambda 函数组件配置设置后,选择创建以完成新组件的创建。
要在核心设备上运行 Lambda 函数,您可以将新组件部署到核心设备。有关更多信息,请参阅 将Amazon IoT Greengrass组件部署到设备。