S3(Simple Storage Service)是 AWS 的物件儲存服務。每個檔案(object)放在一個 bucket 裡、用 key(路徑)定址。S3 的持久性設計為 99.999999999%(11 個 9),資料自動跨多個可用區複製,不需要手動備份 S3 本身——要保護的是「物件被覆寫或刪除」的風險,而非「S3 服務掛掉」的風險。

概念位置

S3 在 infra 系列裡有三個角色:Terraform state 的存放處(remote state backend)、應用程式的靜態檔案儲存(上傳內容、備份歸檔)、以及 log 的長期保存目的地。模組一(state backend)、模組五(storage)、模組八(治理)都涉及 S3。

可觀察訊號

需要理解 S3 的情境包括:設定 Terraform 的 remote state backend、管理使用者上傳的檔案、設計備份歸檔策略、或評估儲存成本。

設計責任

使用 S3 時要決定的關鍵設定:

設定決定什麼影響
versioning是否保留物件的歷史版本覆寫或刪除後能回溯(state bucket 必開)
encryption靜態加密方式(SSE-S3 / SSE-KMS)合規與金鑰管理
public access block是否封鎖公開存取安全(預設全封鎖)
lifecycle rules自動移到低成本儲存類或過期刪除成本控制(如 30 天後移到 Glacier)
bucket policy跨帳號或跨服務的存取規則權限邊界

versioning 開啟後,刪除物件只是加一個 delete marker、實際資料還在。要真正刪除需要刪除 delete marker 和所有歷史版本。這是保護 state 檔的關鍵機制——誤寫 state 後可以回捲到上一個版本。

鄰卡