Amazon S3 儲存桶版本控制完整指南
更新日期: 2024 年 12 月 18 日
本文為 圖片上傳 AWS S3 系列教學,第 7 篇:
- AWS S3 是什麼?
- boto3 與 django-storages:如何在 Django 中對接 AWS S3
- AWS S3 與 IAM:圖片上傳功能的權限管理指南
- S3 與 Postgres 的比較與應用
- Amazon S3 物件所有權設定解析
- AWS S3「阻止所有公開訪問」設定說明
- Amazon S3 儲存桶版本控制完整指南 👈 所在位置
- 如何設定 S3 儲存桶的「預設加密」?—— 初學者指南
- S3 儲存桶標籤(Tags)簡單介紹:讓你的 S3 管理更輕鬆!
- AWS S3 物件鎖定功能入門指南
- AWS S3 公開存取權完整指南
- AWS CORS 預檢請求與設定指南
- AWS IAM 設定教學:生成訪問密鑰以用於 S3 配置
- django-storages 基本配置:讓應用程式連接 S3 存儲桶
- Django-storages 的完整配置教學:從隱密性到快取控制
- Django-storages 完整配置指南:從文件存儲到訪問路徑
- Django-storages 配置:環境變數設定
- Django-storages 與 STORAGES 配置:未來相容性的最佳實踐
- 如何在 Django 中移除 DEBUG URL 的靜態檔案配置
建議閱讀本文前,先閱讀完 圖片上傳功能 系列文
Amazon S3 的「儲存桶版本控制」功能,讓你能夠保留檔案的多個版本,有效防止誤刪、誤改,並支援還原到先前版本。
這功能非常類似於「檔案版本管理系統」,適合有歷史記錄需求或需要保護重要檔案的使用者。
儲存桶版本控制的功能與原理
多版本存儲
- 啟用版本控制後,每次上傳相同名稱的檔案時,S3 會保留舊版本,並建立新版本。
- 每個版本都會有一個 唯一版本 ID,用於識別和管理。
版本管理
- 使用 版本 ID 來讀取、刪除或還原特定版本。
- 刪除檔案時,系統只會新增「刪除標記」,而不會真正刪除所有舊版本,方便回復檔案。
防止意外刪除
- 檔案刪除操作會新增「刪除標記」,讓檔案看起來被刪除,但實際上所有版本仍存在。
- 可輕鬆找回任意先前版本,避免資料遺失。
支援歷史記錄回溯
- 適用於需要保留歷史版本的檔案,例如:文件、日誌、設定檔案等。
具體操作與範例
啟用版本控制前
上傳相同名稱的檔案時:
- 新檔案會直接覆蓋舊檔案,舊版本將無法還原。
啟用版本控制後
- 第一次上傳檔案
- 檔名:
myfile.txt
- 版本 ID:
v1
- 檔名:
- 第二次上傳同名檔案
- S3 會保留
v1
,並新增版本v2
。
- S3 會保留
- 刪除檔案操作
- S3 會新增一個「刪除標記」,不會真正刪除檔案所有版本。
- 還原檔案
- 透過版本 ID,例如
v1
,即可還原到任意版本。
- 透過版本 ID,例如
版本控制的優缺點
優點
- 防止資料遺失:檔案保留歷史版本,避免誤刪或誤覆蓋。
- 支援回復功能:可以隨時還原到任意先前版本。
- 防誤刪機制:刪除檔案只會標記,而非真正刪除。
缺點
- 增加儲存成本:每個版本都會佔用儲存空間。
- 管理較複雜:需要額外工具或機制來清理不需要的版本。
何時應啟用版本控制?
適用情境
- 防止檔案被誤刪或覆蓋。
- 需要保留檔案歷史記錄,例如:文件、日誌、圖片等。
- 適用於正式環境,尤其是保護重要資料的應用。
不適用情境
- 測試或臨時儲存空間,不需保留歷史版本。
- 檔案儲存成本有限,且不需要回溯功能。
儲存成本考量
- 每次上傳同名檔案,S3 都會保留新版本和舊版本,儲存成本隨時間增加。
- 刪除檔案只會新增「刪除標記」,仍保留所有版本,進一步佔用空間。
- 如無自動清理機制,長期存放可能帶來管理與成本壓力。
小結
- Amazon S3 儲存桶版本控制 提供強大的版本管理功能,適合需要保留檔案歷史、回溯或防誤刪的應用。
- 啟用版本控制需謹慎考慮儲存成本與管理需求。
- 若專案只需存放「最新版本」檔案,建議不啟用版本控制,簡化管理並節省成本。
判斷啟用版本控制的依據
- 你的專案是否需要檔案歷史記錄?
- 是否擔心誤刪、誤改重要檔案?
- 能否接受額外的儲存成本?
若後續專案需求改變,可以隨時啟用 S3 版本控制,達到檔案版本保護的最佳效果。