将 Lambda 函数作为组件导入(控制台) - AWS IoT Greengrass

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

将 Lambda 函数作为组件导入(控制台)

使用 AWS IoT Greengrass 控制台创建 Lambda 函数组件时,需要导入现有 AWS Lambda 函数,然后将其配置为创建在 Greengrass 设备上运行的组件。

在开始之前,请查看在 Greengrass 设备上运行 Lambda 函数的要求

第 1 步:选择要导入的 Lambda 函数

  1. AWS IoT Greengrass 控制台导航菜单中,选择组件

  2. 组件页面,选择创建组件

  3. 创建组件页面的组件信息下,选择导入 Lambda 函数

  4. Lambda 函数中,搜索并选择要导入的 Lambda 函数。

    AWS IoT Greengrass 使用 Lambda 函数的名称创建组件。

  5. Lambda 函数版本中,选择要导入的版本。您不能选择像 $LATEST 这样 Lambda 别名。

    AWS IoT Greengrass 使用 Lambda 函数版本作为有效语义版本创建组件。例如,如果您的函数版本是 3,则组件版本将变为 3.0.0

第 2 步:配置 Lambda 函数参数

创建组件页面的 Lambda 函数配置下,配置用于运行 Lambda 函数的以下参数。

  1. (可选)添加 Lambda 函数订阅工作消息的事件源列表。您可以指定事件源,将此函数订阅到本地发布/订阅消息收发和 AWS IoT Core MQTT 消息。Lambda 函数在收到来自事件源的消息时会被调用。

    注意

    要将此函数订阅到来自其他 Lambda 函数或组件的消息,请在部署此 Lambda 函数组件时部署旧版订阅路由器组件。部署旧版订阅路由器组件时,请指定 Lambda 函数使用的订阅。

    事件源下,执行以下操作来添加事件源:

    1. 为添加的每个事件源指定以下选项:

      • 主题 – 订阅消息的主题。

      • 类型 – 事件源的类型。从以下选项中进行选择:

        • 发布/订阅消息收发 – 订阅本地发布/订阅消息收发

          如果您使用 Greengrass Nucleus v2.6.0 或更高版本以及 Lambda 管理器 v2.2.5 或更高版本,则在指定此类型时,可以在主题中使用 MQTT 主题通配符(+#)。

        • AWS IoT Core MQTT – 订阅 AWS IoT Core MQTT 消息。

          当您指定此类型时,可以在主题中使用 MQTT 主题通配符(+#)。

    2. (可选)要添加其他事件源,请选择添加源,然后重复上一步骤。要移除事件源,请选择要移除的事件源旁边的移除

  2. 对于超时(秒),输入非固定 Lambda 函数在超时之前可以运行的最大时间量(以秒为单位)。默认值为 3 秒。

  3. 对于固定,请选择是否固定 Lambda 函数组件。默认值为 True

    • 固定(或长时间生存)的 Lambda 函数在 AWS IoT Greengrass 启动后启动并在自己的容器中保持运行。

    • 非固定(或按需)的 Lambda 函数仅在收到工作项时启动,并在空闲达到其指定的最大空闲时间后退出。如果该函数有多个工作项,AWS IoT Greengrass Core 软件将创建该函数的多个实例。

  4. (可选)在其他参数下,设置以下 Lambda 函数参数。

    • 状态超时(秒) – Lambda 函数组件向 Lambda 管理器组件发送状态更新的时间间隔(以秒为单位)。此参数仅适用于固定函数。默认值为 60 秒。

    • 最大队列大小 – Lambda 函数组件的消息队列的最大大小。AWS IoT Greengrass Core 软件将消息存储在 FIFO(先进先出)队列中,直到它可以运行 Lambda 函数来消耗每条消息。默认值为 1000 条消息。

    • 最大实例数 – 非固定 Lambda 函数可以同时运行的最大实例数。默认值为 100 个实例。

    • 最大空闲时间(秒) – 在 AWS IoT Greengrass Core 软件停止其进程之前,非固定 Lambda 函数可以空闲的最长时间(以秒为单位)。默认值为 60 秒。

    • 编码类型 – Lambda 函数支持的有效载荷类型。从以下选项中进行选择:

      • JSON

      • 二进制

      默认值为 JSON。

  5. (可选)指定在 Lambda 函数运行时要传递给该函数的命令行参数列表。

    1. 其他参数 → 进程参数下,选择添加参数

    2. 为添加的每个参数输入要传递给函数的参数。

    3. 要移除参数,请选择要移除的参数旁边的移除

  6. (可选)指定 Lambda 函数运行时可用的环境变量映射。借助环境变量,您无需更改函数代码即可存储和更新配置设置。

    1. 其他参数 → 环境变量下,选择添加环境变量

    2. 为添加的每个环境变量指定以下选项:

      • – 变量名。

      • – 此变量的默认值。

    3. 要移除环境变量,请选择要移除的环境变量旁边的移除

第 3 步:(可选)指定 Lambda 函数支持的平台

所有核心设备都具有操作系统和架构属性。您部署 Lambda 函数组件时,AWS IoT Greengrass Core 软件会将您指定的平台值与核心设备上的平台属性进行比较,以确定该设备是否支持 Lambda 函数。

注意

向核心设备部署 Greengrass Nucleus 组件时,您可以指定自定义平台属性。有关更多信息,请参阅 Greengrass Nucleus 组件平台覆盖参数

Lambda 函数配置 → 其他参数 → 平台下,执行以下操作,来指定此 Lambda 函数支持的平台。

  1. 为每个平台指定以下选项:

    • 操作系统 – 平台操作系统的名称。目前,唯一支持的值是 linux

    • 架构 – 平台的处理器架构。支持的值为:

      • amd64

      • arm

      • aarch64

      • x86

  2. 要添加其他平台,请选择添加平台并重复上一步操作。要移除支持的平台,请选择要移除的平台旁边的移除

第 4 步:(可选)指定 Lambda 函数的组件依赖关系

组件依赖关系可识别您的函数使用的其他由 AWS 提供的组件或自定义组件。部署 Lambda 函数组件时,部署中会包含这些依赖关系,以便函数运行。

重要

要导入您创建的在 AWS IoT Greengrass V1 上运行的 Lambda 函数,必须为函数使用的功能(例如密钥、本地影子和流管理器)定义单独的组件依赖关系。将这些组件定义为硬依赖关系,以便您的 Lambda 函数组件在依赖关系更改状态时重新启动。有关更多信息,请参阅 导入 V1 Lambda 函数

Lambda 函数配置 → 其他参数 → 组件依赖关系下,完成以下步骤,指定 Lambda 函数的组件依赖关系。

  1. 选择添加依赖关系

  2. 为添加的每个组件依赖关系指定以下选项:

    • 组件名称 – 组件名称。例如,输入 aws.greengrass.StreamManager,以包含流管理器组件

    • 版本要求 –npm 样式的语义版本约束,用于标识此组件依赖关系的兼容版本。您可以指定一个版本或一系列版本。例如,输入 ^1.0.0,以指定此 Lambda 函数依赖于流管理器组件第一个主要版本中的任何版本。有关语义版本约束的更多信息,请参阅 npm semver 计算器

    • 类型 – 依赖关系的类型。从以下选项中进行选择:

      • 硬性 – 如果依赖关系更改状态,Lambda 函数组件将会重新启动。这是默认选择。

      • 软性 – 如果依赖关系更改状态,Lambda 函数组件不会重新启动。

  3. 要移除组件依赖关系,请选择该组件依赖关系旁边的移除

第 5 步:(可选)在容器中运行 Lambda 函数

默认情况下,Lambda 函数在 AWS IoT Greengrass Core 软件内的隔离运行时环境中运行。您也可以选择将 Lambda 函数作为一个进程运行,而不进行任何隔离。(即在无容器模式下)。

Linux 进程配置下的隔离模式中,从以下选项中选择 Lambda 函数的容器化:

  • Greengrass 容器 – Lambda 函数在容器中运行。这是默认选择。

  • 无容器 – Lambda 函数作为常规 Linux 进程运行,没有任何隔离。

如果您在容器中运行 Lambda 函数,请完成以下步骤来配置 Lambda 函数的流程配置。

  1. 可以配置内存量和系统资源(例如卷和设备),以供容器使用。

    容器参数下,执行以下操作。

    1. 对于内存大小,请输入要分配给容器的内存大小。您可以以 MBKB 为单位指定内存大小。

    2. 对于只读系统文件夹,请选择容器是否可以从设备的 /sys 文件夹中读取信息。默认值为 False

  2. (可选)配置容器化 Lambda 函数可以访问的本地卷。定义卷时,AWS IoT Greengrass Core 软件会将源文件挂载到容器内的目标。

    1. 下,选择添加卷

    2. 为添加的每个卷指定以下选项:

      • 物理卷 – 核心设备上源文件的夹路径。

      • 逻辑卷 – 容器中目标文件的夹路径。

      • 权限 –(可选)从容器访问源文件夹的权限。从以下选项中进行选择:

        • 只读 – Lambda 函数对源文件夹具有只读访问权限。这是默认选择。

        • 读写 – Lambda 函数对源文件夹具有读/写访问权限。

      • 添加组所有者 –(可选)是否将运行 Lambda 函数组件的系统组添加为源文件夹的所有者。默认值为 False

    3. 要移除卷,请选择要移除的卷旁边的移除

  3. (可选)配置容器化 Lambda 函数可以访问的本地系统设备。

    1. 设备下,选择添加设备

    2. 为添加的每台设备指定以下选项:

      • 挂载路径 – 核心设备上系统设备的路径。

      • 权限 –(可选)从容器访问系统设备的权限。从以下选项中进行选择:

        • 只读 – Lambda 函数对系统设备具有只读访问权限。这是默认选择。

        • 读写 – Lambda 函数对源文件夹具有读/写访问权限。

      • 添加组所有者 –(可选)是否将运行 Lambda 函数组件的系统组添加为系统设备的所有者。默认值为 False

第 6 步:创建 Lambda 函数组件

为 Lambda 函数组件配置设置后,选择创建来完成新组件的创建。

要在核心设备上运行 Lambda 函数,您可以将新组件部署到核心设备。有关更多信息,请参阅 将 AWS IoT Greengrass 组件部署至设备