首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >截取亚马逊网络服务S3请求

截取亚马逊网络服务S3请求
EN

Stack Overflow用户
提问于 2020-06-02 19:53:18
回答 1查看 246关注 0票数 0

嗨,我希望实现这样的工作流程

Input-files => S3 (regular/multipart) uploader => My-processing-server => Output-files => S3 (regular/multipart) uploader => AWS-S3-server

换句话说,期望将Input-files作为S3请求上载到My-processing-server,以便My-processing-server可以处理Input-files以生成Output-files,然后将其上载到AWS-S3-server

我想知道如何设置内部My-processing-server,它可以通过S3 API接受Input-files

注意:我注意到client configuration允许配置proxy*字段。但如果我理解正确的话,它只是让流量通过代理服务器传递,而不需要在代理服务器上引入任何处理步骤或更改文件大小等。

EN

回答 1

Stack Overflow用户

发布于 2020-06-02 21:12:52

你不可能真的拦截对S3的应用程序接口调用(如果我理解你在问什么),并让你自己的应用程序接口接收调用-这样做的能力将打破S3的应用程序接口调用的信任链。

你有两个选择来做你想做的事情:

  1. 创建您自己的API,并让用户上传到您的API以处理文件。这样做的好处是对于你的用户来说是更加同步的(例如,在文件在S3上可用之前,你的处理是在上传的时候立即发生的),但是它的缺点是迫使你处理正在进行转换的服务的所有缩放。如果你在伸缩上搞砸了,用户文件上传会在负载很重的时候失败。这可能看起来像普通的老式ec2服务器、ECS容器、lambda+api网关等。有无数种方法可以托管web服务器。
  2. 创建一个SQS队列,用于侦听上传到S3的S3文件。然后,您的用户将直接将文件上传到S3 (如果它是不受信任的用户,请确保查找签名的URL),并且您将监听SQS队列,以了解何时处理消息(创建输出文件)。在这种情况下,您可能希望将输出文件存储到单独的S3存储桶中,以避免处理循环。这样做的好处是您可以依靠S3的内置伸缩性来处理大量负载,但它的缺点是您的处理与用户是异步的。如果他们上传文件,他们不会立即将其视为输出。

还有其他软的东西可能会影响你的设计(比如你是否允许上传非常大的文件,这会把你推向解决方案#2),但这是你所要求的两种常见的设计模式。

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

https://stackoverflow.com/questions/62151392

复制
相关文章

相似问题

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