终止支持通知: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 核心设备上正确安装本地资源(包括任何所需的驱动程序和库),并且该资源在使用期间持续可用。
-
所需的资源操作以及对资源的访问不得要求根权限。
-
只有
read或read 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 一般参考》中的资源服务限额