将 Lambda 函数作为组件导入(控制台) - AWS IoT Greengrass
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

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

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

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

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

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

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

  2. Components (组件) 页面上,选择 Create component (创建组件)。

  3. Create component (创建组件) 页面上的 Component information (组件信息) 下,选择 Import Lambda function (导入 Lambda 函数)。

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

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

  5. Lambda function version (Lambda 函数版本) 中,选择要导入的版本。您不能选择 Lambda 别名,如 $LATEST

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

步骤 2:配置 Lambda 函数参数

Create component (创建组件) 页面上的 Lambda function configuration (Lambda 函数配置) 下,配置以下参数以用于运行 Lambda 函数。

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

    Event sources (事件源) 下,执行以下操作以添加事件源:

    1. 对于您添加的每个事件源,请指定以下选项:

      • MQTT 主题 – 要订阅消息的主题的名称。

      • 类型 – 事件源的类型。

    2. 要添加另一个事件源,请选择 Add event source (添加事件源),然后重复上一步。要删除事件源,请选择要删除的事件源旁边的 Remove (删除)。

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

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

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

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

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

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

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

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

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

    • Encoding type (编码类型) – Lambda 函数支持的负载的类型。从以下选项中进行选择:

      • JSON

      • 二进制

      默认值为 JSON。

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

    1. Additional parameters (其他参数)、Process arguments (进程参数) 下,选择 Add parameter (添加参数)。

    2. 对于您添加的每个参数,输入要传递到 函数的参数。

    3. 要删除参数,请选择要删除的参数旁边的 Remove (删除)。

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

    1. Additional parameters (其他参数)、Environment variables (环境变量) 下,选择 Add environment variable (添加

    2. 对于您添加的每个环境变量,请指定以下选项:

      • Key – 变量名称。

      • Value – 此变量的默认值。

    3. 要删除环境变量,请选择要删除的环境变量旁边的 Remove (删除)。

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

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

注意

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

Lambda function configuration (Lambda 函数配置)、Additional parameters (其他参数)、Platforms (平台) 下,执行以下操作来指定此 Lambda 函数支持的平台。

  1. 对于每个平台,指定以下选项:

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

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

      • amd64

      • arm

      • aarch64

      • x86

  2. 要添加另一个平台,请选择 Add platform (添加平台),然后重复上一步。要删除受支持的平台,请选择要删除的平台旁边的 Remove (删除)。

步骤 4:(可选)指定 Lambda 函数的组件依赖项

组件依赖项标识 AWS 提供的其他组件或 函数使用的自定义组件。当您部署 Lambda 函数组件时,部署包括这些依赖项以供函数运行。

重要

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

Lambda function configuration (Lambda 函数配置)、Additional parameters (其他参数)、Component dependencies (组件依赖项) 下,完成以下步骤以指定 Lambda 函数的组件依赖项。

  1. 选择 Add dependency (添加依赖项)。

  2. 对于您添加的每个组件依赖项,请指定以下选项:

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

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

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

      • - 如果依赖项更改状态,Lambda 函数组件将重新启动。这是默认选择。

      • – 如果依赖项更改状态,则 Lambda 函数组件不会重新启动。

  3. 要删除组件依赖项,请选择组件依赖项旁边的 Remove (删除)

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

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

Linux process configuration (Linux 进程配置) 下,对于 Isolation mode (隔离模式),从以下选项中选择为您的 Lambda 函数选择容器化:

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

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

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

  1. 配置内存量和系统资源(如 卷和设备)以提供给容器。

    Container parameters (容器参数) 下,执行以下操作。

    1. 对于 Memory size (内存大小),输入要分配给容器的内存大小。您可以指定内存大小 (MBkB)。

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

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

    1. Volumes (卷) 下,选择 Add volume (添加卷)。

    2. 对于您添加的每个卷,请指定以下选项:

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

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

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

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

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

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

    3. 要删除卷,请选择要删除的卷旁边的 Remove (删除)。

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

    1. Devices (设备) 下,选择 Add device (添加设备)。

    2. 对于您添加的每个设备,请指定以下选项:

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

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

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

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

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

步骤 6:创建 Lambda 函数组件

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

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