首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >当AWS请求有效负载大于6MB时,是否存在自定义http响应的方法?

当AWS请求有效负载大于6MB时,是否存在自定义http响应的方法?
EN

Stack Overflow用户
提问于 2020-08-08 07:45:37
回答 3查看 340关注 0票数 1

上下文

我正在尝试使用AWS网关访问AWS。我目前正在使用AWS Lamda代理。

据我了解,以下请求有效负载限制已经到位。

  • HTTP网关有效载荷限制= 10 MB
  • Lambda有效载荷极限=6MB

问题

如果请求有效负载大小> 10 MB,则HTTP网关返回一个HTTP413状态代码,我可以捕获它,以便在客户端显示有效的错误消息。到目前为止一切都很好。

但是,如果有效负载大小> 6MB但<10 6MB,那么lambda就会失败,因为请求超过了6MB的限制。在这种情况下,HTTP客户端接收一个500 HTTP错误代码,而不是人们可以预期的413错误代码。

问题

在达到lambda的6MB请求有效负载限制时,是否有任何方法自定义HTTP响应?

EN

回答 3

Stack Overflow用户

发布于 2020-08-08 07:55:19

您可以在API网关中处理Lambda错误,将标准Lambda错误映射到方法响应,在该方法响应中,您可以为给定的Lambda错误配置一个HTTP代码。

票数 0
EN

Stack Overflow用户

发布于 2020-08-08 10:23:12

你考虑过使用预先签名的urls吗?这样您就可以避免有效负载限制,但是客户端和服务器端都需要进行代码更改,尽管更改应该是很小的。其思想是客户端向触发lambda的API发送http GET请求,由lambda生成一个预先签名的url并返回到客户端,最后客户端直接上传到s3,从而规避lambda的有效负载限制。

但我想我可能不理解你的要求。

票数 0
EN

Stack Overflow用户

发布于 2020-08-30 02:46:26

我也希望我能控制这个配额,但看起来不允许。

调用有效负载(请求和响应)

  1. 6MB(同步)
  2. 256 KB (异步)

https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-limits.html

否则,您可以使用将Lambda返回为gzipped

代码语言:javascript
运行
复制
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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63312987

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档