谷歌应用引擎与亚马逊S3文件上传
我知道这个问题之前有人问过,但其实没有一个明确的答案。我的问题是,我为谷歌应用引擎(GAE)写了一个文件上传的脚本,但后来才发现,数据存储中只能存储大约1MB的文件。如果你能告诉我,只要我开启计费,这个1MB的限制就不再存在,那我就不再说了,但我对此表示怀疑。
我需要能够上传每个文件最多20MB,所以我想也许可以使用亚马逊的S3。有没有什么想法可以实现这个?
有人告诉我可以用GAE加上EC2和S3的组合,但我完全不知道这该怎么操作。
谢谢,
Max
5 个回答
为了将来参考,谷歌现在支持上传大文件(最大可以达到50MB):这个新功能是作为Blobstore API的一部分发布的,具体内容可以在这里找到。
Google App Engine(GAE)和EC2是竞争对手。它们的功能差不多,不过GAE给你的应用提供了一个运行环境,但对编程语言有严格的限制;而EC2则给你提供一个虚拟机(可以想象成VMWare),你可以在上面托管你的应用。
另一方面,S3是一个原始的存储接口。你可以通过SOAP或REST接口来访问它。如果你想继续使用GAE,可以直接使用亚马逊S3的Python库,通过Python向S3发起REST请求。
当然,你使用S3是需要付费的。它的计费方式非常详细,刚开始的时候我一个月就被收了4美分。
来自 Amazon S3 文档:
用户打开一个网页浏览器,访问你的网页。
你的网页上有一个HTTP表单,里面包含了用户上传内容到Amazon S3所需的所有信息。
用户直接将内容上传到Amazon S3。
GAE(谷歌应用引擎)准备并提供这个网页,这个过程很快。用户上传到S3的过程比较慢,但这只是在用户的浏览器和Amazon之间进行,GAE并不参与其中。
S3协议的一部分是一个叫做 success_action_redirect 的功能,它可以让你告诉S3在上传成功后,浏览器应该跳转到哪里。这个跳转可以指向GAE。