将 Amazon EFS 与 Lambda 结合使用 - AWS Lambda
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

将 Amazon EFS 与 Lambda 结合使用

Lambda 与 Amazon Elastic File System (Amazon EFS) 集成以支持 Lambda 应用程序的安全共享文件系统访问。您可以配置函数以便在初始化期间通过 VPC 中的本地网络使用 NFS 协议挂载文件系统。Lambda 管理连接并加密进出文件系统的所有流量。

文件系统和 Lambda 函数必须位于同一区域。一个账户中的 Lambda 函数可以挂载另一个账户中的文件系统。在此方案中,您可以在函数 VPC 和文件系统 VPC 之间配置 VPC 对等。

注意

要配置函数以连接到文件系统,请参阅配置 Lambda 函数的文件系统访问

Amazon EFS 支持文件锁定,以防止在多个函数尝试同时写入同一个文件系统时发生损坏。Amazon EFS 中的锁定遵循适用于建议锁定的 NFS v4.1 协议,您的应用程序可以使用整个文件锁定和字节范围锁定。

Amazon EFS 提供了一些选项,可根据应用程序大规模保持高性能的需求来自定义文件系统。有三个主要因素需要考虑:连接数、吞吐量(每秒 MiB)和 IOPS。

配额

有关文件系统配额和限制的详细信息,请参阅 Amazon Elastic File System 用户指南 中的 Amazon EFS 文件系统的配额

要避免扩展、吞吐量和 IOPS 方面的问题,请监控 Amazon EFS 发送到 Amazon CloudWatch 的指标。有关 Amazon EFS 中监控的概述,请参阅 Amazon Elastic File System 用户指南 中的监控 Amazon EFS

小节目录

连接

Amazon EFS 支持每个文件系统最多 25,000 个连接。在初始化期间,函数的每个实例都会创建与其文件系统的单个连接,该连接在调用后保留。这意味着在一个或多个函数连接到文件系统后可能会达到 25,000 并发。要限制函数创建的连接数,请使用预留并发

但是,当您对函数的代码或配置进行大规模更改时,超出当前并发的函数实例数量会暂时增加。Lambda 将预置新实例来处理新请求,因而在旧实例关闭其与文件系统的连接之前会有一些延迟。要避免在部署期间达到最大连接限制,请使用滚动部署。通过滚动部署,您可以在每次进行更改时逐渐将流量转移到新版本。

如果您从其他服务(如 Amazon EC2)连接到同一文件系统,则还应注意 Amazon EFS 中连接的扩展行为。文件系统支持在一次突增中创建最多 3,000 个连接,之后它支持每分钟 500 个新连接。这与 Lambda 中的突增扩展行为相匹配,该行为适用于区域中的所有函数。但是,如果您是在 Lambda 外部创建连接,则函数可能无法全速扩展。

要监控和触发连接警报,请使用 ClientConnections 指标。

吞吐量

在规模上,也可能超过文件系统的最大吞吐量。在突增模式(默认设置)下,文件系统的基准吞吐量较低,随其大小线性扩展。为了允许突增活动,文件系统将获得突增信用,可以使用 100 MiB/s 或更多吞吐量。信用会持续累积,随着每次读写操作而被消耗。如果文件系统用完了信用,则会限制读写操作超出基准吞吐量,这可能会导致调用超时。

注意

如果您使用预置并发,那么即使空闲时,函数也可能会消耗突增信用。使用预置并发时,Lambda 在调用函数之前初始化其实例,并每隔几小时回收一次实例。如果您在初始化期间使用附加文件系统上的文件,则此活动可能会使用所有突增信用。

要监控和触发吞吐量警报,请使用 BurstCreditBalance 指标。当函数的并发较低时,它应该增加;而当函数的并发较高时,它应该减少。如果在低活动期间它总是减少或累积不足以覆盖峰值流量,则可能需要限制函数的并发或启用预置吞吐量

IOPS

每秒输入/输出操作数 (IOPS) 是对文件系统处理的读写操作数量的测量。在通用模式下,IOPS 受到限制,可降低延迟,这对大多数应用程序都是有益的。

要在通用模式下监控 IOPS 并发出警报,请使用 PercentIOLimit 指标。如果此指标达到 100%,则函数在等待读写操作完成期间可能会超时。