2012-09-29 133 views
11

如果我將文件上載到S3並且文件名與存儲桶中對象的文件名相同,則會覆蓋它。有什麼選擇可以避免覆蓋具有相同文件名的文件?我在我的桶中啓用了版本控制,認爲它會解決問題,但對象仍然被覆蓋。Amazon S3避免覆蓋具有相同名稱的對象

+0

我不確定,但不能 您將ACL設置爲只讀此對象?我的意思是,爲你上傳的每個對象。 – Prinzhorn

+0

我將ACL設置爲公開,因爲任何人都可以看到這些文件。 – CyberJunkie

回答

6

從上面我的意見不起作用。我認爲WRITE ACL也適用於對象,但它只適用於桶。

由於您啓用了版本控制,您的對象不會被覆蓋。但是,如果您未在GET請求或URL中指定版本,則會採用最新版本。這意味着,當您將對象放入S3中​​時,您需要保存響應告訴您的versionID以便檢索第一個對象。

有關更多信息,請參見Amazon S3 ACL for read-only and write-once access

+0

謝謝!我會嘗試。 – CyberJunkie

2

您還可以配置具有有限權限的IAM用戶。寫入仍然是寫入(即更新),但使用IAM用戶無論如何都是最佳實踐。

所有者(即您的「長期訪問密鑰和密鑰」)始終擁有完全控制權,除非您完全無法完全禁用它。

+0

謝謝我沒有想到這一點。如果我可以在AWS中進行設置,那麼無法更新/覆蓋的用戶將是理想選擇。 – CyberJunkie

+1

您必須仔細檢查文檔。我不知道S3是否理解_write_和_update_之間的區別。我知道默認情況下(即完全權限),寫入和更新被視爲同一件事。 –

1

這是我的建議,如果您使用數據庫來存儲s3存儲桶中每個文件的密鑰。

生成一個隨機密鑰。 嘗試在允許空條目的UNIQUE約束的字段中插入/更新您的DB的密鑰。 如果失敗,則使用該密鑰,直到獲得唯一密鑰。

然後把你的文件放在s3上,你的密鑰,你知道是獨一無二的。