

# 配置 Lambda 函数的文件系统访问
<a name="configuration-filesystem"></a>

您可以配置函数以将 Amazon Elastic File System (Amazon EFS) 文件系统挂载到本地目录。借助 Amazon EFS，您的函数代码可以安全且高并发地访问和修改共享资源。

## 支持的区域
<a name="configuration-filesystem-supported-regions"></a>

Amazon EFS for Lambda 在除亚太地区（新西兰）、亚太地区（台北）、亚太地区（马来西亚）、墨西哥（中部）、亚太地区（泰国）和加拿大西部（卡尔加里）以外的所有[商业区域](https://docs.aws.amazon.com/general/latest/gr/glos-chap.html#region)可用。

**Topics**
+ [支持的区域](#configuration-filesystem-supported-regions)
+ [执行角色和用户权限](#configuration-filesystem-permissions)
+ [配置文件系统和访问点](#configuration-filesystem-setup)
+ [连接到文件系统（控制台）](#configuration-filesystem-config)

## 执行角色和用户权限
<a name="configuration-filesystem-permissions"></a>

如果文件系统没有用户配置的 AWS Identity and Access Management（IAM）policy，EFS 将使用默认策略，该策略授予对可以使用文件系统挂载目标连接到文件系统的任何客户端的完全访问权限。如果文件系统具有用户配置的 IAM policy，则您的函数的执行角色必须具有正确的 `elasticfilesystem` 权限。

**执行角色权限**
+ **elasticfilesystem:ClientMount**
+ **elasticfilesystem:ClientWrite（只读连接不需要）**

这些权限包含在 **AmazonElasticFileSystemClientReadWriteAccess** 托管式策略中。此外，您的执行角色必须具有[连接到文件系统的 VPC 所需的权限](configuration-vpc.md#configuration-vpc-permissions)。

配置文件系统时，Lambda 使用您的权限来验证挂载目标。要配置函数以连接到文件系统，您的用户需要以下权限：

**用户权限**
+ **elasticfilesystem:DescribeMountTargets**

## 配置文件系统和访问点
<a name="configuration-filesystem-setup"></a>

在 Amazon EFS 中创建一个文件系统，该文件系统在函数连接到的每个可用区都有一个挂载目标。为了获得性能和恢复能力，请至少使用两个可用区。例如，在简单配置中，您可能有一个 VPC 包含两个私有子网，这两个子网位于不同的可用区。函数连接到两个子网，每个子网中都存在一个挂载目标。确保函数和挂载目标使用的安全组允许 NFS 流量（端口 2049）。

**注意**  
创建文件系统时，您可以选择以后无法更改的性能模式。**General purpose (通用)** 模式具有较低的延迟，**Max I/O (最大 I/O)** 模式支持较高的最大吞吐量和 IOPS。如需帮助选择，请参阅 *Amazon Elastic File System 用户指南*中的 [Amazon EFS 性能](https://docs.aws.amazon.com/efs/latest/ug/performance.html)。

访问点将函数的每个实例连接到该实例连接到的可用区的正确装挂目标。为了获得最佳性能，请使用非根路径创建访问点，并限制您在每个目录中创建的文件数。以下示例在文件系统上创建一个名为 `my-function` 的目录，然后将拥有者 ID 设置为 1001 并具有标准目录权限 (755)。

**Example 访问点配置**  
+ **名称** – `files`
+ **User ID**（用户名 ID）– `1001`
+ **Group ID**（组 ID）– `1001`
+ **路径** – `/my-function`
+ **权限** – `755`
+ **Owner user ID**（拥有者用户 ID）– `1001`
+ **Group user ID**（组用户 ID）– `1001`

当函数使用访问点时，它将被赋予用户 ID 1001 并具有对该目录的完全访问权限。

有关更多信息，请参阅 *Amazon Elastic File System 用户指南*中的以下主题：
+ [为 Amazon EFS 创建资源](https://docs.aws.amazon.com/efs/latest/ug/creating-using.html)
+ [使用用户、组和权限](https://docs.aws.amazon.com/efs/latest/ug/accessing-fs-nfs-permissions.html)

## 连接到文件系统（控制台）
<a name="configuration-filesystem-config"></a>

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

**注意**  
如果函数尚未连接到 VPC，请参阅[授予 Lambda 函数访问 Amazon VPC 中资源的权限](configuration-vpc.md)。

**配置文件系统访问**

1. 打开 Lamba 控制台的 [Functions](https://console.aws.amazon.com/lambda/home#/functions)（函数）页面。

1. 选择函数。

1. 选择 **Configuration（配置）**，然后选择 **File systems（文件系统）**。

1. 在 **File system (文件系统)** 下，选择 **Add file system (添加文件系统)**。

1. 配置以下属性：
   + **EFS file system**（EFS 文件系统）– 同一 VPC 中的文件系统的访问点。
   + **Local mount path**（本地挂载路径） – 文件系统在 Lambda 函数上的挂载位置，以 `/mnt/` 开头。

**定价**  
Amazon EFS 对存储和吞吐量收费，费率因存储类别而异。有关详细信息，请参阅 [Amazon EFS 定价](https://aws.amazon.com/efs/pricing)。  
Lambda 对 VPC 之间的数据传输收费。这仅在函数的 VPC 与另一个具有文件系统的 VPC 对等时才适用。费率与同一区域中 VPC 之间的 Amazon EC2 数据传输费率相同。有关详细信息，请参阅 [Lambda 定价](https://aws.amazon.com/lambda/pricing)。