AWS Lambda

无需管理服务器即可运行代码的无服务器计算服务,采用基于请求数和执行时间的完全按量计费模式

概述

AWS Lambda 是一项无需预置或管理服务器即可运行代码的无服务器计算服务。以 S3 文件上传、API Gateway HTTP 请求、DynamoDB 数据变更等众多 AWS 服务的事件为触发器自动执行函数。支持主流语言运行时,也可通过容器镜像部署。计费按请求次数和执行时间计量,并设有免费额度,具体费率与适用条件请查阅 AWS Lambda 官方定价页面。截至 2026 年 9 月,AWS 官方文档记载单次调用的执行时间上限为 15 分钟,单个函数可分配的内存上限为 10,240 MB。

同步、异步与事件源映射的选型

Lambda 有三种调用模型,需根据工作负载特性选择。同步调用的典型场景是通过 API Gateway 的 HTTP 请求,调用方等待响应。延迟直接影响用户体验,因此抑制冷启动很重要。异步调用用于 S3 事件通知或 SNS 主题触发,Lambda 将事件放入队列后依次处理。失败时自动重试,仍然失败则可发送到死信队列 (SQS 或 SNS)。事件源映射是从 SQS 队列或 Kinesis 流批量获取消息的方式,通过调整批量大小和批量窗口来控制吞吐量与成本的平衡。截至 2026 年 9 月,AWS 官方文档记载并发执行数默认为每区域 1,000,通过提升配额的请求可扩展到数万规模。

冷启动的原因与对策

冷启动是函数执行环境新建时产生的延迟。原因在于运行时初始化、部署包展开、函数代码外的初始化处理 (如建立数据库连接)。最可靠的对策是预置并发 (Provisioned Concurrency),预先预热指定数量的执行环境可减少冷启动的发生。但等待期间也会计费,因此合理做法是仅限于延迟要求严格的场景 (如持续有流量的 API 后端)。Java 运行时可使用 SnapStart 功能,从已初始化的快照恢复可缩短冷启动时间。Azure Functions 也面临类似的冷启动问题,业界提到的对策是选择可保持实例常时预热的计划。各计划的规格 (包括执行时间上限) 会随时间变化,比较两者时请查阅 Microsoft 官方文档中的最新值。

与 Step Functions 的联动及部署策略

对于单个 Lambda 函数无法完成的工作流,Step Functions 非常有效。可定义将多个 Lambda 函数以顺序控制、并行执行、条件分支、错误处理方式编排的状态机,重试策略和超时也可声明式配置。例如图片上传后「生成缩略图 → 提取元数据 → 写入数据库 → 发送通知」作为一系列工作流管理是典型场景。部署推荐使用 AWS SAM 或 Serverless Framework 进行 IaC 管理。在 SAM 模板中统一定义 Lambda 函数、API GatewayDynamoDB 表,纳入 CI/CD 管道可实现从代码变更到部署的自动化。利用函数版本控制和别名,还可实现金丝雀部署或蓝绿部署。

参考资料(AWS 官方)

本页的第一手信息来源是 AWS 官方网站及官方文档。最新的规格与价格请以下列官方页面为准。

如本页内容与官方文档不一致,请以官方文档为准。

分享XB!