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

标签 google-app-engine amazon-s3 jclouds

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

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

然后出于绝望我发现了一些善良的灵魂forked the official low-level amazon sdk这样它就可以与 GAE 一起工作。这种方法有效(尽管我可以看到到处抛出一些 stage 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() 太大 错误?

感谢任何帮助。

最佳答案

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

关于google-app-engine - 如何从GAE上传文件到S3(一个恐怖故事),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8495167/

相关文章:

java - Rackspace 云文件(使用 jclouds)——如何获取容器位置

java - 使用 BlobStore 为对象生成临时 URI

java - 如何获取任务队列有效负载?

python - PyCharm:无法访问的代码?

django - python 3中的S3BotoStorage

ruby-on-rails - 无法使用渲染:text with a proc in Rails 4

google-app-engine - 应用引擎 : I'm seeing 500 status and 204 error code

java - 在 Java8 标准环境下使用 Spring OAuth 的问题

ruby-on-rails - 亚马逊 s3 - ruby 。获取刚刚上传的资源的URL

java - 如何为 imageNameRegex 提供实际的正则表达式