View a markdown version of this page

配置 Amazon S3 Files 访问权限 - AWS Lambda

配置 Amazon S3 Files 访问权限

Amazon S3 Files 提供共享文件系统,可将任意 AWS 计算资源与 Amazon S3 内的数据直接连通。Amazon S3 Files 通过本地挂载路径上的读取、写入等标准文件系统操作,将 Amazon S3 对象作为文件进行访问。了解有关 Amazon S3 Files 的更多信息。

先决条件和设置

在为 Lambda 函数设置 Amazon S3 Files 之前,务必先满足以下条件:

  • 拥有处于可用状态的 Amazon S3 文件系统和挂载目标,且与 Lambda 函数属于同一账户及 AWS 区域。

  • Lambda 函数与挂载目标处于同一 VPC。函数部署所在的每个子网内均配置挂载目标。

  • 安全组允许 Lambda 函数与挂载目标之间的 NFS 流量(端口 2049)。了解有关配置安全组的更多信息

有关更多信息,请参阅《Amazon S3 用户指南》中的以下主题:

执行角色和用户权限

函数执行角色需具备以下权限,方可访问 Amazon S3 Files 文件系统:

执行角色权限
  • s3files:ClientMount:挂载文件系统必需权限。

  • s3files:ClientWrite:读写访问所必需的。读写访问必需权限。只读连接无需此项。

这些权限包含在 AmazonS3FilesClientReadWriteAccess 托管式策略中。此外,您的执行角色必须具有连接到文件系统的 VPC 所需的权限

注意

Amazon S3 Files 通过直接从 Amazon S3 存储桶流式传输符合条件的读取请求来优化吞吐量。默认情况下,配置了 512 MB 或更多内存的函数将启用直接读取。有关更多信息,请参阅 配置直接读取

函数若要从 Amazon S3 直接读取,还需具备以下权限:

  • s3:GetObject

  • s3:GetObjectVersion

有关必要权限的更多信息,请参阅《Amazon S3 用户指南》中的 Amazon S3 Files 的 IAM 权限

在控制台配置文件系统时,Lambda 会使用您的权限来验证挂载目标和接入点。要配置函数以连接到文件系统,您的用户需要以下权限:

用户权限
  • s3files:ListFileSystems

  • s3files:ListAccessPoints

  • s3files:GetFileSystem

  • s3files:GetAccessPoint

  • s3files:CreateAccessPoint:从控制台为函数挂载文件系统时,需要该权限。

以下示例策略可为函数执行角色授予权限,以挂载具有读写访问权限的 Amazon S3 文件系统,并直接从 Amazon S3 读取数据。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "S3FilesLambdaAccess", "Effect": "Allow", "Action": [ "s3files:ClientMount", "s3files:ClientWrite" ], "Resource": "*" }, { "Sid": "S3DirectRead", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": "arn:aws:s3:::bucket-name/*" }, { "Sid": "S3FilesConsoleSetup", "Effect": "Allow", "Action": [ "s3files:ListFileSystems", "s3files:ListAccessPoints", "s3files:GetFileSystem", "s3files:GetAccessPoint", "s3files:CreateAccessPoint" ], "Resource": "*" } ] }

连接到文件系统(控制台)

函数通过 VPC 中的本地网络连接到文件系统。函数连接到的子网可以是包含文件系统挂载点的相同子网,也可以是位于同一可用区中的子网,这些子网可以将 NFS 流量(端口 2049)路由到文件系统。

注意

如果函数尚未连接到 VPC,请参阅授予 Lambda 函数访问 Amazon VPC 中资源的权限

配置 S3 Files 访问权限
  1. 打开 Lamba 控制台的函数页面。

  2. 选择函数。

  3. 选择配置,然后选择文件系统

  4. 选择添加文件系统(或选择编辑,修改现有配置)。

  5. 选择 S3 Files

  6. 配置以下属性:

    • S3 文件系统:从下拉列表中选择文件系统。

    • 接入点(可选):选择接入点。如果文件系统没有接入点,Lambda 会在您保存时自动创建一个访问点(UID/GID 为 1000:1000,根目录为 /lambda,权限为 755)。如果存在接入点,则必须选择一个。

    • Local mount path(本地挂载路径) – 文件系统在 Lambda 函数上的挂载位置,以 /mnt/ 开头。

    • 高级配置

      • 直接 S3 读取:控制 Lambda 是否可以直接从 Amazon S3 存储桶流式传输符合条件的读取,以获得更高吞吐量。有关更多信息,请参阅 配置直接读取

  7. 选择 Save

下次调用 Lambda 函数时,将会挂载您的文件系统。

配置直接读取

直接读取通过直接从 Amazon S3 存储桶流式传输数据来优化吞吐量。当进行大量读取,或文件系统的高性能存储无法保存文件数据时,Lambda 会使用直接读取。有关更多信息,请参阅 S3 Files 如何提供性能。此可选配置是函数 FileSystemConfigs 的一部分,仅适用于 Amazon S3 Files 系统。DirectS3Read 设置接受以下值:

  • AUTO(默认):为配置了 512 MB 或更多内存的函数启用直接读取。

  • ENABLED:为函数启用直接读取,包括内存小于 512 MB 的函数。

  • DISABLED:通过文件系统的高性能存储路由所有读取。

注意

如果直接读取失败,Lambda 会自动回退到通过文件系统读取。

要使用直接读取,函数的执行角色必须具有所需的权限。有关更多信息,请参阅 Amazon S3 Files 先决条件策略