Google App Engine和Amazon S3文件上传

时间:2009-06-09 22:52:13

标签: python google-app-engine amazon-s3 amazon-ec2

我知道之前有人问过,但确实没有一个明确的答案。我的问题是我为GAE构建了一个文件上传脚本,之后才发现,你只能将文件存储到aprox。数据存储中有1MB。如果你能告诉我,如果我启用计费,我可以阻止你,1MB限制是历史,但我对此表示怀疑。

我需要能够为每个文件上传最多20mb,所以我想也许我可以使用亚马逊的S3。关于如何实现这一目标的任何想法?

我被告知要使用GAE + Ec2和S3的组合,但我不知道这是如何工作的。

谢谢, 最大

5 个答案:

答案 0 :(得分:13)

来自Amazon S3 documentation

  1. 用户打开Web浏览器并访问您的网页。

  2. 您的网页包含一个HTTP表单,其中包含用户将内容上传到Amazon S3所需的所有信息。

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

  4. GAE准备并提供网页,快速操作。您的用户上传到S3,这是一个冗长的操作,但这是在用户的浏览器和亚马逊之间; GAE没有参与。

    S3协议的一部分是 success_action_redirect ,它可以告诉S3在成功上传的情况下瞄准浏览器的位置。该重定向可以是GAE。

答案 1 :(得分:3)

Google App Engine和EC2是竞争对手。他们做同样的事情,虽然GAE为您的应用程序提供了严格的语言限制运行环境,而EC2为您提供了一个虚拟机(想想VMWare)来托管您的应用程序。

另一方面,S3是原始存储API。您可以使用SOAP或REST API来访问它。如果你想坚持使用GAE,你可以简单地使用Amazon S3 Python Library从Python到S3进行REST调用。

当然,您必须支付S3的使用费。令人惊讶的是他们的计费方式。开始时我一个月收费4美分。

答案 2 :(得分:2)

为了供将来参考,Google添加了对大文件上传(最多50 MB)的支持:新功能已作为Blobstore API的一部分发布,并在here进行了讨论。

答案 3 :(得分:1)

我想,Thomas L Holaday的回答是正确的答案。无论如何,以防万一,这里有一个指向App Engine(Java)的Amazon Web Services SDK的链接,你可以使用它,例如将文件从App Engine上传到Amazon S3。 (编辑:哦,刚刚注意到 - 除了S3 http://apetresc.wordpress.com/2010/06/22/introducing-the-gae-aws-sdk-for-java/

Adrian Petrescu撰写。从他的网站:

  

[]是Amazon Web Services的一个版本   将从内部运行的SDK for Java   Google App Engine。这不会   如果您只是简单地包含JAR就可以工作   AWS直接提供给GAE   WAR,因为GAE的安全模型   不允许Apache Commons HTTP   客户端创建套接字和   它的低级网络原语   需要建立HTTP   连接;相反,谷歌要求   你通过所有的连接   其URLFetch实用程序

答案 4 :(得分:0)

部分Google App Engine + S3链接:

Previous related post... 10mb limit

This link demonstrates small file uploads。我还没有找到大型上传的例子......

This link显示了不同的方法,(with a fix for a known issue