首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何绕过AWS网关的10 to限制,并将大文件发布到AWS?

如何绕过AWS网关的10 to限制,并将大文件发布到AWS?
EN

Stack Overflow用户
提问于 2019-11-22 11:59:53
回答 2查看 6.6K关注 0票数 7

我想要的

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

代码语言:javascript
复制
curl -X POST www.endpoint.com \
   -F file=@/myfile.txt \
   -F foo=bar # other params

我使用二进制数据处理Lambda + API网关,但问题是10 is限制。

我考虑过将文件上传到S3的POST API。然后由Lambda读取生成的事件。但在这方面我没什么问题-

  1. 我的其他参数会去哪里?
  2. 兰博达将如何返回回应?
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-11-22 14:27:24

如果您想坚持使用无服务器解决方案,那么一个API调用就不可能使用您的用例。

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

第一步

打电话给api1以获得S3的签名url。这将指向创建UUID的Lambda,并使用该UUID为S3构造一个签名的URL (即使用UUID作为所接收文件的文件名)。响应将是URL和UUID。

第二步

使用签名的URL将文件放入s3。

第三步

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

票数 7
EN

Stack Overflow用户

发布于 2019-11-22 14:26:15

在API网关上有一个端点,该端点生成预先签名的URL,用于将文件上载到S3。然后,客户端应用程序可以调用该端点来获取预先签名的URL,然后它可以将文件上传到S3。然后,您可以拥有一个Lambda函数,该函数由S3桶中的新对象触发,该对象将从S3读取文件并对其进行处理。

要在文件中添加额外的参数,您可以使用以下几个选项:

  • 选项1:发布额外的参数以及对预先签名的URL的初始请求。让Lambda函数生成预签名的URL存储这些参数,比如DynamoDB,以及生成预签名URL的S3对象键。然后,当S3中出现的新对象触发另一个Lambda函数时,它可以从DynamoDB中查找这些额外的参数。
  • 选项2:当通过预先签名的URL将文件上传到S3时,您的应用程序可以向上传添加额外的头字段,这些字段将作为元数据存储在S3对象上。
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58993864

复制
相关文章

相似问题

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