2012-12-14 53 views
2

所以我使用S3作爲圖像存儲,圖像不斷上傳到各種軟件的存儲桶。輪詢新S3對象的最佳方法是什麼?

我還在構建一個rails應用程序,可以讓用戶在S3上瀏覽圖片庫,但對於性能問題,我需要保留有關本地數據庫中圖片信息的副本,所以我不必連接到S3的API,只要有人看到一個畫廊。

現在什麼是最好的方法來獲得S3上的新對象的通知,我沒有關於我的數據庫的信息?

我想讓一個工作人員不斷提取所有S3對象的列表並註冊我們沒有的對象,但S3對每個API請求有1000個對象的限制,並且我無法在API docs上找到方法指定下一個請求的偏移量,直到獲取所有對象。

任何人有一個想法?

P.S.我使用this gem連接到S3

回答

2

this answer here陳述,並在S3 documentation,S3不允許上傳新文件到S3後通知。通過輪詢,您遲早會達到一些限制。

我會嘗試一種不同的方法。轉到您的上傳軟件並在那裏添加通知。例如,您可以向SNS發送通知,說明正在進行新的上傳。您可以訂閱此SNS隊列,然後在您的服務器上執行後臺任務,並在數據庫中填寫必要的信息。

但是,如果您想要使用輪詢方式,請查看鏈接文檔頁面中結果對象中的Marker屬性。每個請求都會返回一個標記,並且如果您將此標記提供給下一個請求,您將獲得第一個查詢中不可用的下一個對象。

+0

謝謝,但'marker'返回'nil',我們得到了成千上萬的對象,返回的對象列表大小爲1000,這意味着有更多的結果,但標記爲零。奇怪的。 – Ryan

相關問題