2011-12-13 71 views
2

我想从GAE上传文件到亚马逊S3。如何从GAE(一个恐怖故事)上传文件到S3

我试过官方的amazon sdk(jetS3t,构建于lower-level sdk之上),只是为了发现即使通过在本地JVM上设置权限来实现本地工作,它也不支持GAE crypto-一旦你部署它,相关的原因。

然后出于绝望,我发现一些好的灵魂forked the official low-level amazon sdk,以便它可以与GAE一起使用。这种作品(即使我可以看到一些NullPointer异常被抛出这里和那里)和文件获取上传...但如果文件大小超过5MB,我得到API内的错误:

com.google.apphosting.api.ApiProxy$RequestTooLargeException: The request to API call urlfetch.Fetch() was too large 

我不完全理解这一点,因为当前的GAE限制似乎是上传文件大小为32MB,请求/响应为1MB,而我的问题只有在文件大小在5MB或更大时才会发生。

我认为我唯一的选择是jclouds,但我找不到使用BlobStore库将文件上传到S3的示例。

有没有人有经验/例子与jClouds共享S3文件上传?我是否可能在同一个urlfetch.Fetch() was too large错误?

任何帮助表示赞赏。

回答

3

URLFetch请求被限制为5MB,如文档here所述。唯一可行的解​​决方案是那些涉及将大型有效载荷分解成更小的块的解决方案。幸运的是,S3提供了multipart upload API

+0

感谢尼克 - 让我们来看看我是否可以使用分段上传API来与应用引擎良好地配合:) – JohnIdol 2011-12-14 00:40:26

+0

@JohnIdol您是否考虑过自己编写代码? RESTful API非常简单 - 唯一的复杂性就是计算头部签名,并且可能有一个库会为你做。 – 2011-12-14 01:46:42