3

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

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

所以基本上我们想知道是否有任何其他可能的解决方案我们可以看看。目前对我们来说最重要的事情是避免公开我们的后端存储,以便只公开我们的 API url(这也很重要,因为我们希望保留将后端存储换成 S3 以外的东西的可能性未来)。我们还研究了允许用户使用他们自己的 S3 帐户提交的可能性,某些 API 确实可以这样做,但并不认为这是一个没有吸引力的选项。

4

1 回答 1

0

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

就个人而言 - 我只是从网站转储到 S3 并确保网站本身可以扩展。(为简单起见,去掉队列部分)....但是鉴于您确实提到了查看 SQS,我添加了以下内容。

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

这将为您提供跨 Web 服务、队列、写入服务和 S3 的可扩展性。

于 2013-05-21T06:03:35.117 回答