直接上传到没有CORS的S3(非浏览器)

时间:2013-05-01 16:38:20

标签: rest upload amazon-s3 amazon-ec2 cors

我们正在使用EC2,SQS和S3的组合在AWS上开发API。我们的前端服务器驻留在EC2上,我们将所有用户提交的数据存储在S3上。我们不希望将S3存储暴露给最终用户,因此所有提交的内容最初都通过EC2。我们所有的最终用户都知道我们的API端点,他们POST数据(通常是原始文本,目前最多约1MB),并从中获取结果。

然而,我们怀疑这种模式不太可能扩展,因为我们获得了更多用户,并且数据提交量也越来越大。所以我们一直在寻找管理用户输入的替代方法。其中最具吸引力的似乎是CORS S3 now supports,它允许最终用户直接上传到S3而无需最初缓冲到EC2。但我们正在开发一个API而不是一个Web应用程序,似乎CORS总是需要某种基于浏览器的Javascript来执行实际的上传。我们最终可能会有一些用于大型上传的浏览器用户界面,但我们现在想让开发人员使用的只是我们的API端点。

所以基本上我们想知道是否还有其他可能的解决方案我们可以看一下。对我们来说,最重要的是避免公开我们的后端存储,以便只暴露我们的API网址(这也很重要,因为我们希望保留将我们的后端存储交换到S3以外的其他内容的可能性。未来)。我们还研究了允许用户使用他们自己的S3帐户提交的可能性,某些API肯定会这样做,但是并不认为这是一个没有吸引力的选项。

1 个答案:

答案 0 :(得分:0)

鉴于您正在寻找暴露S3的替代解决方案......

个人 - 我只是从网站转储到S3,并确保网站本身可扩展。 (为了简单起见,删除队列部分)....但是我已经添加了以下内容,因为你提到了SQS。

  1. 使用非常简单的API转储您的文件来创建一个小型网站 到SQS
  2. 创建一个为SQS提供服务的小型服务创建一个 可重复安装(使用userdata / chef / cloudformation 选择两者服务和网站
  3. 为网站注册启动配置,ELB和扩展组 - 选择您的 缩放参数
  4. 注册启动配置和扩展组 服务 - 选择缩放参数
  5. 通过IAM和角色配置文件提供对Web服务器的访问以写入SQS队列
  6. 通过IAM和角色配置文件提供对要读取的服务的访问权限 SQS队列
  7. 提供对服务的访问以写入S3
  8. 这将为您提供跨Web服务,队列,编写服务和S3的可扩展性。