上下文
我正在尝试使用AWS网关访问AWS。我目前正在使用AWS Lamda代理。
据我了解,以下请求有效负载限制已经到位。
问题
如果请求有效负载大小> 10 MB,则HTTP网关返回一个HTTP413状态代码,我可以捕获它,以便在客户端显示有效的错误消息。到目前为止一切都很好。
但是,如果有效负载大小> 6MB但<10 6MB,那么lambda就会失败,因为请求超过了6MB的限制。在这种情况下,HTTP客户端接收一个500 HTTP错误代码,而不是人们可以预期的413错误代码。
问题
在达到lambda的6MB请求有效负载限制时,是否有任何方法自定义HTTP响应?
发布于 2020-08-08 07:55:19
您可以在API网关中处理Lambda错误,将标准Lambda错误映射到方法响应,在该方法响应中,您可以为给定的Lambda错误配置一个HTTP代码。
发布于 2020-08-08 10:23:12
你考虑过使用预先签名的urls吗?这样您就可以避免有效负载限制,但是客户端和服务器端都需要进行代码更改,尽管更改应该是很小的。其思想是客户端向触发lambda的API发送http GET请求,由lambda生成一个预先签名的url并返回到客户端,最后客户端直接上传到s3,从而规避lambda的有效负载限制。
但我想我可能不理解你的要求。
发布于 2020-08-30 02:46:26
我也希望我能控制这个配额,但看起来不允许。
调用有效负载(请求和响应)
https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-limits.html
否则,您可以使用将Lambda返回为gzipped。
const zlib = require('zlib')
zlib.gzip(JSON.stringify({
...
}), function (error, gzippedJSON) {
if (error) context.fail(error)
const response = {
statusCode: 200,
isBase64Encoded: true,
headers: {
'Content-Type': 'application/json',
'Content-Encoding': 'gzip',
'Access-Control-Allow-Headers': 'Content-Type',
'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Methods': 'OPTIONS,POST,GET'
},
body: gzippedJSON.toString('base64')
}
context.succeed(response)
})
但是在这种情况下,您应该稍微更改API网关的设置。
请把这个转过来。https://medium.com/@janrubio/api-gateway-lambda-compression-86f61deed6a5
https://stackoverflow.com/questions/63312987
复制相似问题