允许第三方用户将文件上传到您的AWS S3 fs

时间:2014-12-23 05:38:39

标签: file-upload amazon-web-services amazon-s3

我有一个非常棘手的问题:我需要允许我网站的用户将非常大的文件上传到他们的帐户,我想将这些文件存储在AWS S3文件系统上。我不能只编写一个Web服务来接收它们并将它们保存在S3 fs中,因为在上传期间各种各样的事情都可能出错,我需要一个复杂的上传器客户端。亚马逊提供的将文件上传到S3的客户端类型,但当然我不能让我的用户直接访问它。我非常感谢任何想法!

谢谢

2 个答案:

答案 0 :(得分:15)

最佳做法是让您的客户端应用程序直接上传到S3,而不是流经您自己的Web基础结构。这将利用S3的以太大规模并行性质并卸载您的Web基础架构。卸载基础架构将允许使用较少的实例或较小的实例来提供相同数量的流量。因此,您的基础设施成本较低。

您需要编写一个S3 IAM策略,该策略会限制您的每个用户访问他们自己的"目录" S3上的(又名密钥前缀)

查看此博文:http://blogs.aws.amazon.com/security/post/Tx1P2T3LFXXCNB5/Writing-IAM-policies-Grant-access-to-user-specific-folders-in-an-Amazon-S3-bucke

如果您的应用是一个网络应用,您甚至可以让您的客户'浏览器直接上传到S3。了解如何在http://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-UsingHTTPPOST.html

安全地实施此功能

关于您的问题的最后一个注释:S3不是文件系统,S3是对象存储。在http://www.infoworld.com/article/2614094/data-center/what-is-object-storage-.html

了解有关对象存储和文件系统之间差异的更多信息

答案 1 :(得分:0)

首先,您需要在您的AWS账户上创建用户,然后为这些用户分配角色,并授予他们访问AWS服务(如s3)的权限。然后,您为这些角色创建身份访问权限并放松自己。 AWS完成剩下的工作。你不需要打扰云端API。如果按照此处的说明执行所需操作,问题将得到解决。