Lambda 函数终于不用跟 S3 对象做上传下载的"搬运工"了。S3 Files 让 Serverless 函数直接把 S3 桶当本地磁盘用,这对 AI Agent 多步工作流的影响比想象中大。
背景
2026 年 4 月底,亚马逊云科技发布了 S3 Files——让 Lambda 函数可以将 S3 桶挂载为 POSIX 文件系统。这个功能底层基于 EFS 协议,但暴露的是 S3 的存储模型和成本结构。
对于跑 AI Agent 流水线的团队来说,这解决了一个长期痛点:多步骤之间的数据传递不再需要 S3 SDK 胶水代码。
核心设计
Lambda 函数 A ─→ /mnt/workspace ─→ S3 Files ─→ S3 桶
Lambda 函数 B ─→ /mnt/workspace ─→ S3 Files ─→ 同一个桶
Lambda 函数 C ─→ /mnt/workspace ─→ S3 Files ─→ 同一个桶
三个函数看到的是同一个文件系统视图。A 写的文件,B 和 C 立刻能读到。
关键特性:
- 标准 POSIX 操作(open/read/write/stat/listdir)
- 多 Lambda 实例并发挂载
- 无需 VPC 配置
- 容量无上限(跟 S3 桶一样)
- 无额外费用(只有 S3 标准存储费)
实际配置
1. 启用桶的 S3 Files 功能
aws s3api put-bucket-file-configuration \--bucket agent-workspace-prod \--file-configuration '{"Status": "Enabled"}'
2. Lambda 挂载配置
aws lambda update-function-configuration \--function-name multi-agent-orchestrator \--file-system-configs '[{"Arn": "arn:aws:s3:::agent-workspace-prod","LocalMountPath": "/mnt/workspace"}]'
3. IAM 策略
{"Version": "2012-10-17","Statement": [{"Effect": "Allow","Action": ["s3:GetObject", "s3:PutObject", "s3:ListBucket", "s3:DeleteObject"],"Resource": ["arn:aws:s3:::agent-workspace-prod", "arn:aws:s3:::agent-workspace-prod/*"]},{"Effect": "Allow","Action": ["elasticfilesystem:ClientMount", "elasticfilesystem:ClientWrite"],"Resource": "*"}]
}
4. SAM 模板(IaC 方式)
Resources:OrchestratorFunction:Type: AWS::Serverless::FunctionProperties:Runtime: python3.12Handler: orchestrator.handlerTimeout: 600MemorySize: 2048FileSystemConfigs:- Arn: !Sub "arn:aws:s3:::${WorkspaceBucket}"LocalMountPath: /mnt/workspacePolicies:- S3FullAccessPolicy:BucketName: !Ref WorkspaceBucketAnalyzerFunction:Type: AWS::Serverless::FunctionProperties:Runtime: python3.12Handler: analyzer.handlerFileSystemConfigs:- Arn: !Sub "arn:aws:s3:::${WorkspaceBucket}"LocalMountPath: /mnt/workspace
AI Agent 流水线案例
代码审查 Agent 流水线:一个编排函数 + 三个专项分析 Agent。
# orchestrator.py
import subprocess, json, osdef handler(event, context):workspace = '/mnt/workspace'repo_dir = f'{workspace}/repos/{event["repo_name"]}'# Clone 到共享目录subprocess.run(['git', 'clone', '--depth', '1', event['repo_url'], repo_dir])# 写任务文件,分析 Agent 读取task = {'repo_path': repo_dir,'files': [f for f in os.listdir(repo_dir) if f.endswith('.py')],'analysis_output': f'{workspace}/results/{event["repo_name"]}'}os.makedirs(task['analysis_output'], exist_ok=True)with open(f'{workspace}/tasks/{event["repo_name"]}.json', 'w') as f:json.dump(task, f)return {'task_path': f'{workspace}/tasks/{event["repo_name"]}.json'}
三个分析 Agent 各自读 /mnt/workspace/repos/xxx 下的源码,分析结果写到 /mnt/workspace/results/xxx/ 下不同文件。最后汇总函数读所有结果生成报告。
整个流程零 S3 SDK 调用,纯文件操作。
与 Durable Functions 协同
Lambda Durable Functions(4 月初发布)提供多步编排 + checkpoint 能力。配合 S3 Files:
- Durable Functions:控制流(顺序/并行/重试/checkpoint)
- S3 Files:数据流(读写共享)
某步失败后 checkpoint 恢复,前序步骤的输出文件仍在共享目录中,不需要重新执行。
性能与成本
| 对比项 | S3 GET/PUT | EFS | S3 Files |
|---|---|---|---|
| 10GB/月存储 | $0.23 + API费 | $3 | $0.23 |
| 并发读写 | 需要代码同步 | 原生支持 | 原生支持 |
| 需要 VPC | 否 | 是 | 否 |
| 冷启动影响 | 无 | +500ms | +200-500ms |
| 容量限制 | 无 | 需预估 | 无 |
注意事项
- Capacity Provider 模式的 Lambda 暂不支持 S3 Files
- 首次挂载有冷启动开销(200-500ms)
- 并发写同一文件是 last-writer-wins,生产环境用目录隔离
- S3 Files 目前在 Lambda 和 S3 Files 同时可用的区域支持
总结
S3 Files 把 Serverless 函数间的数据共享从"API 调用"变成了"文件操作"。对 AI Agent 流水线,最直接的收益是:
- 砍掉所有 S3 上传下载的胶水代码
- 多 Agent 并行共享工作区零额外开发
- 成本降到纯 S3 存储费(比 EFS 低一个数量级)
十分钟配置,零业务代码改动。
配置在亚马逊云科技 us-west-2 验证通过。参考文档:Lambda S3 Files Developer Guide
