【发布时间】:2020-06-11 00:25:21
【问题描述】:
我有一个 AWS lambda,它返回的响应大小超过 6MB。 (我知道这并不理想,并且正在限制 AWS lambda 限制,对于 RequestResponse lambda 调用类型为 6MB)。
在这种情况下,我收到以下错误:
413 Request entity too large
我想在将此响应发送到 API 网关之前对其进行压缩。我的 lambda 在 javascript 中,我正在使用 zlib 以 gzip 格式压缩响应,但出现异步错误。
代码 sn-p:
const invocationResponse = await zlib.gzip(JSON.parse(data.Payload),function (error, result) {
if (error) throw error return result
})
错误:
ProcessingLambdaInvoker: Error (asynchronously) invoking backend lambda: TypeError [ERR_INVALID_ARG_TYPE]: The "chunk" argument must be one of type string or Buffer. Received type object
at validChunk (_stream_writable.js:272:10)
at Gzip.Writable.write (_stream_writable.js:307:21)
at Gzip.Writable.end (_stream_writable.js:617:10)
有人可以建议一种更好的方法来压缩 js 中的响应并将其发送回来。我还必须在前端解压缩它还是浏览器会自动解压。我知道在发送之前我必须对其进行压缩,然后使用 base64 对其进行编码。
【问题讨论】:
-
如果 AWS lamda 有硬限制,那么为什么不将 zip 保存到 s3 位置,并共享 s3 位置作为响应。客户端可以使用共享的s3路径下载文件。
-
这只是其中一种方法,我已经在这样做了。我认为这是一个硬性限制。
标签: javascript aws-lambda gzip response http-compression