iT邦幫忙

2025 iThome 鐵人賽

DAY 2
0

在介紹 S3 的隱藏服務之前,先來分一個單元來做服務說明。Amazon S3 是 Amazon Simple Storage Service 的簡稱,就是用來保存檔案的地方。

S3 = Simple Storage Service(簡單到讓人懷疑人生的儲存服務,權限設定也可以複雜到讓人懷疑人生)
首先來科普一下,S3 全名叫做 Simple Storage Service,翻成中文就是「簡單儲存服務」。雖然名字是說簡單,真的用起來的確也不難。但實際真要講究最小權限設定和一些進階用法時,就變成工程師們天天在研究各種 IAM 政策、生命週期管理、跨區域複製的複雜玩意兒,跟簡單一點也沾不上邊。但我們還是以初步應用為主,先把基本的東西說完。

S3 核心概念與基礎認識

物件儲存 vs. 區塊儲存 vs. 檔案儲存
在開始之前先來聊聊 Amazon S3 的核心概念。放心,我知道大家聽到「儲存」兩個字就快打瞌睡,但別急,這東西真的很重要。因為如果你搞不清楚物件儲存 vs. 區塊儲存 vs. 檔案儲存,你在使用 S3 的過程中,可能會遇到令人驚嚇的費用。
https://ithelp.ithome.com.tw/upload/images/20250912/20141071eFOr5jEoMG.png

區塊儲存(Block Storage)

先講區塊儲存。這東西就像你家的硬碟一樣,系統就是直接對「區塊」下指令。你要讀第 27 區塊?沒問題。要寫進去?直接 overwrite。它快、它低階、它聽起來超硬派。

舉例來說,像 EBS (Elastic Block Store) 就是 AWS 的區塊儲存服務。你把它接在 EC2 上,就像在電腦上插了一顆 SSD。
缺點是什麼?資料跟那台機器綁死死。今天 EC2 被刪了,EBS很有可能也一起被刪了,你要救資料就會很麻煩。

簡單講,區塊儲存就是 「我要硬碟,現在馬上給我一顆。」

檔案儲存(File Storage)

接著是檔案儲存。這個大家應該最熟,就是一般的 檔案系統,用路徑存取 /home/this_is_not_a_virus.exe

在 AWS 世界裡,這個東西的代表就是 EFS (Elastic File System)。它很像公司那種共用網路磁碟機,誰都可以連上去放檔案。

缺點?啊就是跟你同事共用資料夾一樣,總有人會在裡面放一堆垃圾檔案,還愛取名叫 final_v2_final_really_final.docx。然後整個效能就慢下來。

檔案儲存的精神就是 「我有資料夾,大家一起來丟東西。」

物件儲存(Object Storage)

重頭戲來了,就是 S3 用的 物件儲存。物件儲存的邏輯是:我不跟你裝熟,不搞什麼「檔案系統」、「區塊存取」。我就給你一個 bucket,你丟進來的每個東西都叫「物件」,然後我幫你用 key-value 管理。

簡單比喻就是:

  • 你丟一張圖上來,我就幫你取個 key,例如 cat.jpg
  • 你丟一個 CSV,上傳完它就跟你說「OK,已經存在 bucket 裡了,自己去 URL 拿」。

聽起來很廢?但厲害的地方就是它的擴展性跟耐操度。S3 基本上是「你想放多少檔案就放多少」,要 TB 級、PB 級隨便你。當然,最後帳單來的時候,你會想哭,因為「這個月又爆預算了」。

而且物件儲存天生就適合做靜態網站、影像檔、備份資料這種東西,反正你就是丟進去,不用在意底層的細節。

S3 的精神就是 「給我一個 key,我幫你顧一輩子(錢夠的話)。」

S3 的隱藏服務 1 - 版本控管

https://ithelp.ithome.com.tw/upload/images/20250912/20141071yM8NbPzXfv.png
S3 其實有個版本控管的功能,一旦開啟後就可以保存每次更改的檔案內容。即使是誤刪了了也不怕,還有機會可以還原回來。這個部份在後面實作時再來說明,但是在這裡務必要記得 S3 是物件型的檔案系統,如果概念不清楚的話,極有可能出現令人驚嚇的天價帳單。

為什麼我會說如果如果沒搞清楚的話,使用 S3 的過程可能會發生令人驚嚇的費用嗎?

先講重點:S3 這東西本來就有點「看似簡單卻能把你錢包炸光」的潛質。尤其當你不小心打開了那個神奇的開關——版本控管 (Versioning)

一開始你會覺得這功能超佛,表面看起來很美好:

  • 「哇靠,檔案會自動保留版本耶!」
  • 「這樣我就不怕誤刪了吧!」
  • 「跟 Git 一樣帥氣!」

結果呢?你以為它會像 Git 一樣只存差異?大錯特錯

S3 的邏輯是:

「你今天上傳一個物件?好,我幫你存一份。
你明天又傳同一個 key?好,我再幫你存一份完整的。」

簡單粗暴,沒有什麼 diff,不搞壓縮,就是直接多一份。

來,想像一個血淋淋的案例
假設你今天有個 100 GB 的圖檔(對,就那種設計部門傳來說「只是小檔案」的鬼東西)。

  • 第一天上傳:S3 幫你收下來,100 GB。
  • 第二天設計師說「我只改了角落一個像素」,你又上傳:S3 繼續幫你存,再來一份 100 GB
  • 這樣持續十天:你以為只有 100 GB?不,S3 幫你照顧到快 1 TB

而且 AWS 的帳單寄來時不會提醒你:「恭喜,存了一堆版本」。

所以要啟用版本控管功能前一定要小心,越方便強大的功能,背後的代價也不小,這不就是等價交換嗎?


上一篇
Day 1 - 說明文章的主要方向
下一篇
Day 3 - Amazon S3的隱藏服務 - 2
系列文
最適合小型工作室精打細算的服務使用法4
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言