如何从GAE上传文件到S3(一个恐怖故事)

时间:2011-12-13 19:44:21

标签: google-app-engine amazon-s3 jclouds

我正在尝试从GAE上传文件到亚马逊S3。

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

然后出于绝望,我发现了一些好的灵魂forked the official low-level amazon sdk,以便它可以与GAE一起使用。这种工作(即使我可以看到一些strage 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 错误?

任何帮助表示感谢。

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

release notes for 1.5.0上,我读了为响应大众需求,HTTP请求和响应大小已增加到32 MB。因此,请求和响应,URL提取未提及

确实,看URL Fetch documentation,它说它最多5 Mb。