使用Lambda与API Gateway调用API时遇Malformed Lambda proxy响应错误求排查
解决Malformed Lambda Proxy Response错误
我一眼就揪出问题啦——你的Access-Control-Allow-Origin响应头放错位置了!
当使用API Gateway的Lambda代理集成模式时,所有自定义响应头都必须嵌套在headers对象里,而不能和statusCode、body这些字段平级。API Gateway对代理响应的格式校验非常严格,这种字段层级错误直接就会触发"Malformed Lambda proxy response"报错。
给你修正后的代码,重点看headers部分的变化:
import json def lambda_handler(event, context): # 这里替换成你从自有API获取的实际数据 data = {"example_key": "example_value"} return { 'statusCode': 200, 'headers': { 'Content-Type': 'application/json', 'Access-Control-Allow-Origin': '*' # 把跨域头移到headers内部! }, "isBase64Encoded": False, 'body': json.dumps(data) }
顺便给你提几个后续要注意的细节,避免再踩同类坑:
isBase64Encoded必须是Python的布尔值(True/False,首字母大写),不能写成字符串形式body必须是JSON字符串,一定要用json.dumps()把Python字典/列表转换成字符串格式- 如果需要添加其他跨域相关头(比如
Access-Control-Allow-Methods、Access-Control-Allow-Headers),全部都要放在headers对象里
内容的提问来源于stack exchange,提问作者ofek edut




