2011-12-19 27 views
1

這裏有:AWS S3和移動電話架構

我有一個AWS S3存儲桶,包含一個文件夾和一個移動應用程序。

我想在這間2這樣的架構是建立一個servlet:

電話<>的Servlet <> S3

我不希望手機具有對S3直接訪問所以servlet將使用訪問密鑰和密鑰來使用憑據上傳和從S3存儲桶下載。

我希望手機先有圖片的預覽,這意味着他將加載圖像的URL像https://s3.amazon.com/abc/abc.jpg和和手機緩存它。以前,我將桶策略設置爲public,因此任何人都可以訪問該圖片,但現在我想確保它的安全,因此它們之間的servlet的附加層。

我的想法是讓手機發送POST請求給servlet。 認證電話用戶之後的Servlet將使用憑證從S3存儲桶下載文件。然後Servlet將base64編碼文件並將其發送到手機進行顯示。

我的問題是,是否有更好的方式來處理呢?例如: 發送POST到servlet。 Servlet進行身份驗證並以某種方式使用憑據,將手機重定向到存儲桶上的圖像url鏈接,以便我可以跳過base64編碼部分。

還是有更好的和適當的方式做到這一點?謝謝!

回答

1

亞馬遜S3有一個「預簽署網址」功能,它允許您創建一個URL來訪問其他方式保護的內容,有時間限制。在their documentation page,尋找「查詢字符串請求驗證另類」

你可以有你的servlet生成標識的URL,並將其提供給客戶端的重定向。

+0

有沒有類似的方式上傳圖片到S3? – Maurice 2011-12-19 15:32:15

+0

好吧,看起來可能,而不是一個GET,你做一個PUT來代替。感謝您的指導。 – Maurice 2011-12-19 23:42:19

0

請記住,預先簽名的uRL必須具有到期日期。當我不關心在以後擴展或刪除訪問時,他們是一個不錯的選擇。爲了全面,直接的控制,我選擇了中介服務器來處理S3「家務」。