谷歌应用引擎与亚马逊S3文件上传

6 投票
5 回答
7799 浏览
提问于 2025-04-15 12:08

我知道这个问题之前有人问过,但其实没有一个明确的答案。我的问题是,我为谷歌应用引擎(GAE)写了一个文件上传的脚本,但后来才发现,数据存储中只能存储大约1MB的文件。如果你能告诉我,只要我开启计费,这个1MB的限制就不再存在,那我就不再说了,但我对此表示怀疑。

我需要能够上传每个文件最多20MB,所以我想也许可以使用亚马逊的S3。有没有什么想法可以实现这个?

有人告诉我可以用GAE加上EC2和S3的组合,但我完全不知道这该怎么操作。

谢谢,
Max

5 个回答

2

为了将来参考,谷歌现在支持上传大文件(最大可以达到50MB):这个新功能是作为Blobstore API的一部分发布的,具体内容可以在这里找到。

3

Google App Engine(GAE)和EC2是竞争对手。它们的功能差不多,不过GAE给你的应用提供了一个运行环境,但对编程语言有严格的限制;而EC2则给你提供一个虚拟机(可以想象成VMWare),你可以在上面托管你的应用。

另一方面,S3是一个原始的存储接口。你可以通过SOAP或REST接口来访问它。如果你想继续使用GAE,可以直接使用亚马逊S3的Python库,通过Python向S3发起REST请求。

当然,你使用S3是需要付费的。它的计费方式非常详细,刚开始的时候我一个月就被收了4美分。

13

来自 Amazon S3 文档

  1. 用户打开一个网页浏览器,访问你的网页。

  2. 你的网页上有一个HTTP表单,里面包含了用户上传内容到Amazon S3所需的所有信息。

  3. 用户直接将内容上传到Amazon S3。

GAE(谷歌应用引擎)准备并提供这个网页,这个过程很快。用户上传到S3的过程比较慢,但这只是在用户的浏览器和Amazon之间进行,GAE并不参与其中。

S3协议的一部分是一个叫做 success_action_redirect 的功能,它可以让你告诉S3在上传成功后,浏览器应该跳转到哪里。这个跳转可以指向GAE。

撰写回答