AWS Lambda 无服务器架构实战代码
以下是一个基于AWS Lambda的无服务器架构实战代码示例,实现一个简单的HTTP API端点,用于处理用户请求并返回响应。
代码示例:处理HTTP请求的Lambda函数
import json def lambda_handler(event, context): # 解析HTTP请求中的查询参数 query_params = event.get('queryStringParameters', {}) name = query_params.get('name', 'World') # 构建响应 response = { 'statusCode': 200, 'headers': { 'Content-Type': 'application/json', }, 'body': json.dumps({ 'message': f'Hello, {name}!', }), } return responsehttps://www.zhihu.com/zvideo/1994256771989132153/
https://www.zhihu.com/zvideo/1994256771989132153
https://www.zhihu.com/zvideo/1994256771288680169/
https://www.zhihu.com/zvideo/1994256771288680169
https://www.zhihu.com/zvideo/1994256770500171399/
https://www.zhihu.com/zvideo/1994256770500171399
https://www.zhihu.com/zvideo/1994256770391115151/
https://www.zhihu.com/zvideo/1994256770391115151
https://www.zhihu.com/zvideo/1994256768428176082/
https://www.zhihu.com/zvideo/1994256768428176082
https://www.zhihu.com/zvideo/1994256766536537518/
https://www.zhihu.com/zvideo/1994256766536537518
https://www.zhihu.com/zvideo/1994256762128316229/
https://www.zhihu.com/zvideo/1994256762128316229
https://www.zhihu.com/zvideo/1994256760710635984/
https://www.zhihu.com/zvideo/1994256760710635984
https://www.zhihu.com/zvideo/1994256746202546427/
https://www.zhihu.com/zvideo/1994256746202546427
https://www.zhihu.com/zvideo/1994256747926409500/
https://www.zhihu.com/zvideo/1994256747926409500
https://www.zhihu.com/zvideo/1994256745300768115/
https://www.zhihu.com/zvideo/1994256745300768115
https://www.zhihu.com/zvideo/1994256743069410805/
https://www.zhihu.com/zvideo/1994256743069410805
https://www.zhihu.com/zvideo/1994256742268281407/
https://www.zhihu.com/zvideo/1994256742268281407
https://www.zhihu.com/zvideo/1994256740670260843/
https://www.zhihu.com/zvideo/1994256740670260843
https://www.zhihu.com/zvideo/1994256738417935960/
https://www.zhihu.com/zvideo/1994256738417935960
https://www.zhihu.com/zvideo/1994256737788790752/
https://www.zhihu.com/zvideo/1994256737788790752
https://www.zhihu.com/zvideo/1994256737516147097/
https://www.zhihu.com/zvideo/1994256737516147097
https://www.zhihu.com/zvideo/1994256733980353747/
https://www.zhihu.com/zvideo/1994256733980353747
https://www.zhihu.com/zvideo/1994256727143650112/
https://www.zhihu.com/zvideo/1994256727143650112
https://www.zhihu.com/zvideo/1994256723691738630/
https://www.zhihu.com/zvideo/1994256723691738630
部署Lambda函数的步骤
创建Lambda函数
- 登录AWS控制台,导航到Lambda服务。
- 点击“创建函数”,选择“从头开始编写”。
- 输入函数名称,选择Python运行时(如Python 3.9)。
- 点击“创建函数”完成创建。
配置API网关触发器
- 在Lambda函数页面,点击“添加触发器”。
- 选择“API Gateway”作为触发器类型。
- 配置API Gateway(如REST API或HTTP API)。
- 设置安全选项(如开放或私有)。
测试Lambda函数
- 在Lambda控制台,点击“测试”按钮。
- 创建测试事件,模拟HTTP请求:
{ "queryStringParameters": { "name": "Alice" } } - 执行测试,验证响应是否正确。
调用API端点
- 在API Gateway控制台,找到部署的API端点URL。
- 使用浏览器或工具(如curl)访问端点:
curl "https://your-api-id.execute-api.region.amazonaws.com/default/your-lambda-function?name=Alice"
扩展功能:集成DynamoDB
如果需要存储数据,可以集成AWS DynamoDB:
import boto3 from boto3.dynamodb.conditions import Key dynamodb = boto3.resource('dynamodb') table = dynamodb.Table('YourTableName') def lambda_handler(event, context): # 插入数据 table.put_item(Item={ 'id': '123', 'name': event['queryStringParameters']['name'] }) # 查询数据 response = table.query( KeyConditionExpression=Key('id').eq('123') ) return { 'statusCode': 200, 'body': json.dumps(response['Items']) }注意事项
- 确保Lambda函数的执行角色具有访问DynamoDB的权限。
- 在
boto3中无需显式配置AWS凭证,Lambda会自动继承执行角色的权限。 - 为生产环境配置适当的错误处理和日志记录(如CloudWatch Logs)。