Serverless 实战:AWS Lambda+API Gateway 构建无服务器接口
·
Serverless 实战:AWS Lambda + API Gateway 构建无服务器接口
1. 核心概念
- AWS Lambda:事件驱动的计算服务,执行代码无需管理服务器
- API Gateway:托管服务,用于创建、发布和管理 HTTP/RESTful API
- 无服务器优势:
- 按执行次数付费($成本 = 请求次数 \times 单次费用$)
- 自动扩缩容
- 零服务器运维
2. 架构流程
graph LR
A[客户端] --> B(API Gateway)
B --> C{AWS Lambda}
C --> D[数据库/服务]
D --> C
C --> B
B --> A
3. 实战步骤
步骤1:创建Lambda函数
- 登录 AWS 控制台 → Lambda → 创建函数
- 选择 Python 运行时(如 Python 3.12)
- 编写处理函数:
import json
def lambda_handler(event, context):
# 解析API Gateway传递的参数
query_params = event.get('queryStringParameters', {})
name = query_params.get('name', '匿名用户')
# 构建响应
return {
'statusCode': 200,
'headers': {'Content-Type': 'application/json'},
'body': json.dumps({'message': f'你好, {name}!'})
}
步骤2:配置API Gateway
- 创建 REST API → 新建资源(如
/greet) - 创建 GET 方法 → 集成类型选择 Lambda 函数
- 部署 API 到新阶段(如
prod)
步骤3:测试与调用
- 测试 URL 格式:
https://{api-id}.execute-api.{region}.amazonaws.com/prod/greet?name=张三 - 响应示例:
{
"message": "你好, 张三!"
}
4. 关键配置项
| 组件 | 配置要点 |
|---|---|
| Lambda | 超时时间(≤15秒)<br>内存分配(128MB-10GB) |
| API Gateway | 授权机制(IAM/API Key)<br>速率限制($请求/秒 \leq 阈值$) |
| 集成 | 映射模板处理请求/响应转换 |
5. 进阶优化
-
环境变量:
在Lambda中存储数据库连接等敏感信息import os DB_URL = os.environ['DB_URL'] -
冷启动优化:
- 使用 Provisioned Concurrency
- 减小部署包体积(删除无用依赖)
-
监控告警:
- 配置 CloudWatch 日志
- 设置错误率告警:$$ \text{错误率} = \frac{\text{5xx错误数}}{\text{总请求数}} \times 100% > 阈值 $$
6. 成本估算示例
假设每月 100 万次请求:
- Lambda 成本:$ \frac{1,000,000}{1,000,000} \times $0.20 = $0.20 $
- API Gateway:$ \frac{1,000,000}{1,000,000} \times $3.50 = $3.50 $
- 总成本 ≈ $3.70(不含免费额度)
最佳实践:
- 为生产环境添加自定义域名
- 使用 AWS SAM 进行基础设施即代码部署
- 通过 X-Ray 跟踪请求链路
更多推荐
所有评论(0)