最适合 Serverless 的五类场景
定时与调度任务
对账、报表、清理、健康巡检。EventBridge Scheduler 触发,不用为 24 小时空转的机器付费。
事件驱动处理
S3 上传触发转码、DynamoDB Stream 触发同步、SQS 消费。天然解耦,流量尖峰自动吸收。
轻量 API
内部工具、Webhook 接收、BFF 层。API Gateway + Lambda 组合,冷启动优化后 p99 可控在 200ms 内。
运维自动化
自动打标签、成本告警处置、快照管理、合规修复。用 Lambda 写运维逻辑比维护跳板机脚本可靠得多。
数据管道编排
Step Functions 编排 Glue、EMR、Athena 任务,可视化状态机 + 自动重试,比 Airflow 轻量。
AI 推理编排
调用 Bedrock 的 RAG 链路、异步批量推理、向量入库。并发弹性和成本模型都很匹配。
冷启动到底要不要担心
结论是:大多数场景不用,少数场景要认真处理。异步任务、事件处理、定时作业,冷启动几百毫秒完全无感。真正需要关注的是面向用户的同步 API。
优化手段按性价比排序:减小部署包体积(用 Lambda Layer 拆分依赖)、选择启动快的运行时(Go / Node.js / Python 优于 JVM 冷启动)、开启 SnapStart(Java)、必要时用预置并发(Provisioned Concurrency)。预置并发有固定成本,只在核心链路上用。
Step Functions 编排示例
{
"Comment": "每日成本报表管道:抽取 → 转换 → 生成 → 通知",
"StartAt": "ExtractCostData",
"States": {
"ExtractCostData": {
"Type": "Task",
"Resource": "arn:aws:states:::lambda:invoke",
"Parameters": {
"FunctionName": "cost-extractor",
"Payload": { "date.$": "$.reportDate" }
},
"Retry": [
{
"ErrorEquals": ["Lambda.ServiceException", "Lambda.TooManyRequestsException"],
"IntervalSeconds": 3,
"MaxAttempts": 4,
"BackoffRate": 2.0
}
],
"Catch": [
{ "ErrorEquals": ["States.ALL"], "Next": "NotifyFailure" }
],
"ResultPath": "$.extract",
"Next": "TransformInParallel"
},
"TransformInParallel": {
"Type": "Map",
"ItemsPath": "$.extract.Payload.accounts",
"MaxConcurrency": 10,
"ItemProcessor": {
"ProcessorConfig": { "Mode": "INLINE" },
"StartAt": "AggregateAccount",
"States": {
"AggregateAccount": {
"Type": "Task",
"Resource": "arn:aws:states:::lambda:invoke",
"Parameters": {
"FunctionName": "cost-aggregator",
"Payload.$": "$"
},
"End": true
}
}
},
"ResultPath": "$.aggregated",
"Next": "RenderReport"
},
"RenderReport": {
"Type": "Task",
"Resource": "arn:aws:states:::lambda:invoke",
"Parameters": {
"FunctionName": "report-renderer",
"Payload.$": "$"
},
"TimeoutSeconds": 300,
"Next": "NotifySuccess"
},
"NotifySuccess": {
"Type": "Task",
"Resource": "arn:aws:states:::sns:publish",
"Parameters": {
"TopicArn": "arn:aws:sns:ap-northeast-1:111122223333:finops-daily",
"Subject": "每日成本报表已生成",
"Message.$": "$.Payload.summary"
},
"End": true
},
"NotifyFailure": {
"Type": "Task",
"Resource": "arn:aws:states:::sns:publish",
"Parameters": {
"TopicArn": "arn:aws:sns:ap-northeast-1:111122223333:finops-alert",
"Subject": "成本报表管道失败",
"Message.$": "$.Cause"
},
"End": true
}
}
}
Map 状态的 MaxConcurrency 别设太高,容易把下游 API 或数据库打满。
成本对照
一个每天跑 4 次、每次 3 分钟的定时任务,用 t3.small 常驻大约每月 ¥110;改成 Lambda(512MB,每次 3 分钟)每月不到 ¥1。反过来,一个 7×24 满载的服务放 Lambda 会比 EC2 贵,所以要看负载形态。