

终止支持通知：2026 年 10 月 7 日， Amazon 将停止对的支持。 Amazon IoT Greengrass Version 1 2026 年 10 月 7 日之后，您将无法再访问这些 Amazon IoT Greengrass V1 资源。如需了解更多信息，请访问[迁移自 Amazon IoT Greengrass Version 1](https://docs.amazonaws.cn/greengrass/v2/developerguide/migrate-from-v1.html)。

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

# 使用 Lambda 函数和连接器访问本地资源
<a name="access-local-resources"></a>

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

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

要开始访问本地资源，请查看以下教程：
+ [如何使用 Amazon 命令行界面配置本地资源访问权限](lra-cli.md)
+ [如何使用配置本地资源访问权限 Amazon Web Services 管理控制台](lra-console.md)

## 支持的资源类型
<a name="lra-resource-types"></a>

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

**卷资源**  
根文件系统上的文件或目录（`/sys`、`/dev` 或 `/var` 中的文件或目录除外）。这些方法包括：  
+ 用于在 Greengrass Lambda 函数中读取或写入信息的文件夹或文件（例如，`/usr/lib/python2.x/site-packages/local`）。
+ 主机的 /proc 文件系统中的文件夹或文件（例如，`/proc/net` 或 `/proc/stat`）。在 v1.6 或更高版本中受到支持。有关其他要求，请参阅[/proc 目录下的卷资源](#lra-proc-resources)。
要将 `/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 还支持用于执行机器学习推理的资源类型。有关更多信息，请参阅 [执行机器学习推理](ml-inference.md)。

## 要求
<a name="lra-requirements"></a>

以下要求适用于配置对本地资源的安全访问：
+ 您必须使用 Amazon IoT Greengrass 核心软件 v1.3 或更高版本。要为主机的 /proc 目录创建资源，您必须使用 v1.6 或更高版本。
+ 必须在 Greengrass 核心设备上正确安装本地资源（包括任何所需的驱动程序和库），并且该资源在使用期间持续可用。
+ 所需的资源操作以及对资源的访问不得要求根权限。
+ 只有 `read` 或 `read and write` 权限可用。Lambda 函数无法对资源执行特权操作。
+ 您必须提供 Greengrass 核心设备的操作系统上的本地资源的完整路径。
+ 资源名称或 ID 的最大长度为 128 个字符，并且必须使用模式 `[a-zA-Z0-9:_-]+`。

### /proc 目录下的卷资源
<a name="lra-proc-resources"></a>

以下注意事项适用于主机的 /proc 目录中的卷资源。
+ 您必须使用 Amazon IoT Greengrass 核心软件 v1.6 或更高版本。
+ 您可以允许 Lambda 函数进行只读访问，但不能进行读写访问。此访问级别由管理 Amazon IoT Greengrass。
+ 您可能还需要授予操作系统组权限以在文件系统中启用读取访问。例如，假设源目录或文件具有 660 文件权限，这意味着仅组中的所有者或用户具有读取（和写入）访问权限。在这种情况下，您必须添加资源的操作系统组所有者权限。有关更多信息，请参阅 [组所有者文件访问权限](#lra-group-owner)。
+ 主机环境和 Lambda 命名空间均包含 /proc 目录，因此，请务必在指定目标路径时避免命名冲突。例如，如果 /proc 是源路径，您可以将 /host-proc 指定为目标路径（或“*/proc*”以外的任何路径名称）。

## 组所有者文件访问权限
<a name="lra-group-owner"></a>

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_user``ggc_group`、和 Linux 组（如果已添加）的所有文件系统权限。要使 Lambda 函数能够访问资源，Lambda 函数进程必须具有资源的所需权限。如有必要，您可以使用 `chmod(1)` 命令更改资源的权限。

## 另请参阅
<a name="lra-seealso"></a>
+ 《*Amazon Web Services 一般参考*》中的资源[服务限额](https://docs.amazonaws.cn/general/latest/gr/greengrass.html#limits_greengrass)