Amazon EFS 与 Lambda/ECS 的集成模式 - 无服务器中的共享文件系统活用
将 EFS 挂载到 Lambda 函数和 ECS 任务以活用共享文件系统。介绍访问点设计和性能优化。
Lambda 与 EFS 的集成
将 EFS 挂载到 Lambda 函数后,可通过 /mnt 下的路径访问文件系统。Lambda 的 /tmp 目录最大 10 GB,而 EFS 提供实质上无限的存储。适用于大容量机器学习模型、数据集和临时文件的处理。配置需要 Lambda 函数的 VPC 设置(子网、安全组)和 EFS 的文件系统 ID 及访问点。
访问点设计
EFS 访问点是按应用隔离文件系统访问的功能。为每个访问点设置根目录(如 /app1、/app2)和 POSIX 用户(UID/GID),为每个 Lambda 函数分配不同的访问点。函数 A 通过 /mnt/efs 仅访问 /app1 下的内容,函数 B 仅访问 /app2 下的内容。IAM 策略中指定访问点 ARN 进一步限制访问。
ECS 任务集成与性能
在 ECS 任务定义中定义 EFS 卷,在容器定义的 mountPoints 中指定挂载路径。同一任务内的多个容器可共享同一 EFS 卷,可用于 Sidecar 模式中日志收集容器读取应用容器日志文件的配置。性能方面,Lambda 冷启动时 EFS 挂载会增加数百毫秒的额外延迟。使用预置并发可消除冷启动,保持 EFS 连接。
EFS 集成的费用考虑
EFS 费用由存储类别和吞吐量模式决定。Standard 存储每 GB 月费约 0.30 美元,IA(低频访问)约 0.016 美元(截至 2026 年 8 月)。从 Lambda 访问 EFS 需要 Lambda 的 VPC 连接,冷启动时间会增加数秒。EFS 吞吐量在 Elastic 模式下根据访问模式自动扩缩,无需预置。
总结
通过 EFS 与 Lambda/ECS 的集成,无服务器架构也能活用共享文件系统。通过访问点隔离每个应用的根目录和 POSIX 权限,实现 Lambda 函数间的数据共享和大容量文件处理。Intelligent-Tiering 还提供根据访问频率自动优化存储成本的功能。