本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
CloudWatch Logs 中的日誌格式
當 Amazon S3 伺服器存取日誌交付至 Amazon CloudWatch Logs 時,每個日誌記錄都是結構化 JSON 物件。這與用於交付至 Amazon S3 一般用途儲存貯體的空間分隔文字格式不同。結構化格式可讓欄位在 CloudWatch Logs Insights 中直接查詢,而無需 regex 剖析。
注意
如需用於一般用途儲存貯體交付的空格分隔文字格式,請參閱 Amazon S3 伺服器存取日誌格式。
日誌記錄欄位
下表說明傳送至 CloudWatch Logs 的每個伺服器存取日誌記錄中的欄位。
| 欄位 | Type | Description |
|---|---|---|
schema_version_id |
string | 日誌記錄結構描述的版本識別符 (例如,V_1_0)。使用此欄位可偵測未來版本中新增欄位時的結構描述變更。 |
bucket_arn |
string | 來源儲存貯體的 ARN。 |
bucket_name |
string | 提出請求的儲存貯體名稱。衍生自儲存貯體 ARN。 |
request_time |
string | 收到請求的時間,以 UTC 為單位。格式化為 ISO 8601 (yyyy-MM-dd'T'HH:mm:ss.SSS'Z')。在 S3 Tables 整合 (Iceberg) 中,此欄位會儲存為 timestamptz。 |
bucket_owner_id |
string | 來源儲存貯體擁有者的正式使用者 ID。 |
remote_ip |
string | 申請者的視在 IP 地址。null 如果無法使用,則預設為 。 |
requester |
string | 請求者的正式使用者 ID,或未驗證請求null的正式使用者 ID。對於 IAM 使用者和角色,這是 ARN。 |
request_id |
string | Amazon S3 為每個請求產生的唯一識別符。null 如果無法使用,則預設為 。 |
operation |
string | 已執行的操作,例如 REST.GET.OBJECT或 REST.PUT.OBJECT。null 如果無法使用,預設為 。 |
key_name |
string | 請求中的物件金鑰,或null操作不涉及物件。 |
request_uri |
string | HTTP 請求訊息Request-URI的一部分,如果無法使用null,則為 。 |
http_status |
int | 回應的數值 HTTP 狀態碼,例如 200或 403。null 如果無法使用,預設為 。 |
error_code |
string | Amazon S3 錯誤代碼,例如 NoSuchKey或 AccessDenied,null或未發生錯誤。 |
bytes_sent_size |
long | 傳送的回應位元組數,不包括 HTTP 通訊協定額外負荷。null 如果無法使用,則預設為 。 |
object_size |
long | 物件的總大小。null 如果無法使用,則預設為 。 |
total_duration |
long | 從收到請求到傳送的回應最後一個位元組的請求總時間,以毫秒為單位。null 如果無法使用,則預設為 。 |
turn_around_duration |
long | Amazon S3 處理請求所花費的時間,以毫秒為單位。此值是從收到請求的最後一個位元組開始測量,直到傳送回應的第一個位元組為止。null 如果無法使用,則預設為 。 |
referer |
string | HTTP Referer標頭的值,如果不存在null,則為 。 |
user_agent |
string | HTTP User-Agent標頭的值。null 如果無法使用,則預設為 。 |
version_id |
string | 請求中的版本 ID,或null操作不涉及版本控制的物件。 |
host_id |
string | Amazon S3 延伸請求 ID (x-amz-id-2)。null 如果無法使用,則預設為 。 |
signature_version |
string | 用來驗證請求的簽章版本: SigV2或 SigV4。對於未驗證的請求null,預設為 。 |
cipher_suite |
string | 針對 HTTPS 請求或 HTTP 交涉null的 TLS 密碼套件。 |
authentication_type |
string | 請求身分驗證的類型:QueryString、 AuthHeader或 null。 |
host_header |
string | 用來連線至 Amazon S3 的端點。null 如果無法使用,則預設為 。 |
tls_version |
string | 用戶端交涉的 TLS 版本:TLSv1.1、TLSv1.3、 TLSv1.2或 null。 |
access_point_arn |
string | 用於請求之存取點的 ARN,或null請求未使用存取點。 |
acl_required |
boolean | 請求是否需要 ACL。不適用null時預設為 。 |
source_region |
string | AWS 區域 請求的來源,或無法判斷原始區域null時 (例如 PrivateLink 連線、Direct Connect 連線、使用您自己的 IP 地址 (BYOIP) 或非AWS IP 地址),或日誌是由根據客戶設定政策或動作觸發的操作產生,例如生命週期和檢查總和。 |
日誌記錄範例
以下是伺服器存取日誌記錄的範例,如 CloudWatch Logs 所示。
{ "schema_version_id": "V_1_0", "bucket_arn": "arn:aws:s3:::my-data-bucket", "bucket_name": "my-data-bucket", "request_time": "2026-04-29T14:32:16.000Z", "bucket_owner_id": "79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be", "remote_ip": "203.0.113.45", "requester": "arn:aws:iam::123456789012:role/DataAnalystRole", "request_id": "3E57427F33A59F07", "operation": "REST.GET.OBJECT", "key_name": "reports/2026/quarterly-summary.parquet", "request_uri": "GET /my-data-bucket/reports/2026/quarterly-summary.parquet HTTP/1.1", "http_status": 200, "error_code": null, "bytes_sent_size": 1048576, "object_size": 1048576, "total_duration": 45, "turn_around_duration": 12, "referer": null, "user_agent": "aws-sdk-java/2.20.0", "version_id": null, "host_id": "s9lzHYrFp76ZVxRcpX9+5cjAnEH2ROuNkd2BHfIa6UkFVdtjf5mKR3/eTPFvsiP/XV/VLi31234=", "signature_version": "SigV4", "cipher_suite": "TLS_AES_128_GCM_SHA256", "authentication_type": "AuthHeader", "host_header": "my-data-bucket.s3.us-east-1.amazonaws.com", "tls_version": "TLSv1.3", "access_point_arn": null, "acl_required": false, "source_region": "us-east-1" }
與一般用途儲存貯體日誌格式的差異
CloudWatch Logs 日誌格式與一般用途儲存貯體日誌格式不同,方式如下:
-
格式 – CloudWatch Logs 日誌是結構化 JSON 物件。一般用途儲存貯體日誌是以空格分隔的文字。
-
欄位名稱 – CloudWatch Logs 格式使用描述性底線分隔欄位名稱 (例如
bytes_sent_size、total_duration、key_name、)authentication_type。一般用途儲存貯體格式是不含具名資料欄的位置空格分隔文字。 -
其他欄位 – CloudWatch Logs 格式包含
schema_version_id和bucket_arn,這些格式不存在於一般用途儲存貯體文字格式中。 -
不需要剖析 – 由於 CloudWatch Logs 日誌是結構化 JSON,因此您可以直接在 CloudWatch Logs Insights 中查詢個別欄位,而不需要 regex 剖析。一般用途儲存貯體文字格式需要 regex 或自訂剖析器才能擷取欄位。