使用 Lambda 函数和连接器访问本地资源 - Amazon IoT Greengrass
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

终止支持通知:2026 年 10 月 7 日, Amazon 将停止对的支持。 Amazon IoT Greengrass Version 1 2026 年 10 月 7 日之后,您将无法再访问这些 Amazon IoT Greengrass V1 资源。如需了解更多信息,请访问迁移自 Amazon IoT Greengrass Version 1

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

使用 Lambda 函数和连接器访问本地资源

此功能适用于 Amazon IoT Greengrass 酷睿 v1.3 及更高版本。

借 Amazon IoT Greengrass助,您可以在云中创作 Amazon Lambda 函数和配置连接器,然后将其部署到核心设备以供本地执行。在运行 Linux 的 Greengrass 核心上,这些本地部署的 Lambda 函数和连接器可以访问 Greengrass 核心设备上实际存在的本地资源。例如,要与通过 Modbus 连接的设备通信 CANbus,或者您可以启用 Lambda 函数来访问核心设备上的串行端口。要配置对本地资源的安全访问,您必须确保物理硬件以及 Greengrass 核心设备操作系统的安全性。

要开始访问本地资源,请查看以下教程:

支持的资源类型

您可以访问两种类型的本地资源:卷资源和设备资源。

卷资源

根文件系统上的文件或目录(/sys/dev/var 中的文件或目录除外)。这些指令包括:

  • 用于在 Greengrass Lambda 函数中读取或写入信息的文件夹或文件(例如,/usr/lib/python2.x/site-packages/local)。

  • 主机的 /proc 文件系统中的文件夹或文件(例如,/proc/net/proc/stat)。在 v1.6 或更高版本中受到支持。有关其他要求,请参阅/proc 目录下的卷资源

提示

要将 /var/var/run/var/lib 目录配置为卷资源,请先将目录挂载到不同的文件夹,然后配置文件夹作为卷资源。

配置卷资源时,您可以指定路径和目标路径。源路径是资源在主机上的绝对路径。目的地路径是资源在 Lambda 命名空间环境内的绝对路径。这是 Greengrass Lambda 函数或连接器在其中运行的容器。对目标路径的任何更改都会反映在主机文件系统上的源路径中。

注意

目标路径中的文件仅在 Lambda 命名空间中可见。您在常规 Linux 命名空间中看不到它们。

设备资源

/dev 下的文件。设备资源只允许 /dev 下的字符设备或块存储设备。这些指令包括:

  • 用于与通过串行端口连接的设备进行通信的串行端口(例如,/dev/ttyS0/dev/ttyS1)。

  • 用于连接 USB 外围设备的 USB(例如,/dev/ttyUSB0/dev/bus/usb)。

  • GPIOs 通过 GPIO 用于传感器和执行器(例如,/dev/gpiomem)。

  • GPUs 用于使用板载加速机器学习 GPUs (例如,/dev/nvidia0)。

  • 用于捕获图像和视频的摄像机(例如,/dev/video0)。

注意

/dev/shm 是一个例外。只能将其配置为卷资源。/dev/shm 下的资源必须授予 rw 权限。

Amazon IoT Greengrass 还支持用于执行机器学习推理的资源类型。有关更多信息,请参阅 执行机器学习推理

要求

以下要求适用于配置对本地资源的安全访问:

  • 您必须使用 Amazon IoT Greengrass 核心软件 v1.3 或更高版本。要为主机的 /proc 目录创建资源,您必须使用 v1.6 或更高版本。

  • 必须在 Greengrass 核心设备上正确安装本地资源(包括任何所需的驱动程序和库),并且该资源在使用期间持续可用。

  • 所需的资源操作以及对资源的访问不得要求根权限。

  • 只有 readread and write 权限可用。Lambda 函数无法对资源执行特权操作。

  • 您必须提供 Greengrass 核心设备的操作系统上的本地资源的完整路径。

  • 资源名称或 ID 的最大长度为 128 个字符,并且必须使用模式 [a-zA-Z0-9:_-]+

/proc 目录下的卷资源

以下注意事项适用于主机的 /proc 目录中的卷资源。

  • 您必须使用 Amazon IoT Greengrass 核心软件 v1.6 或更高版本。

  • 您可以允许 Lambda 函数进行只读访问,但不能进行读写访问。此级别的访问权限由管理 Amazon IoT Greengrass。

  • 您可能还需要授予操作系统组权限以在文件系统中启用读取访问。例如,假设源目录或文件具有 660 文件权限,这意味着仅组中的所有者或用户具有读取(和写入)访问权限。在这种情况下,您必须添加资源的操作系统组所有者权限。有关更多信息,请参阅 组所有者文件访问权限

  • 主机环境和 Lambda 命名空间都包含 a /proc directory, so be sure to avoid naming conflicts when you specify the destination path. For example, if /proc is the source path, you can specify /host-proc 作为目标路径(或除 “/proc” 之外的任何路径名)。

组所有者文件访问权限

L Amazon IoT Greengrass ambda 函数进程通常以和的形式运行。ggc_user ggc_group不过,您可以在本地资源定义中,向 Lambda 函数赋予额外的文件访问权限,如下所示:

  • 要添加拥有资源的 Linux 组的权限,请使用 GroupOwnerSetting#AutoAddGroupOwner 参数或 自动添加拥有资源的 Linux 组的操作系统组权限控制台选项。

  • 要添加不同 Linux 组的权限,请使用 GroupOwnerSetting#GroupOwner 参数或 指定另一个系统组以添加文件系统权限控制台选项。如果 GroupOwnerSetting#AutoAddGroupOwner 为 true,则忽略 GroupOwner 值。

L Amazon IoT Greengrass ambda 函数进程继承ggc_userggc_group、和 Linux 组(如果已添加)的所有文件系统权限。要使 Lambda 函数能够访问资源,Lambda 函数进程必须具有资源的所需权限。如有必要,您可以使用 chmod(1) 命令更改资源的权限。

另请参阅

  • Amazon Web Services 一般参考》中的资源服务限额