用户上传到我的S3存储桶

时间:2014-03-04 00:59:14

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

我希望用户必须拥有亚马逊帐户,才能将多GB文件上传到我的S3存储桶中。

我该如何解决这个问题?我想让用户通过给他们一个密钥或者通过上传表单来实现这一点,而不是让一个桶明显可写。

我更喜欢在我的服务器端使用Python,但想法是用户只需要他们的网络浏览器,或者可能只需打开他们的终端并使用内置的可执行文件。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

您正在尝试通过python后端将文件代理到S3,即文件太大。相反,您可以将S3配置为直接接受来自用户的文件(无需通过后端代码进行代理)。

这里解释:Browser Uploads to S3 using HTML POST Forms。这样,您的服务器根本无需处理任何上载负载。

如果您还希望用户使用其他ID(google / FB等)来实现此工作流程,那也是可能的。他们将能够将这些文件上传到存储桶中的子文件夹(路径),而不会暴露存储桶的其他部分。这在此详述:网络Identity Federation with Mobile Applications。虽然它说移动,但你可以将它应用于webapps。

如上所述,正如@Ratan所指出的那样,当您尝试使用浏览器并且无法重试“仅失败的部分”时,大文件上传可能会中断。这是需要专用应用程序的地方。另一个选择是要求用户将文件保存在他们的Dropbox / BOX.com帐户中,并且您的服务器可以从那里读取 - 这些服务已经处理了大量文件上载和所有重试等使用他们的应用程序。

答案 1 :(得分:0)

这个答案与.Net作为语言有关。

我们有这样的要求,我们已经创建了一个可执行文件。可执行文件内部称为Web方法,该方法验证了经过身份验证的应用程序,以便将文件上载到AWS S3或不用。

您也可以使用网络浏览器执行此操作,但如果您要定位大文件,我不建议这样做。