觀點 · 資訊分享

Amazon S3 存取紀錄可直接送進 CloudWatch Logs:能下警報、跨帳號彙整,還能鏡射成 SQL 可查的表

AWS 在 6/29 讓 S3 的伺服器存取紀錄可以直送 CloudWatch Logs,並選擇同步成 Iceberg 格式的 S3 Tables。以前紀錄只能丟進另一個 S3 儲存貯體,現在能即時查詢、設警報,也能用 SQL 分析。

發布
2026-06-29
篇幅
約 5 分鐘 · 2,074 字
結構
7 節 + 3 題常見問題
標籤
#AWS#Amazon S3#CloudWatch Logs#S3 Tables
Amazon S3 存取紀錄可直接送進 CloudWatch Logs:能下警報、跨帳號彙整,還能鏡射成 SQL 可查的表

一句話看懂:AWS 在 6 月 29 日讓 S3 的存取紀錄可以直接送進 CloudWatch Logs,還能同步成可用 SQL 查詢的 S3 Tables,以前只能把紀錄丟進另一個 S3 儲存貯體。

S3 存取紀錄新增兩條送達路徑資訊圖卡:紀錄能直送 CloudWatch Logs 查詢設警報,也能鏡射成 SQL 表

先用白話講:S3 存取紀錄是什麼?

想像 S3 是一間大型倉庫,伺服器存取紀錄就是門口的訪客登記簿:誰、幾點、拿走了或放進什麼,全都記一筆。

以前這本登記簿只能「自動影印後放到隔壁的另一間倉庫(另一個 S3 儲存貯體)」,想查事情得自己把一大堆紙翻出來。現在多了兩種新做法:直接送到有搜尋與警鈴功能的監控室(CloudWatch Logs),或整理成一張可以用 SQL 查的表格(S3 Tables)。

發生什麼事

AWS 在 6 月 29 日宣布 S3 的伺服器存取紀錄可以:

  • 送進 CloudWatch Logs:即時查詢、對錯誤率設警報、觀察流量模式、跨帳號與跨區域彙整,並且可以用 AWS KMS 加密
  • 鏡射到 S3 Tables:以 Apache Iceberg 格式存放,用標準 SQL 在 Amazon Athena、Amazon Redshift 與其他相容 Iceberg 的引擎查詢,適合稽核存取模式、分析使用趨勢、找出費用來源
  • 這兩條都是新增選項,原本送到 S3 一般用途儲存貯體的免費路徑還在
  • 除了中國區與 GovCloud(US)以外,所有 AWS 區域都能用

三種路徑比一比

路徑 適合 重點
S3 一般用途儲存貯體(原本) 便宜地長期保存 免費;加密只支援 SSE-S3
CloudWatch Logs(新) 即時查詢、警報、集中管理 可用自己的 KMS 金鑰;付 CloudWatch Logs 攝入費
S3 Tables(新,需先開 CloudWatch Logs) 用 SQL 做稽核與分析 儲存與維護沒有額外費用

給開發者的技術細節

根據 S3 使用者指南:

  • 設定方式:要用 CloudWatch Logs 的 API 設定,不是 S3 的 API;每個來源儲存貯體指定一個 log group,多個儲存貯體可以共用同一個
  • 生效時間:設定約 15 到 20 分鐘傳播,之後通常幾小時內開始送紀錄;只記錄新請求,不補歷史資料
  • S3 主控台:儲存貯體的「Properties」分頁,有「Server access log delivery to CloudWatch Logs」區塊可啟用,並可勾選 S3 Tables 整合
  • S3 Tables 整合每個帳號每個區域只要建立一次:
aws observabilityadmin create-s3-table-integration \
  --role-arn arn:aws:iam::123456789012:role/CWLogsS3TableIntegrationRole \
  --encryption '{"SseAlgorithm": "AES256"}'
  • 這個 IAM 角色必須信任 logs.amazonaws.com,並授予 logs:integrateWithS3Table 權限;完成後資料通常在第一次送達後一小時內出現
  • 跨帳號彙整有兩種:CloudWatch 跨帳號可觀測性(不複製資料,就地查詢)與 CloudWatch Logs 集中化;多帳號環境可用 Organizations 的啟用規則自動開啟送達,但規則目前不支援自動啟用 S3 Tables 整合,要每個帳號各自開
  • 如果同時用 KMS 加密的 log group 與 S3 Tables 整合,KMS 金鑰政策要另外授權給 systemtables.cloudwatch.amazonaws.com

我的看法

這個更新比表面上更實用,因為它解決了「紀錄存了,卻沒人看」的老問題。以前 S3 存取紀錄放在另一個儲存貯體裡,沒有警報、也不好查,通常出事才會去翻。現在送進 CloudWatch Logs,就能對「異常大量的 403 或 5xx」這類狀況設警報。

不過我會提醒兩點:一是費用,CloudWatch Logs 是依攝入量收費,如果你的儲存貯體請求量很大(例如放網站圖片、對外下載),全部紀錄都送進來可能不便宜,建議先選要稽核的重要儲存貯體開;二是不補舊紀錄,要在事件發生前就開好,出事後才開是看不到過去的。小型專案如果只是偶爾稽核,原本的免費路徑加上 Athena 查詢,可能就夠了。

名詞小辭典

  • 伺服器存取紀錄(Server Access Logs):S3 記錄每次請求的流水帳,包含請求者、時間、操作與結果。
  • CloudWatch Logs:AWS 的紀錄集中管理服務,可以搜尋、設警報。
  • S3 Tables:AWS 提供的表格型儲存,底層用 Apache Iceberg 格式,可以用 SQL 查詢。
  • KMS:AWS 的金鑰管理服務,用來控制資料用哪把金鑰加密。

資料來源

常見問題

S3 伺服器存取紀錄是什麼?
是記錄「誰、什麼時候、對哪個物件做了什麼操作」的流水帳,像大樓的門禁刷卡紀錄。要查誰動過資料、或分析存取模式時就會用到。
跟以前差在哪?
以前紀錄只能送到另一個 S3 一般用途儲存貯體,而且只支援 SSE-S3 加密。現在多了 CloudWatch Logs 這條路徑,可以用你自己的 KMS 金鑰加密、即時查詢、設警報,也能跨帳號彙整。
會多花錢嗎?
送到 S3 儲存貯體的老路徑依官方說明仍然免費。走 CloudWatch Logs 要付 CloudWatch Logs 的攝入費;鏡射到 S3 Tables 的儲存與維護沒有額外費用,只要付 CloudWatch Logs 攝入,以及用 S3 Tables 價格計算的查詢請求費用。實際金額請看你的區域價格。
LINE