2016-11-19 46 views
5

AWS的S3文檔S3最後修改的時間戳指出:爲最終一致覆蓋PUT操作

亞馬遜S3提供最終一致性的覆蓋放,在所有地區刪除操作。

http://docs.aws.amazon.com/AmazonS3/latest/dev/Introduction.html#ConsistencyModel

的入庫時間,直到完全一致達到可以變化。在此期間GET請求可能會返回先前的對象或udpated對象。

我的問題是:

當最後一次修改的時間戳更新?在覆蓋PUT成功後立即更新,但在之前達到完全一致性,還是僅在達到完全一致性後才更新?

我懷疑前者,但我找不到任何明確指出這一點的文檔。

+0

@JohnRotenstein我很欣賞好心的報價編輯,但只有第一句話來自AWS文檔。開始「直到...的時間跨度」這句話是我自己寫的。請回復,以免誤導人們。謝謝。 – andrasp

回答

2

Last-Modified時間戳應該匹配成功的PUT請求的響應頭中返回的Date值。

據我所知,這沒有明確記錄,但它可以從記錄中得到。

當您覆蓋一個對象時,它不是可能被最終一致性模型延遲的覆蓋本身 - 它是給定S3節點上覆蓋的內容的可用性(S3被複制到S3中的多個節點地區)。

與其他元數據一樣,Last-Modified時間戳在對象創建時建立,此後不可變。

它實際上並不是對象的「修改」時間,而是對象的創建時間。這個解釋可能聽起來很迂腐,但從最嚴格的意義上講它是準確的:S3對象及其元數據根本不可能被修改,它們只能被覆蓋。當你在S3中「覆蓋」一個對象時,你實際上做的是創建一個新對象,重用舊對象的鍵(路徑+文件名)。在給定的S3節點(複製)上這個新對象的可用性是可能由最終一致性模型推遲的......而不是實際創建覆蓋舊的對象的新對象......因此將不存在Last-Modified的原因會受複製延遲的影響(假設複製延遲 - 最終一致性有時可能與立即一致性無法區分)。