新手求助:如何用Python编写对接API Gateway的HTTP请求型AWS Lambda函数
嘿,我刚好折腾过这个场景,给你整理了Python版本的Lambda代码,完全能满足你的需求,还顺便加了点健壮性处理~
Python Lambda 实现代码
这是完整的函数代码,直接复制到Lambda控制台里就能用:
import json def lambda_handler(event, context): # 从API Gateway传递的event里获取请求方法 http_method = event.get('httpMethod', '') # 处理GET请求 if http_method == 'GET': return { 'statusCode': 200, 'headers': { 'Content-Type': 'text/plain' }, 'body': 'GET request made' } # 处理POST请求 elif http_method == 'POST': # 获取POST提交的原始数据 raw_post_data = event.get('body', 'No data submitted') # 尝试把JSON格式的请求体解析成可读格式 try: parsed_data = json.loads(raw_post_data) formatted_data = json.dumps(parsed_data, indent=2) response_text = f'POST request made\n\nSubmitted data:\n{formatted_data}' except json.JSONDecodeError: # 如果不是JSON格式,直接返回原始数据 response_text = f'POST request made\n\nSubmitted data:\n{raw_post_data}' return { 'statusCode': 200, 'headers': { 'Content-Type': 'text/plain' }, 'body': response_text } # 处理其他不支持的请求方法 else: return { 'statusCode': 405, 'headers': { 'Content-Type': 'text/plain', 'Allow': 'GET, POST' }, 'body': f'Unsupported HTTP method: {http_method}' }
关键细节说明
- 核心逻辑:API Gateway和Lambda用Proxy集成时,所有请求信息都会打包到
event参数里,我们通过event['httpMethod']就能判断是GET还是POST请求 - POST请求处理:API Gateway会把JSON格式的请求体转成字符串存在
event['body']里,所以我们用json.loads解析成字典,再用json.dumps格式化输出,方便浏览器查看;如果提交的不是JSON(比如表单数据),就直接返回原始内容 - 响应格式:Lambda必须返回包含
statusCode、headers、body的字典,API Gateway才会正确把结果返回给浏览器,Content-Type设为text/plain是为了让浏览器直接显示文本,不用解析JSON
API Gateway 配置提醒
别忘了把API Gateway和Lambda的集成类型设为Lambda Proxy集成,否则event里拿不到httpMethod和请求体这些数据,函数就没法正常工作啦~
内容的提问来源于stack exchange,提问作者user12505665
相关产品推荐
相关产品推荐

