我正在尝试从 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/