如何绕过 AWS API 网关的 10MB 限制并将大文件发布到 AWS lambda?

rea*_*dul 6 amazon-s3 amazon-web-services aws-lambda aws-api-gateway serverless-framework

我想要的是

使用 POST 获取文件和一些参数并返回 JSON 响应的 API。

curl -X POST www.endpoint.com \
   -F file=@/myfile.txt \
   -F foo=bar # other params
Run Code Online (Sandbox Code Playgroud)

我使用二进制数据与 Lambda + API 网关一起工作,但 10MB 限制是问题所在。

我考虑过将文件上传到 S3 的 POST API。然后由 Lambda 读取生成的事件。但为此我有几个问题-

  1. 我的其他参数会去哪里?
  2. Lambda 将如何返回响应?

K M*_* Mo 5

如果您想坚持使用无服务器解决方案,您的用例根本不可能通过一个 API 调用实现。

一个可能的无服务器解决方案是客户端的 3 步过程。

第1步

调用 api1 以获取 S3 的签名 URL。这将指向创建 UUID 并使用该 UUID 构建 S3 签名 URL 的 Lambda(即使用 UUID 作为正在接收的文件的文件名)。响应将是 URL 和 UUID。

第2步

使用签名 URL 将文件 PUT 到 s3。

第 3 步

调用 api2 并传递 UUID 和其他需要的参数。这个 api 还指向一个 Lambda,它现在知道文件在哪里(感谢 UUID)并且具有处理文件和给出响应所需的任何其他参数。