Aws lambda 如何限制特定API网关路由的有效负载大小

Aws lambda 如何限制特定API网关路由的有效负载大小,aws-lambda,aws-api-gateway,Aws Lambda,Aws Api Gateway,我目前有一个lambda,它是由对API网关路由的请求触发的,我研究了如何为该路由设置有效负载限制(例如2kb)。我的目标是保证我的lambda永远不会收到大量的输入来处理,因此它将有一个轻微的执行时间和低成本 我发现AWSAPI网关的默认负载限制是10MB,而AWS Lambda的默认负载限制是6MB。两者都不能增加 但是,我没有找到任何关于如何减少它的文档或讨论。可能吗?是否有其他AWS服务可以用作API网关和lambda之间的中间件,以限制接收到的输入?或者我应该用另一种方法来解决它?AW

我目前有一个lambda,它是由对API网关路由的请求触发的,我研究了如何为该路由设置有效负载限制(例如2kb)。我的目标是保证我的lambda永远不会收到大量的输入来处理,因此它将有一个轻微的执行时间和低成本

我发现AWSAPI网关的默认负载限制是10MB,而AWS Lambda的默认负载限制是6MB。两者都不能增加


但是,我没有找到任何关于如何减少它的文档或讨论。可能吗?是否有其他AWS服务可以用作API网关和lambda之间的中间件,以限制接收到的输入?或者我应该用另一种方法来解决它?

AWS API网关没有您描述的功能

你所描述的,我会考虑WAF函数,实际上AW-WAF确实有这个功能。

我很犹豫是否要添加以下内容,因为这完全是对工具集的错误使用,但是

仅使用API网关限制有效负载大小的一种肮脏且可能不精确的方法是使用集成响应中的主体映射模板中的IF语句检查传入请求主体的长度,如果超过一定长度,则忽略它

假设内容类型为application/json的示例:

#set($allParams = $input.params())
{
#if ($input.body.length() < 5000)
    "request" : $input.json('$')
#else
    "request" : null
#end
}
#set($allParams=$input.params())
{
#if($input.body.length()<5000)
“请求”:$input.json(“$”)
#否则
“请求”:空
#结束
}
5000只是个任意数字,我还没算过


这样做仍然会导致调用Lambda函数,即使负载太大(很长),并且Lambda需要能够处理空请求,但它永远不会收到超过5000个字符的请求。

谢谢!很高兴知道有一个通过API网关的解决方案,尽管我不会使用它,因为它不可建议。我计划使用lambda代理通过lambda验证每个请求的内容长度头,但我将检查AWF。我将首先分析其成本,但我想了解一些提示/建议:在这个问题上,AWF比lambda便宜吗?或者相反?考虑100Ms的lambda执行+一些冷启动时间。我显然会重新计算自己的定价,但是对一个API上的一个规则的AW-WAF的粗略估计是每月一百万个呼叫6.60美元,下一个百万美元0.60美元。考虑到大多数调用最终都会通过网关和Lambda,在处理之前快速检查Lambda中的内容长度可以忽略不计。