3

我正在構建的應用允許用戶上傳文件。該文件將上傳到專用存儲桶中的Amazon S3。Amazon S3,如何處理從上傳到對象可用性的延遲

然後用戶可以通過創建一個時間到期的URL下載該文件,我們允許:

AWS::S3::S3Object.url_for(attachment.path(style || attachment.default_style), attachment.bucket_name, :expires_in => expires_in, :use_ssl => true) 

我們遇到的問題是,有從上傳通過AWS ::短暫的延遲而定S3 :: S3Object.url_for。如果用戶試圖在上傳後立即下載文件,亞馬遜錯誤與:

215412-NameError (uninitialized constant Attachment::AWS): 
215413- app/models/attachment.rb:32:in `authenticated_url' 
215414- app/controllers/attachments_controller.rb:33:in `show' 

任何想法如何優化,處理這種延遲?

謝謝

+0

如果你知道有延遲,爲什麼要立即使用它?我也沒有注意到任何延遲。除非你在要求後談論延遲100毫秒。上傳後您立即嘗試使用該對象。 – Layke 2012-01-13 19:53:10

+0

我們也沒有遇到這種延遲。我們的圖片上傳在上傳後立即可用,因爲我們必須處理原始圖片。 – iwasrobbed 2012-01-13 19:57:58

+0

堆棧跟蹤看起來更像是一個紅寶石問題而不是亞馬遜問題 – 2012-01-13 20:08:03

回答

1

您看到了多長時間的延遲?發生這種情況的頻率如何?

我們使用https://github.com/PRX/s3-swf-upload-plugin直接從瀏覽器上傳到s3,當我得到一個回調文件存在時,我從來沒有看到錯誤,它還沒有可用。

我們做的另一件事是在首次上傳時將對象標記爲一個狀態,然後使用asycnh進程驗證文件,並且只有在標記爲有效後,我們纔會繼續處理它。 但是,這會導致延遲,所以對您而言可能不是很好的答案。

+1

僅僅因爲你在目前的環境中看不到延遲,並不意味着你不會得到一個。我看到了幾分鐘的延遲(但是我已經上傳了數百萬個文件)。如果你看看AWS論壇,你會發現人們有時會遇到延遲。 – 2012-01-18 13:50:52