Aws Lambda 响应错误

Posted

技术标签:

【中文标题】Aws Lambda 响应错误【英文标题】:Aws Lambda response error 【发布时间】:2018-02-28 02:21:54 【问题描述】:

我正在运行 aws lambda,它将从 maria DB 获取数据并将获取的行作为 JSON 对象返回。 JSON数组中的项目总数为64K。

我收到此错误:

 "error": "body size is too long" 

有没有办法通过对 lambda 进行任何配置更改来发送所有 64K 行?

【问题讨论】:

【参考方案1】:

您无法发送 64K 行(超过 6MB 正文负载大小 limit)对 Lambda 进行配置更改。几乎没有其他选择。

查询数据并构建一个 JSON 文件,其中包含 Lambda 内部 /tmp(最大 512MB)目录中的所有行,将其上传到 S3 并返回 CloudFront Signed URL 以访问数据。 将数据集拆分为多个页面并执行多个查询。 使用 EC2 实例或 ECS,而不是 Lambda。

注意:根据查询数据的目的、大小等不同的机制,可以使用不同的机制,高效地使用其他 AWS 服务。

【讨论】:

亲爱的,您能详细解释一下您的第三点吗?您的意思是在 node js 中使用 express 编写 API 并将其发布到 EC2 实例上吗? 是的。在 EC2 实例中使用 NodeJS(使用 ExpressJS 或任何其他合适的框架)或使用 Docker 容器,将服务托管在容器集群中。 非常感谢@Ashan 的建议,我现在正在努力...干杯【参考方案2】:

此错误表明您的响应超过了最大值 (6 MB),这是 AWS Lambda 可以响应的最大数据大小。

http://docs.aws.amazon.com/lambda/latest/dg/limits.html

【讨论】:

【参考方案3】:

您似乎已达到最大 6 MB 响应大小的硬性限制。由于这是一个硬限制,不幸的是没有办法增加它。

您需要将您的 lambda 设置为能够发送最多 6MB 的数据,并对您需要在不同调用中检索的行进行分页,直到您获取所有 64K。

来源: https://docs.aws.amazon.com/lambda/latest/dg/limits.html#limits-list https://forums.aws.amazon.com/thread.jspa?threadID=230229

【讨论】:

以上是关于Aws Lambda 响应错误的主要内容,如果未能解决你的问题,请参考以下文章

AWS Lambda,API Gateway 返回 Malformed Lambda 代理响应,502 错误

Aws Lambda 响应错误

使用 AWS Lambda 和 API Gateway NodeJs 的格式错误的 Lambda 代理响应

将 AWS Lambda 429 错误映射到 API Gateway 2XX 响应

AWS 错误:代理集成无法配置为转换响应

AWS API Gateway - Lambda - 内部服务器错误