iT邦幫忙

2026 iThome 鐵人賽

DAY 9
0
自我挑戰組

30 天的 SAA 學習筆記系列 第 9

Day 9 - 運算與儲存核心 S3:儲存類別與生命週期管理

  • 分享至 

  • xImage
  •  

📦 S3 是什麼

S3(Simple Storage Service)是物件儲存服務——存進去的東西是完整的「物件」(object),不是一顆硬碟或一個檔案系統。每個物件放在一個 bucket(儲存桶)裡,用一個 key(鍵,通常長得像路徑,例如 logs/2026/09/access.log)當唯一識別碼,物件不支援像檔案系統那樣的局部修改,存取單位是整個物件:寫入是整份覆蓋,讀取是整份下載。

Bucket 名稱在整個 AWS(不只是自己的帳號)裡必須唯一。一個物件的位置寫出來長這樣:

s3://my-app-logs/logs/2026/09/access.log
    └── bucket ┘└──────── key ─────────┘

S3 的設計耐用度是 11 個 9(99.999999999%),物件遺失的機率極低——但耐用度不等於可用性,可用性依儲存類別不同而有落差,下面會看到。讀寫一致性是強一致:寫入或覆蓋成功後,馬上讀一定拿到最新版本,不會讀到舊的。


🗂️ 儲存類別一次看懂

同一份資料,S3 依照「多久會被存取一次」分成好幾種儲存類別,價格跟這個存取頻率成反比;差別不只在價錢,還包括資料實際存在幾個 AZ(AZ 數量,數字越大代表單一 AZ 故障時越不會受影響),以及要多久才能真的讀到內容(取用速度):

儲存類別 適合情境 AZ 數量 取用速度
S3 Standard 常態存取(一個月不只一次) ≥3 毫秒
S3 Intelligent-Tiering 存取模式不確定或會變 ≥3 毫秒(選用的歸檔層例外)
S3 Standard-IA 不常存取(約一個月一次),但要保留唯一一份、不能重建的資料 ≥3 毫秒
S3 One Zone-IA 不常存取、資料弄丟可以重建(例如複寫出來的副本) 1 毫秒
S3 Glacier Instant Retrieval 約每季存取一次,但要即時讀到 ≥3 毫秒
S3 Glacier Flexible Retrieval 約每年存取一次,可以等 ≥3 分鐘~數小時
S3 Glacier Deep Archive 幾乎不存取的長期封存 ≥3 數小時~48 小時

IA(Infrequent Access) 指的就是「不常存取」。One Zone-IA 只存在一個 AZ,便宜但沒有 AZ 故障的容錯能力,AWS 官方建議只拿它放「弄丟了也能重建」的資料,例如另一個 bucket 已經有正本的複寫副本。

便宜的類別不是白給的,每一種都有附帶條件:可用性是 AWS SLA 承諾「隨時讀得到資料」的比例,數字比耐用度低很多,代表偶爾會撲空、要重試;取回要錢嗎則是除了每月的儲存費之外,把物件實際讀出來這個動作要不要另外按 GB 收費。這張表是後面算成本時真正會用到的:

儲存類別 最短計費天數 最小計費大小 可用性 取回要錢嗎
Standard 99.99% 不用
Intelligent-Tiering 無(小於 128 KB 不監控、留在 Frequent 層) 99.9% 不用,但每個物件有監控費
Standard-IA 30 天 128 KB 99.9% 每 GB 收
One Zone-IA 30 天 128 KB 99.5% 每 GB 收
Glacier Instant Retrieval 90 天 128 KB 99.9% 每 GB 收
Glacier Flexible Retrieval 90 天 每物件另加 40 KB 中繼資料 99.99%(還原後) 每 GB 收,依速度分級
Glacier Deep Archive 180 天 每物件另加 40 KB 中繼資料 99.99%(還原後) 每 GB 收,依速度分級

「最小計費大小 128 KB」的意思是:一個 10 KB 的物件放在 Standard-IA,照 128 KB 收費。所以一堆小檔案丟進 IA 類別,反而可能比留在 Standard 貴。

Intelligent-Tiering 怎麼自動搬

它不是一個固定的類別,而是一個會自己換層的容器。物件放進去先在 Frequent Access 層,連續 30 天沒被讀就降到 Infrequent Access 層,連續 90 天沒讀再降到 Archive Instant Access 層——這三層都還是毫秒取用,讀了會自動升回 Frequent。另外還有兩個要自己打開的歸檔層:Archive Access(90 天以上沒讀)和 Deep Archive Access(180 天以上沒讀),這兩層取用要先還原、要等,開了才會用到。代價是每個物件每月一筆小額監控費,換來的是不用自己猜存取模式。

Glacier 的取回速度

三個 Glacier 類別裡,只有 Glacier Instant Retrieval 是毫秒等級、跟 Standard 一樣直接讀。下面這張表只講另外兩個——Flexible RetrievalDeep Archive:它們的物件是「封存」狀態,讀之前要先發 restore 請求,S3 做出一份暫存副本放一段你指定的天數才能讀,取回速度目前分三級,快慢對應不同價格(以下時間區間是 AWS 目前公告的數字,實際以當下文件為準):

Expedited Standard Bulk
Glacier Flexible Retrieval 1~5 分鐘 3~5 小時 5~12 小時
Glacier Deep Archive 沒有這個選項 約 12 小時 約 48 小時

「稽核要在幾小時內拿到」和「即時讀取」是兩種完全不同的需求,前者 Flexible Retrieval 的 Standard 就夠,後者只能用 Instant Retrieval 或 IA 類別。


⏳ 生命週期規則:依天數自動轉移與刪除

上面那張表是「有哪些類別」,但物件不會自己知道該去哪一類。Lifecycle 規則負責這件事:幫 bucket(或用前綴、標籤篩選出來的一群物件)設定「滿幾天就搬到哪個類別」,甚至「滿幾天就整個刪掉」。一條規則寫出來大概是這樣:

規則名稱:archive-logs
套用範圍:key 前綴 logs/ 的所有物件

動作
  滿 30 天   → 轉到 Standard-IA
  滿 90 天   → 轉到 Glacier Flexible Retrieval
  滿 365 天  → 過期刪除
  另外:未完成的 multipart upload 超過 7 天 → 清掉(不然殘片會一直計費)

搬遷方向只能單向往下(AWS 官方稱為 waterfall model):從 Standard 可以搬去 Standard-IA、Intelligent-Tiering、One Zone-IA 或任一 Glacier 系列,但 Glacier Flexible Retrieval 之後只能再轉到 Deep Archive,轉進 Deep Archive 之後就不能再用 Lifecycle 轉走——要拿回來,得先「還原」(restore)出一份暫存副本。

規則有三個限制:

  1. 物件小於 128 KB,預設不會被 Lifecycle 轉走。 規則寫了「30 天後轉 Standard-IA」,一堆幾 KB 大小的小檔案還是留在原地不動,除非規則本身另外加了物件大小篩選條件。
  2. 每個類別有最短計費天數(Standard-IA/One Zone-IA 是 30 天,Glacier Instant Retrieval/Flexible Retrieval 是 90 天,Deep Archive 是 180 天)。沒滿這個天數就刪除、覆蓋或轉走,S3 照樣把剩下天數的費用一次收齊,不會因為東西不在了就不計費。
  3. 同一條規則裡的兩段轉移,中間要隔滿前一個類別的最短天數。 「第 4 天轉 Glacier Instant Retrieval、第 20 天轉 Deep Archive」這種寫法不成立,第二段至少要排在第 94 天以後。

Bucket 有開 Versioning 的話,規則可以分別針對「目前版本」和「舊版本」設定:舊版本設定為保留 30 天後刪除,是常見的一種寫法。


📌 補充

主題 說明
Versioning(版本控制) 開啟後,同一個 key 被覆蓋或刪除時,舊版本會留下來而不是消失;「刪除」變成加一個 delete marker,可以復原。Cross-Region Replication 的前提就是這個
Cross-Region Replication(CRR) 把物件自動複寫到另一個 Region 的 bucket,來源和目的地 bucket 都要先開 Versioning;常搭配 One Zone-IA 當目的地類別,因為複本弄丟了,來源那份還在
S3 Object Lock WORM(write once, read many)模式,鎖定物件在一段期間內不能被刪除或覆寫。Governance 模式允許有特定權限的人繞過;Compliance 模式連 root 帳號都鎖得住
Storage Class Analysis S3 內建的分析工具,觀察物件實際存取頻率,輔助判斷該不該把某群物件轉去 Standard-IA,本身不會自動搬遷,仍要人另外設定規則
同 Region 複寫(SRR) 跟 CRR 一樣的機制,只是目的地在同一個 Region,用途是把多個 bucket 的 log 彙整到一個,或是正式/測試環境同步一份資料

儲存類別的選擇依據是存取頻率,不是資料的重要性;生命週期規則讓這個判斷自動執行,但小物件的轉移門檻與各類別的最短計費天數,都會影響實際節省的成本。


🧠 AI 出題

問題 1

某公司在 S3 中保存法遵稽核用的交易紀錄,這些檔案平均每季會被稽核人員存取一次,但每次被要求提供時都必須立即(幾秒內)讀取到完整內容,不能有還原等待時間。公司希望在滿足這個存取模式的前提下,把儲存成本降到最低。

哪一種儲存類別最符合這個需求?

  • A. S3 One Zone-IA,因為它是即時讀取的類別中最便宜的一種
  • B. S3 Standard-IA,因為它同樣是毫秒級讀取
  • C. S3 Glacier Instant Retrieval
  • D. S3 Glacier Flexible Retrieval

問題 2

某公司在 S3 建立了一條生命週期規則,套用在 archive/ 前綴的物件:第 30 天轉到 S3 Glacier Flexible Retrieval,第 60 天再轉到 S3 Glacier Deep Archive。設定儲存後,主控台顯示規則驗證失敗,無法儲存生效。工程師確認前綴、Effect 都沒有打錯字。

這條規則失敗的原因最可能是什麼,應該怎麼修改?

  • A. Glacier Flexible Retrieval 的最短計費天數是 90 天,兩段轉移之間至少要間隔滿這個天數,應該把第二段轉移的時間點改成第 120 天(30+90)以後
  • B. Lifecycle 規則一次只能設定一段轉移,應該拆成兩條獨立規則各自套用
  • C. 把轉移順序反過來,第 30 天先轉到 Glacier Deep Archive,第 60 天再轉回 Glacier Flexible Retrieval
  • D. 改用物件標籤(tag)取代 key 前綴作為篩選條件,讓規則可以串接兩段以上的轉移

問題 3

某公司受金融法規要求,特定 S3 bucket 中的合約文件在建立後 7 年內不得被任何人刪除或覆寫,即使是擁有 s3:* 權限的帳號管理員或 root 使用者也不行。公司同時要求,這些文件要在另一個 Region 保留一份唯讀副本,以防單一 Region 發生區域性事故。

解決方案架構師應該如何設定,才能同時滿足這兩項要求?

  • A. 啟用 Versioning 與 S3 Object Lock 的 Governance 模式設定 7 年保留期,並在 IAM Policy 中明確 Deny 所有人的刪除權限,再設定 Cross-Region Replication 到另一個 Region
  • B. 只在來源 bucket 啟用 S3 Object Lock 的 Compliance 模式並設定 7 年保留期,不需要開啟 Versioning,另外用 AWS Backup 每天備份一份到另一個 Region
  • C. 在來源與目的地 bucket 都啟用 Versioning 並設定 Cross-Region Replication,由應用程式在上傳物件時自行加上 legal hold 標頭達成保護,不需要在 bucket 層級啟用 Object Lock
  • D. 啟用 Versioning 與 S3 Object Lock 的 Compliance 模式設定 7 年保留期,另在目的地 Region 建立已啟用 Versioning 的 bucket,設定 Cross-Region Replication

問題 4

某公司每天產生數百萬個平均大小約 8 KB 的應用程式 log 檔案,儲存在 S3 Standard。為了省錢,工程師設定生命週期規則,滿 30 天就把這些物件轉移到 S3 Standard-IA。轉移後檢查帳單,儲存費用不但沒有下降,反而比留在 Standard 時更高。

造成帳單不減反增的原因最可能是什麼?

  • A. Lifecycle 規則的轉移動作本身要收取一次性的高額執行費,物件數量龐大導致這筆費用超過了儲存費的節省
  • B. Standard-IA 的最短計費天數是 90 天,物件在未滿 90 天前被存取或刪除會被追加整整 90 天的費用
  • C. Standard-IA 對小於 128 KB 的物件仍以 128 KB 計費,8 KB 的檔案轉過去後每個物件的計費大小暴增,抵銷甚至超過單價下降帶來的節省
  • D. 這些 log 檔案的存取頻率其實還很高,Standard-IA 對每 GB 取回另外收費,頻繁讀取才是帳單上升的主因

問題 5

某公司在 S3 儲存使用者上傳的多媒體檔案,存取模式因內容熱度而波動、很難預測;同時營運團隊過去發生過幾次工程師手滑刪除物件的事故,公司希望之後即使物件被覆蓋或刪除,都能夠復原到刪除前的版本,且不想自己寫程式分析存取模式來決定該轉哪個儲存類別。

