簡體   English   中英

上傳后的Amazon S3文件可用性

[英]Amazon S3 file availability after upload

我想在測試用例期間上傳文件,然后立即下載以驗證文件是否已上傳。 我使用的鍵已經上升到S3了。

當我的上傳完成后,我會進行下載,但不知何故,我得到了此文件的先前版本。

我的代碼看起來像這樣:

final ObjectMetadata objectMetadata = new ObjectMetadata(); objectMetadata.setContentType(binaryDataReference.getContentType()); objectMetadata.setContentLength(data.length); objectMetadata.setContentEncoding(xmlEncoding.getCharset()); s3Client.putObject(BUCKET_NAME, key, new ByteArrayInputStream(data), objectMetadata); Thread.sleep(30000); // this I've done because I thought its a timing issue. S3Object object = s3Client.getObject(BUCKET_NAME, binaryDataKey);

但我得到的對象不是我剛剛上傳的對象。

我是否需要做一些事情,或者是否有人知道這種方法的缺點是什么?

這就是S3的工作方式

美國標准區域中的Amazon S3存儲桶提供最終一致性 所有其他區域中的Amazon S3存儲桶為新對象的PUTS提供讀寫后一致性,並為覆蓋PUTS和DELETES提供最終一致性。

這意味着在寫完新對象后,只要它不在美國標准區域,您就可以立即讀取它。 否則 - 即如果您在美國標准區域或者您正在覆蓋或刪除現有對象 - 您只能保證“最終”您的操作結果將可見。

我曾經問過亞馬遜是否在覆蓋了一個對象成功讀回最新版本后,是否保證同一連接上的所有后續讀取都返回最新版本。 也就是說,如果我編寫版本2並閱讀版本2,我是否再也不會閱讀版本1? 他們沒有回應。

如果您確實需要更強的一致性,那么Google雲端存儲提供了更新后讀取和刪除后讀取的一致性 ,盡管GCS在上次檢查時比S3稍貴一些。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM