从客户端或服务器上传到 S3?

Posted

技术标签:

【中文标题】从客户端或服务器上传到 S3?【英文标题】:Upload to S3 from client or server? 【发布时间】:2017-01-30 03:47:07 【问题描述】:

我应该直接从客户端将我的文件上传到 S3 还是将它们发送回我的服务器并从那里上传?

每种方法的优缺点是什么?哪个更常见?

如果相关,我正在使用 MEAN 堆栈。

【问题讨论】:

那么这样的优点或缺点都没有吗?我唯一能想到的是,如果您将该文件发送到您的服务器,然后发送到 S3,它会减慢上传功能。你想用你的堆栈来实现什么 我假设既然你有一个堆栈,如果你的上传直接从客户端到 S3,你仍然会有一个服务器运行?您还有其他相关要求或架构限制吗? 是的,它是一个运行着服务器的全栈应用程序。想到的唯一限制或要求是我希望只能通过我的应用程序访问我的 S3 存储桶 - 所以我不希望用户能够获取凭据并在应用程序之外上传一堆文件. 我真的只是在这里寻找最佳实践,因为我刚刚开始使用 S3。一种方法比另一种更常见吗?为什么?谢谢! 【参考方案1】:

您可以create signed upload URLs with the Amazon API。这将防止未注册的用户将内容上传到您的存储桶。

您的服务器创建签名 URL 并将其返回给客户端。然后客户端可以直接上传到 S3 而不会阻塞服务器。您可能还希望使用 Amazon 通知服务在上传完成时通知服务器,以便您可以使用新保存的上传位置更新数据库。

查看这个关于如何upload file from angularjs directly to amazon s3 using signed url

的问题

【讨论】:

谢谢,这很有帮助!

以上是关于从客户端或服务器上传到 S3?的主要内容,如果未能解决你的问题,请参考以下文章

由于 CORS,使用 createPresignedPost 或 getPresignedUrl 将 formData 文件从客户端上传到 S3 失败

Amazon S3 预签名 URL - 手动或一次性上传无效

如何使用节点、createPresignedPost 和 fetch 将图像文件直接从客户端上传到 AWS S3

从客户端浏览器直接上传 Amazon S3 文件 - 私钥泄露

将视频 URI 从 React-Native Picker 上传到 AWS S3 服务器

Cordova/Ionic 应用程序通过服务器签名的 url 将 base64 图像上传到 S3