2015-06-03 107 views
0

我們在S3中使用cloudfront託管了我們的腳本文件。每當我用新的js文件更新舊的js文件時,它將刪除文件的元數據。我必須重新輸入。更新S3文件刪除元數據

有什麼方法可以解決它嗎?

回答

1

它不能被修復,因爲你描述的行爲並沒有被打破 - 這是設計。

以下可能聽起來像是一個文字遊戲,但術語的更精細的點解釋了這個問題。

S3中的對象不能被「更新」 - 它們只能被覆蓋。當您上傳新版本,你沒有更新的對象,你更換,所以,從技術上說,這是一個不同對象...使用相同的密鑰(路徑)。由於元數據是對象的屬性(不是對象的屬性),因此不同的對象將具有不同的元數據,因此當上傳對象時,必須設置元數據。

事實上,把一個非常細點吧,當你「編輯」對象元數據在控制檯,你仍然技術上更新對象 - 你實際上製作對象負載的副本,創建另一個新對象,並且新對象具有所需的元數據。這個新對象(相同的有效載荷,不同的元數據)會覆蓋前一個對象(相同的有效載荷,原始或空元數據)。 S3在內部進行有效載荷拷貝,因此實際上並沒有下載並重新上傳。

的解決辦法是使用的東西這樣做要麼使用所需的元數據,或取舊的對象的元數據(如適用)上傳,並用它來創建新的對象。這個「東西」可以是你寫的工具或者你找到的工具。

+0

這很有道理。謝謝 –