Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 谷歌应用引擎和亚马逊S3文件上传_Python_Google App Engine_Amazon S3_Amazon Ec2 - Fatal编程技术网

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

Python 谷歌应用引擎和亚马逊S3文件上传,python,google-app-engine,amazon-s3,amazon-ec2,Python,Google App Engine,Amazon S3,Amazon Ec2,我知道以前有人问过这个问题,但实际上没有一个明确的答案。我的问题是,我为GAE构建了一个文件上传脚本,之后才发现,您只能将文件存储到aprox。数据存储中有1MB。我可以在这里阻止你,如果你能告诉我,如果我启用计费1MB的限制是历史,但我怀疑它 我需要能够上传高达20mb的每个文件,所以我想也许我可以使用亚马逊的S3。关于如何实现这一点有什么想法吗 我被告知使用GAE+Ec2和S3的组合,但我不知道这将如何工作 谢谢, Max谷歌应用程序引擎和EC2是竞争对手。虽然GAE为您的应用程序提供了一个

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

我需要能够上传高达20mb的每个文件,所以我想也许我可以使用亚马逊的S3。关于如何实现这一点有什么想法吗

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

谢谢,
Max

谷歌应用程序引擎和EC2是竞争对手。虽然GAE为您的应用程序提供了一个严格语言限制的运行环境,而EC2则为您提供了一个虚拟机(如VMWare)来承载您的应用程序,但它们的作用是相同的

另一方面,S3是一个原始存储api。您可以使用SOAP或RESTAPI来访问它。如果您想继续使用GAE,只需使用从Python到S3的REST调用即可


当然,您必须为S3的使用付费。令人惊讶的是,他们的账单是如此精细。刚开始的时候,我每个月要收4美分。

一些谷歌应用程序引擎+S3链接:

。我还没有找到一个大型上传的例子

显示了不同的方法,

来自:

用户打开web浏览器并访问您的网页

您的网页包含一个HTTP表单,该表单包含用户将内容上载到AmazonS3所需的所有信息

用户直接将内容上传到AmazonS3

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


S3协议的一部分是一个success\u action\u重定向,它允许您告诉S3在成功上传的情况下将浏览器指向何处。这个重定向可以是GAE。

为了将来的参考,谷歌增加了对高达50MB的大文件上传的支持:这项新功能是作为GAE的一部分发布的,并且正在讨论中

我想托马斯·霍拉迪的答案是正确的。无论如何,以防万一,这里有一个指向Amazon Web Services SDK for App Engine Java的链接,您可以使用它将文件从App Engine上传到Amazon S3。编辑:哦,刚刚注意到——S3除外

由阿德里安·彼得雷斯库撰写。从他的网站:

[它是]亚马逊网络服务的一个版本 将从内部运行的Java SDK 谷歌应用程序引擎。这不可能 如果你只是简单地把罐子放进去就可以了 AWS直接提供给GAE的 战争,因为GAE的安全模型 不允许Apache Commons HTTP 客户端来创建套接字和 底层网络是it的基础 需要建立HTTP 联系相反,谷歌需要 您必须通过网络建立所有连接 它的URLFetch实用程序


好的,到目前为止还不错。但是如果我有一个20MB的文件,并且我使用Amazon S3 Python库将该文件发送到S3…GAE不会终止该进程,因为它需要超过30秒吗?老实说,我真的不知道GAE的局限性,我只是简单地看了一下,它的缺陷非常明显,并且限制了我的特定用途。老实说,除了他们有一个免费版本之外,我几乎看不到有什么值得推荐的。我很确定他已经知道了所有这些-这不是他所要求的。好吧,听起来很棒,我一定会这样做。如果要在GAE数据存储中存储有关该文件的信息,您将如何进行?例如,像存储它的用户和mime类型一样,在用户请求“重定向”页面时存储该信息。如果需要,您可以对新上载的文件执行HEAD请求以获取元数据。安全问题如何?我的意思是,在将数据提交给S3之前,除了表单中的AJAX之外,没有其他方法来验证数据,对吗?所以基本上,如果我像Amazons建议的那样在表单中设置最大文件大小,你就可以编写自己的表单并上传到我的bucket?我在表单中添加的元数据也可以很容易地修改…没关系。我找到了加密的策略文件;!非常感谢你们的帮助!我是新的堆栈溢出,但这是惊人的!另外,我应该注意到,它很有可能也适用于S3。尝试一下,只需从build.xml文件中删除过滤器并进行测试即可。我很好奇结果是什么。状态最大对象大小:2 GB。我不知道它什么时候变了,但这仍然是个好消息: