View a markdown version of this page

CloudWatch Logs 中的日志格式 - Amazon Simple Storage Service

CloudWatch Logs 中的日志格式

当 Amazon S3 服务器访问日志传输到 Amazon CloudWatch Logs 时,每条日志记录都是一个结构化的 JSON 对象。这不同于用于传输到 Amazon S3 通用存储桶的以空格分隔的文本格式。借助结构化格式,无需正则表达式解析,字段即可在 CloudWatch Logs Insights 中直接供查询。

注意

有关用于通用存储桶传输的以空格分隔的文本格式,请参阅 Amazon S3 服务器访问日志格式

日志记录字段

下表描述了传输到 CloudWatch Logs 的每个服务器访问日志记录中的字段。

CloudWatch Logs 中的服务器访问日志字段
字段 类型 说明
schema_version_id 字符串 日志记录架构的版本标识符(例如 V_1_0)。当在将来版本中添加新字段时,使用此字段来检测架构更改。
bucket_arn 字符串 源存储桶的 ARN。
bucket_name 字符串 向其发出请求的存储桶的名称。派生自存储桶 ARN。
request_time 字符串 收到请求的时间(UTC)。格式化为 ISO 8601 (yyyy-MM-dd'T'HH:mm:ss.SSS'Z')。在 S3 表类数据存储服务集成(Iceberg)中,此字段存储为 timestamptz
bucket_owner_id 字符串 源存储桶拥有者的规范用户 ID。
remote_ip 字符串 请求者的可见 IP 地址。如果不可用,则默认为 null
requester 字符串 请求者的规范用户 ID,或对于未经身份验证的请求为 null。对于 IAM 用户和角色,这是 ARN。
request_id 字符串 由 Amazon S3 为每个请求生成的唯一标识符。如果不可用,则默认为 null
operation 字符串 已执行的操作,例如 REST.GET.OBJECTREST.PUT.OBJECT。如果不可用,则默认为 null
key_name 字符串 请求中的对象键,或者,如果操作不涉及对象,则为 null
request_uri 字符串 HTTP 请求消息的 Request-URI 部分,或者,如果不可用,则为 null
http_status int 响应的数字 HTTP 状态代码,例如 200403。如果不可用,则默认为 null
error_code 字符串 Amazon S3 错误代码,例如 NoSuchKeyAccessDenied,或者,如果没有发生错误,则为 null
bytes_sent_size 长整数 发送的响应字节数(不包括 HTTP 协议开销)。如果不可用,则默认为 null
object_size 长整数 对象的总大小。如果不可用,则默认为 null
total_duration 长整数 从收到请求到发出响应的最后一个字节的请求总时间,以毫秒为单位。如果不可用,则默认为 null
turn_around_duration 长整数 Amazon S3 处理请求所花费的时间,以毫秒为单位。该值计算从收到请求的最后一个字节到发出响应的第一个字节的时间。如果不可用,则默认为 null
referer 字符串 HTTP Referer 标头的值,或者,如果不存在,则为 null
user_agent 字符串 HTTP User-Agent 标头的值。如果不可用,则默认为 null
version_id 字符串 请求中的版本 ID,或者,如果操作不涉及受版本控制的对象,则为 null
host_id 字符串 Amazon S3 扩展的请求 ID (x-amz-id-2)。如果不可用,则默认为 null
signature_version 字符串 用于对请求进行身份验证的签名版本:SigV2SigV4。对于未经身份验证的请求,默认为 null
cipher_suite 字符串 针对 HTTPS 请求协商的 TLS 密码套件,或者,对于 HTTP,则为 null
authentication_type 字符串 请求身份验证的类型:AuthHeaderQueryStringnull
host_header 字符串 用于连接到 Amazon S3 的端点。如果不可用,则默认为 null
tls_version 字符串 客户端协商的 TLS 版本:TLSv1.1TLSv1.2TLSv1.3null
access_point_arn 字符串 用于请求的接入点的 ARN,或者,如果请求未使用接入点,则为 null
acl_required 布尔值 请求是否需要 ACL。不适用时,默认为 null
source_region 字符串 从中发出请求的 AWS 区域,或者,当无法确定源区域 [例如 PrivateLink 连接、Direct Connect 连接、自带 IP 地址(BYOIP)或非 AWS IP 地址] 时,或者当日志由根据客户设置的策略或操作(例如生命周期和校验和)触发的操作而生成时,为 null

示例日志记录

以下是 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_sizetotal_durationkey_nameauthentication_type)。通用存储桶格式是以空格分隔的位置文本,没有命名列。

  • 其它字段:CloudWatch Logs 格式包括 schema_version_idbucket_arn,它们不以通用存储桶文本格式存在。

  • 无需解析:由于 CloudWatch Logs 日志是结构化的 JSON,因此,您可以直接在 CloudWatch Logs Insights 中查询各个字段,而无需进行正则表达式解析。通用存储桶文本格式需要正则表达式或自定义解析器来提取字段。