我们正在 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 确实可以这样做,但并不认为这是一个没有吸引力的选项。