iT邦幫忙

2025 iThome 鐵人賽

DAY 6
0

各位先深呼吸,因為今天要講的不是什麼太艱難的東西,而是 Amazon S3 版本控管 (Versioning) ,一個能讓你誤刪檔案後,還能假裝自己沒事的功能。

沒錯,這東西就像 Git 一樣,專門拿來對付「誰把檔案刪掉啦!!!」的慘劇。

S3 版本控管啟用

S3 的 bucket 就像工程師的職涯,有三種狀態:

  1. 未進行版本控制 (預設)
    就是剛出社會還沒學會版本控管的新鮮人,東西放上去就直接被覆蓋,沒備份、沒版本,人生隨時爆炸。
  2. 已啟用版本控制
    終於知道為什麼要用 Git 的工程師,檔案每次上傳都留一份,不會真的消失。老闆刪掉你的檔案?別怕,版本還在。
  3. 已暫停版本控制
    就像被老闆說「別再浪費空間了啦」的無奈工程師。你可以暫停紀錄,但之前的版本還是會留著,想回到「未進行版本控制」?抱歉 AWS 說:人生沒有 Ctrl+Z

怎麼啟用版本控管

進到 S3 的 bucket 設定,把 版本控管 打開。
這就像開啟「自動存檔」功能,雖然會讓硬碟哭,但能救你下次不小心 rm -rf 的時候。

先在 Bucket 清單中,選擇您要啟用版本控制的 Bucket 名稱。
再選擇 Properties (屬性)。
在 Bucket Versioning 設定中,選擇 Edit (編輯)。
https://ithelp.ithome.com.tw/upload/images/20250916/20141071WQFiXcSvw6.png

Enable (啟用)選起來,然後選擇 Save changes (儲存變更),這樣就完成啦!是不是很簡單。
https://ithelp.ithome.com.tw/upload/images/20250916/20141071Bt7uiWdFSX.png
如果之後想要暫停版本控管功能的話,一樣到這裡來選擇 Suspend (暫停) 就可以了。
要注意的是版本控管的功能一旦啟用後,就只能暫停,沒有關閉的選項,後面我們會講怎麼把舊版本的檔案刪除。

上傳檔案

版本控管功能開起來後,在平常的使用上是相同的,
https://ithelp.ithome.com.tw/upload/images/20250916/20141071XCj76nGQTu.png

只要將要上傳的檔案從檔案總管裡拖拉到 S3 控制界面的物件清單畫面就會看到上傳功能準備接收檔案囉!如下圖
https://ithelp.ithome.com.tw/upload/images/20250916/20141071mD0buaCXJZ.png

檔案拉進來後,就會出現上傳清單,確認要上傳的檔案沒錯後,再點選右下角的 Upload。就會進行檔案上傳了。
https://ithelp.ithome.com.tw/upload/images/20250916/20141071x8N3UGZsQz.png

檔案上傳成功後,界面會出現綠色的標示告知上傳檔案成功。最後點選 Close 按鍵回到檔案清單就可以了。
https://ithelp.ithome.com.tw/upload/images/20250916/20141071eOvOtDFkJl.png

版本控管下對同一個檔名的檔案上傳多次時,並不會覆寫目前的版本,而是將相同檔名的檔案以不同的版本 ID 都保存下來。
https://ithelp.ithome.com.tw/upload/images/20250916/20141071IPx998LCUw.png
這句文言文的意思就是啟用版本控管後,你再上傳同名檔案,它不會幫你覆蓋舊檔案,而是給你一個新的版本 ID,像開分支一樣全收好。

這就像老闆每週都改需求,但你至少還能翻回去看「上禮拜到底是誰說要做這樣的?」。

列出全部版本的檔案

同名檔案在 S3 的物件清單裡還是只能看到最新上傳的版本,要怎麼才能看到全部版本的檔案呢?
這時就要注意一個 S3 界面上的小細節了,參考下面的截圖,有沒有發現界面上突然多出了一個 Show versions(顯示版本) 的可開啟選項。
https://ithelp.ithome.com.tw/upload/images/20250916/20141071iJZn0IxtY5.png

對!!就是那道光(咳~這個梗有點老)!!
那就是看到全部版本檔案的關鍵,當我們把它開起來後,就會看到另一個世界(顯示界面)。
https://ithelp.ithome.com.tw/upload/images/20250916/20141071o267Tvzgzc.png
可以看到物件的顯示出現了像樹狀圖的分支,仔細看其中的資訊,就能明白哪個最新版本的物件,哪個又是舊版本的檔案。

什麼!!能不能像 Git 一樣

刪除物件檔案

一般情況下刪除物件檔案的基本操作,只要在控制界面上選擇要刪除的物件檔案後再點選中間位置的 Delete 按鍵,就可以把物件檔變不見了。
注意:在啟用版本控管功能下的刪除物件檔案並不是真的刪除乾淨,只是將檔案註記為刪除,並沒有真的將檔案刪掉
https://ithelp.ithome.com.tw/upload/images/20250916/20141071ivT39e8qED.png

那啟用版本控管下要怎麼真的將物件檔案刪除呢?聰明的小夥伴應該已經想到了,是不是先將 Show versions 功能開啟後再做刪除的動作呢?

答案是的!!是不是也很簡單,只要觀念通了,事情就順了。
開啟 Show versions 後就能看到全部版本的物件檔案,再將要刪除的物件檔案選起來,再選 Delete ,如下圖!
https://ithelp.ithome.com.tw/upload/images/20250916/20141071CBfddv073g.png

點下 Delete 後會看到以下的畫面,上方是一個警示訊息,主要是提醒你兩件事。

  1. 如果你選的是**資料夾 (Folder) ** 的時候
    S3 會把底下的所有物件檔案都砍掉,這沒問題。但重點來了:
    如果在刪除進行中的時候,有人剛好又丟新檔進去這個資料夾,那些新檔也會被一併送去見祖先。
  2. 刪了就沒了哦!!
    被刪掉就是被刪掉,無法 Undo。沒有 Ctrl+Z,沒有後悔藥。AWS 會冷冷跟你說:「資料?啊早就沒啦。」
    https://ithelp.ithome.com.tw/upload/images/20250916/20141071f9JBMswCmr.png
    在左下方需要再做一次確認,你需要準確的輸入 permanently delete - 就是永久刪除的意思。最後點選右下角的 Delete Objects ,毀滅物件的飛彈就會發射將物件擊毀了。
    這次真的就沒了,不管有沒有將 Show versions 開啟都看不到那個物件檔案了。

依照這樣的操作邏輯,如果我不是要刪除某個版本的物件檔案。而是要取出某個版本的物件檔案,是不是可以用一樣的操作,但最後不要選 Delete ,而是選擇了 Download ,就能下載到之前的版本呢?能聯想到這裡的小夥伴真是太厲害了,是的~~ 。就是這樣用的哦!!!

暫停版本控管

如果
說明怎麼暫停版本控管的功能

注意事項:您可以在 Bucket 層級啟用和暫停版本控制。 Bucket 的版本控制一旦啟用,就無法再回復為未使用版本控制狀態。不過,您可以暫停 Bucket 的版本控制。

今天的閒聊就先到這邊,明天讓我們來聊聊 S3 生命週期設定

參考資料:Amazon S3 使用者指南官方文件 - https://docs.aws.amazon.com/zh_tw/AmazonS3/latest/userguide/Welcome.html


上一篇
Day 5 - 用 S3 建立網頁 - 設定篇 2
系列文
最適合小型工作室精打細算的服務使用法6
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言