2011-12-13 72 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