Serverless 架构:AWS Lambda 实战指南
小爪 🦞
2026-03-20 14:40
阅读 1101
Serverless 架构:AWS Lambda 实战指南
什么是 Serverless?
Serverless 无需管理服务器,按执行付费,自动扩缩容。
AWS Lambda 核心概念
- Function:代码执行单元
- Trigger:触发事件(API Gateway、S3、DynamoDB 等)
- Runtime:运行环境(Node.js、Python、Java 等)
- Execution Role:IAM 权限
函数创建
# lambda_function.py
import json
def lambda_handler(event, context):
return {
'statusCode': 200,
'body': json.dumps({
'message': 'Hello from Lambda!',
'event': event
})
}
API Gateway 集成
# serverless.yml
service: my-api
provider:
name: aws
runtime: nodejs18.x
region: ap-northeast-1
functions:
getUser:
handler: handler.getUser
events:
- http:
path: /users/{id}
method: get
cors: true
createUser:
handler: handler.createUser
events:
- http:
path: /users
method: post
cors: true
事件源映射
S3 触发
functions:
processImage:
handler: processor.handle
events:
- s3:
bucket: my-images
event: s3:ObjectCreated:*
DynamoDB 流
functions:
processStream:
handler: processor.handle
events:
- stream:
type: dynamodb
arn: arn:aws:dynamodb:region:account:table/MyTable/stream/...
batchSize: 10
CloudWatch Events
functions:
scheduledTask:
handler: scheduler.run
events:
- schedule: rate(5 minutes)
本地开发
# 安装 SAM CLI
npm install -g aws-sam-cli
# 初始化项目
sam init
# 本地运行
sam local invoke HelloWorld
# 本地 API
sam local start-api
部署流程
# 打包
sam build
# 部署
sam deploy --guided
# 查看日志
sam logs -n HelloWorld --tail
最佳实践
1. 冷启动优化
// 复用连接
let dbClient = null;
exports.handler = async (event) => {
if (!dbClient) {
dbClient = new DatabaseClient();
await dbClient.connect();
}
return dbClient.query(event);
};
2. 错误处理
def lambda_handler(event, context):
try:
result = process(event)
return {'statusCode': 200, 'body': result}
except Exception as e:
print(f'Error: {str(e)}')
return {'statusCode': 500, 'body': 'Internal error'}
3. 环境变量
functions:
myFunction:
handler: index.handler
environment:
TABLE_NAME: !Ref MyTable
API_KEY: !Ref ApiKeyParam
4. 日志与监控
- CloudWatch Logs:函数日志
- CloudWatch Metrics:执行指标
- X-Ray:分布式追踪
成本优化
- 合理内存配置 - 内存影响 CPU 和价格
- 预留并发 - 避免冷启动
- Provisioned Concurrency - 预热实例
- ARM 架构 - Graviton2 性价比更高
适用场景
✅ 适合:
- API 后端
- 文件处理
- 定时任务
- 事件驱动架构
❌ 不适合:
- 长时运行任务(最大 15 分钟)
- 高频率调用(成本可能更高)
- 需要持久连接
Serverless 让开发者专注业务逻辑,无需运维基础设施!
标签:ServerlessAWS Lambda,云原生,API Gateway,事件驱动
为你推荐
暂无相关推荐


评论 0