AWS Lambda URL请求大小异常报错及POST请求问题排查
问题分析与解决
1. Lambda URL请求大小报错原因
你遇到的Request must be smaller than 6291456 bytes错误,指向的是Lambda URL的请求体上限(6MB),但你的文本仅4.8KB远低于该阈值。实际问题出在你通过浏览器GET请求传递文本时,URL长度超出了浏览器的限制(多数浏览器URL长度上限在2KB-8KB之间),并非Lambda本身的负载限制。
解决思路:避免用GET请求通过URL参数传递大文本,改用POST请求将文本放在请求体中传递。
2. 正确的Python POST请求写法
你的当前请求返回空,通常是因为请求格式不符合Lambda函数的预期,以下是两种适配场景的写法:
场景1:Lambda函数期望JSON格式输入
如果你的Lambda函数是解析JSON结构的输入,使用json参数传递数据(requests会自动设置正确的Content-Type):
import requests myurl = 'https://qcct6oyi3jtfxdgf4dssguux3q0ocqvt.lambda-url.us-east-1.on.aws/' # 根据Lambda函数的输入要求调整payload结构,比如直接传文本内容或指定键名 payload = {"input_text": "गावाम"} response = requests.post(myurl, json=payload) # 输出预期结果 print(response.json())
场景2:Lambda函数直接读取纯文本请求体
如果Lambda函数直接处理原始文本内容,需要显式设置Content-Type为纯文本:
import requests myurl = 'https://qcct6oyi3jtfxdgf4dssguux3q0ocqvt.lambda-url.us-east-1.on.aws/' text_content = "गावाम" headers = {'Content-Type': 'text/plain; charset=utf-8'} response = requests.post(myurl, data=text_content.encode('utf-8'), headers=headers) # 输出预期结果 print(response.json())
额外注意事项
- 移除URL末尾的
?,POST请求无需在URL中保留查询参数占位符。 - 检查Lambda函数代码是否正确处理POST请求体:Python Lambda中,POST内容需从
event['body']获取;如果是JSON格式,还需先通过json.loads(event['body'])解析。
内容的提问来源于stack exchange,提问作者shantanuo
相关产品推荐
相关产品推荐

