我目前有一个lambda,该lambda由对API网关路由的请求触发,并且我对如何设置此路由的有效负载限制(例如2kb)进行了一些研究。我的目标是确保我的lambda永远不会收到大量输入要处理,因此执行时间短且成本低。
我发现AWS API Gateway的默认有效负载限制为10 MB,而AWS Lambda的默认限制为6 MB。他们两个都不能增加。
但是,我没有找到有关如何减少的任何文档或讨论。可能吗?我还应使用其他任何AWS服务作为API Gateway和lambda之间的中间件来限制接收到的输入吗?还是应该用另一种方法解决?
答案 0 :(得分:1)
AWS API网关没有您所描述的功能。
您要描述的内容我将考虑使用WAF函数,实际上AWS WAF确实具有此功能。
https://docs.aws.amazon.com/waf/latest/developerguide/web-acl-size-conditions.html
我很想添加以下内容,因为它完全滥用了工具集,但是...
仅使用API Gateway限制有效载荷大小的肮脏方法,可能是一种不精确的方法,该方法是使用集成响应中的主体映射模板中的IF语句检查传入请求的主体长度,如果超过一定长度,请忽略它。
假设Content-Type为application / json的示例:
#set($allParams = $input.params())
{
#if ($input.body.length() < 5000)
"request" : $input.json('$')
#else
"request" : null
#end
}
5000只是一个任意数字,我还没有做数学。
即使有效负载过大(很长),这样做仍然会导致您的Lambda函数被调用,并且Lambda需要能够处理空请求,但永远不会收到包含更多请求的请求超过5000个字符。