解決方案架構師應該建議哪兩項做法?(選擇兩項)

  • A. 為 bucket 啟用 S3 Intelligent-Tiering,讓物件依實際存取狀況在不同存取層之間自動搬移,不用自己判斷存取模式
  • B. 執行 Storage Class Analysis,並設定它每天自動把冷資料搬到 Standard-IA
  • C. 改用 S3 One Zone-IA 儲存所有檔案,因為它是最便宜的即時存取類別
  • D. 為 bucket 啟用 Versioning,讓物件被覆蓋或刪除時保留舊版本,需要時可以復原到刪除前的狀態
  • E. 為 bucket 開啟 Cross-Region Replication,把物件複寫到另一個 Region 作為誤刪的復原手段

💡 解答

1. C

Glacier Instant Retrieval 的存取速度是毫秒級,符合「立即讀取」的要求,而它設計給的存取頻率正好是大約每季一次,持續儲存成本比其他能立即讀取的類別更低。

B 技術上也能立即讀取,但它設計給大約每月一次的存取頻率,拿來放每季才讀一次的資料,持續儲存的單位成本會比 Glacier Instant Retrieval 貴。D 的讀取要先發 restore 請求、等待分鐘到數小時,不符合「立即讀取」。A 雖然便宜又是毫秒讀取,但只存在一個 AZ、沒有容錯,適合的是弄丟了可以重建的資料,不適合稽核紀錄這種必須保留的正本。

2. A

Glacier Flexible Retrieval 的最短計費天數是 90 天,同一條規則裡兩段轉移之間,至少要間隔滿前一個類別的最短天數;原規則第 30 天轉入、第 60 天就轉出,只隔了 30 天,把第二段改到第 120 天(30+90)以後才符合這個限制。

B 是誤解:同一條 Lifecycle 規則本來就可以在裡面設定多段轉移,不需要拆成多條規則。C 方向錯了:Lifecycle 是單向的 waterfall,物件轉進 Glacier Flexible Retrieval 後只能再往 Deep Archive 走,不能反向轉回較「熱」的類別。D 也是誤解:key 前綴篩選完全支援多段轉移,不存在「前綴只能轉一次」這種限制,問題不在篩選條件上。

3. D

S3 Object Lock 必須先在 bucket 啟用 Versioning 才能使用,Compliance 模式在保留期內連 root 使用者都無法刪除或覆寫物件,滿足「任何人都不能刪」的最嚴格要求;搭配在另一個已啟用 Versioning 的 Region bucket 設定 Cross-Region Replication,則滿足異地備援的要求。

A 的 Governance 模式允許擁有特定權限的人繞過保留設定,IAM Deny 規則也管不到 root 使用者,不符合「連 root 都不行」的要求。B 漏了前提:S3 Object Lock 要求 bucket 必須先啟用 Versioning 才能設定,沒開 Versioning 就無法套用,而且 AWS Backup 每天備份的頻率也達不到即時的異地保護。C 把保護責任丟給應用程式自己加 header,但 Object Lock 必須先在 bucket 層級啟用才會真正生效,單靠上傳時加的 legal hold 標頭而不啟用 bucket 層級設定不會被強制執行。

4. C

Standard-IA 對小於 128 KB 的物件仍以 128 KB 計費,8 KB 的 log 檔案轉過去後,每個物件的計費大小暴增超過 15 倍;雖然 Standard-IA 的每 GB 單價比 Standard 低,但小物件被墊高的計費大小抵銷甚至超過了單價下降帶來的節省,導致整體帳單不減反增。

A 誇大了一次性轉移請求費的影響,這筆費用遠小於持續性的儲存費差異,不足以解釋帳單顯著上升。B 的天數寫錯了:Standard-IA 的最短計費天數是 30 天,不是 90 天(90 天是 Glacier Instant Retrieval 與 Flexible Retrieval 的門檻)。D 憑空假設了題幹沒提到的讀取行為,題目只說明是為了省錢做轉移,沒有任何證據顯示讀取模式改變或有取回費用發生。

5. A、D

Intelligent-Tiering 會依物件實際的存取狀況,在 Frequent、Infrequent 等存取層之間自動搬移,不用自己分析或預測存取模式;Versioning 則讓物件被覆蓋或刪除時保留舊版本(刪除只是加上 delete marker),符合「能復原到刪除前版本」的要求。

B 是誤解:Storage Class Analysis 只負責分析、提供建議,本身不會自動搬遷物件,仍然要另外設定 Lifecycle 規則才會真的移動。C 違反可用性期待:One Zone-IA 只存在一個 AZ、沒有跨 AZ 容錯,而且它是固定類別,不會依存取頻率自動搬遷。E 的 Cross-Region Replication 解決的是異地備援,不是「自動依存取頻率分層」或「復原被覆蓋/刪除的版本」這兩個訴求。


上一篇
Day 8 - 運算與儲存核心 EC2:實例類型與定價模式
系列文
30 天的 SAA 學習筆記9
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言