Amazon S3 服务器访问日志格式 - Amazon Simple Storage Service

Amazon S3 服务器访问日志格式

服务器访问日志记录详细地记录对 Amazon S3 存储桶提出的各种请求。您可以将服务器访问日志用于以下目的:

  • 进行安全和访问审计

  • 了解您的客户群

  • 了解您的 Amazon S3 账单

本节介绍了有关 Amazon S3 服务器访问日志文件的格式和其他详细信息。

服务器访问日志文件由一系列的换行分隔日志记录组成。每个日志记录表示一个请求并由空格分隔的字段组成。

以下是含有五份日志记录的示例日志。

79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be amzn-s3-demo-bucket1 [06/Feb/2019:00:00:38 +0000] 192.0.2.3 79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be 3E57427F3EXAMPLE REST.GET.VERSIONING - "GET /amzn-s3-demo-bucket1?versioning HTTP/1.1" 200 - 113 - 7 - "-" "S3Console/0.4" - s9lzHYrFp76ZVxRcpX9+5cjAnEH2ROuNkd2BHfIa6UkFVdtjf5mKR3/eTPFvsiP/XV/VLi31234= SigV4 ECDHE-RSA-AES128-GCM-SHA256 AuthHeader amzn-s3-demo-bucket1.s3.us-west-1.amazonaws.com TLSV1.2 arn:aws:s3:us-west-1:123456789012:accesspoint/example-AP Yes 79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be amzn-s3-demo-bucket1 [06/Feb/2019:00:00:38 +0000] 192.0.2.3 79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be 891CE47D2EXAMPLE REST.GET.LOGGING_STATUS - "GET /amzn-s3-demo-bucket1?logging HTTP/1.1" 200 - 242 - 11 - "-" "S3Console/0.4" - 9vKBE6vMhrNiWHZmb2L0mXOcqPGzQOI5XLnCtZNPxev+Hf+7tpT6sxDwDty4LHBUOZJG96N1234= SigV4 ECDHE-RSA-AES128-GCM-SHA256 AuthHeader amzn-s3-demo-bucket1.s3.us-west-1.amazonaws.com TLSV1.2 - - 79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be amzn-s3-demo-bucket1 [06/Feb/2019:00:00:38 +0000] 192.0.2.3 79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be A1206F460EXAMPLE REST.GET.BUCKETPOLICY - "GET /amzn-s3-demo-bucket1?policy HTTP/1.1" 404 NoSuchBucketPolicy 297 - 38 - "-" "S3Console/0.4" - BNaBsXZQQDbssi6xMBdBU2sLt+Yf5kZDmeBUP35sFoKa3sLLeMC78iwEIWxs99CRUrbS4n11234= SigV4 ECDHE-RSA-AES128-GCM-SHA256 AuthHeader amzn-s3-demo-bucket1.s3.us-west-1.amazonaws.com TLSV1.2 - Yes 79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be amzn-s3-demo-bucket1 [06/Feb/2019:00:01:00 +0000] 192.0.2.3 79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be 7B4A0FABBEXAMPLE REST.GET.VERSIONING - "GET /amzn-s3-demo-bucket1?versioning HTTP/1.1" 200 - 113 - 33 - "-" "S3Console/0.4" - Ke1bUcazaN1jWuUlPJaxF64cQVpUEhoZKEG/hmy/gijN/I1DeWqDfFvnpybfEseEME/u7ME1234= SigV4 ECDHE-RSA-AES128-GCM-SHA256 AuthHeader amzn-s3-demo-bucket1.s3.us-west-1.amazonaws.com TLSV1.2 - - 79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be amzn-s3-demo-bucket1 [06/Feb/2019:00:01:57 +0000] 192.0.2.3 79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be DD6CC733AEXAMPLE REST.PUT.OBJECT s3-dg.pdf "PUT /amzn-s3-demo-bucket1/s3-dg.pdf HTTP/1.1" 200 - - 4406583 41754 28 "-" "S3Console/0.4" - 10S62Zv81kBW7BB6SX4XJ48o6kpcl6LPwEoizZQQxJd5qDSCTLX0TgS37kYUBKQW3+bPdrg1234= SigV4 ECDHE-RSA-AES128-SHA AuthHeader amzn-s3-demo-bucket1.s3.us-west-1.amazonaws.com TLSV1.2 - Yes
注意

任何字段都可以设置为 - 以指示数据未知或不可用,或者该字段不适用于此请求。

日志记录字段

以下列表介绍了日志记录字段。

存储桶拥有者

源存储桶拥有者的规范用户 ID。规范用户 ID 是另一种形式的 AWS 账户 ID。有关规范用户 ID 的更多信息,请参阅《AWS 一般参考》中的 AWS 账户 标识符。有关如何查找您的账户的规范用户 ID 的信息,请参阅查找 AWS 账户 的规范用户 ID

示例条目

79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be
存储桶

请求处理的存储桶的名称。如果系统收到格式错误的请求且无法确定存储桶,则请求不会显示在任何的服务器访问日志中。

示例条目

Time

收到请求的时间;这些日期和时间采用协调世界时 (UTC)。使用 strftime() 术语的格式如下所示:[%d/%b/%Y:%H:%M:%S %z]

示例条目

[06/Feb/2019:00:00:38 +0000]
远程 IP

请求者的显式 IP 地址。中间代理和防火墙可能会隐藏发出请求的计算机的实际 IP 地址。

示例条目

192.0.2.3
请求者

请求者的规范用户 ID 或用于未经验证请求的 -。如果请求者是 IAM 用户,此字段会返回请求者的 IAM 用户名以及该 IAM 用户所属的 AWS 账户根用户。此标识符与用于访问控制目的的标识符是相同的。

示例条目

79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be

如果请求者使用代入的角色,则此字段返回代入的 IAM 角色。

示例条目

arn:aws:sts::123456789012:assumed-role/roleName/test-role
请求 ID

由 Amazon S3 生成的字符串,可用于唯一地标识每个请求。

示例条目

3E57427F33A59F07
操作

此处列出的操作将声明为 SOAP.operationREST.HTTP_method.resource_typeWEBSITE.HTTP_method.resource_typeBATCH.DELETE.OBJECT,或者 生命周期和日志记录S3.action.resource_type

示例条目

REST.PUT.OBJECT

请求的密钥(对象名称)部分。

示例条目

/photos/2019/08/puppy.jpg
Request-URI

HTTP 请求消息的 Request-URI 部分。

示例条目

"GET /amzn-s3-demo-bucket1/photos/2019/08/puppy.jpg?x-foo=bar HTTP/1.1"
HTTP 状态

响应的数字 HTTP 状态代码。

示例条目

200
错误代码

Amazon S3 错误代码;如果没有发生错误,则为 -

示例条目

NoSuchBucket
发送的字节数

发送的响应字节数(不包括 HTTP 协议支出),或 -(如果为零)。

示例条目

2662992
对象大小

所涉及的对象的总大小。

示例条目

3462992
总时间

从服务器的角度传输请求的毫秒数。该值计算从收到请求到发送响应的最后一个字节的时间。由于网络延迟,从客户端计算出的时间可能会更长。

示例条目

70
周转时间

Amazon S3 处理您的请求所花费的毫秒数。该值计算从收到您的请求的最后一个字节到发出响应的第一个字节的时间。

示例条目

10
Referer

HTTP Referer 标头的值(如果存在)。发送请求时,HTTP 用户代理(例如,浏览器)通常会将此标头设置为链接的 URL 或嵌入页面。

示例条目

"http://www.example.com/webservices"
User-Agent

HTTP User-Agent 标头的值。

示例条目

"curl/7.15.1"
版本 ID

请求中的版本 ID;如果操作没有使用 versionId 参数,则为 -

示例条目

3HL4kqtJvjVBH40Nrjfkd
主机 ID

x-amz-id-2 或 Amazon S3 扩展请求 ID。

示例条目

s9lzHYrFp76ZVxRcpX9+5cjAnEH2ROuNkd2BHfIa6UkFVdtjf5mKR3/eTPFvsiP/XV/VLi31234=
签名版本

签名版本,用于对请求进行身份验证的 SigV2SigV4,或未经身份验证的请求的 -

示例条目

SigV2
密码套件

协商用于发出 HTTPS 请求的安全套接字层(SSL)密码,对于 HTTP 为 -

示例条目

ECDHE-RSA-AES128-GCM-SHA256
身份验证类型

所使用的请求身份验证的类型:身份验证标头使用 AuthHeader,查询字符串(预签名 URL)使用 QueryString,未经身份验证的请求使用 -

示例条目

AuthHeader
主机标头

用于连接到 Amazon S3 的端点。

示例条目

s3.us-west-2.amazonaws.com

某些较早的区域支持传统的端点。您可能会在服务器访问日志或 AWS CloudTrail 日志中看到这些端点。有关更多信息,请参阅 传统终端节点。有关 Amazon S3 区域和端点的完整列表,请参阅《Amazon Web Services 一般参考》中的 Amazon S3 端点和限额

TLS 版本

客户端协商的传输层安全性(TLS)版本。此值为以下值之一:TLSv1.1TLSv1.2TLSv1.3;如果不使用 TLS,则为 -

示例条目

TLSv1.2
接入点 ARN

请求接入点的 Amazon Resource Name(ARN)。如果接入点的 ARN 格式不正确或未使用,则该字段将包含 -。有关接入点的更多信息,请参阅 使用接入点。有关 ARN 的更多信息,请参阅《AWS 参考指南》中的 Amazon 资源名称(ARN)

示例条目

arn:aws:s3:us-east-1:123456789012:accesspoint/example-AP
aclRequired

一个字符串,用于指示请求是否需要访问控制列表(ACL)以进行授权。如果请求需要 ACL 进行授权,则字符串为 Yes。如果不需要 ACL,则字符串为 -。有关 ACL 的更多信息,请参阅 访问控制列表 (ACL) 概述。有关使用 aclRequired 字段禁用 ACL 的更多信息,请参阅为您的存储桶控制对象所有权和禁用 ACL。

示例条目

Yes

复制操作的其他日志记录

复制操作包括 GETPUT。出于该原因,我们会在执行复制操作时记录两份记录。前面的部分描述了与操作的 PUT 部分相关的字段。以下列表描述了记录中与复制操作的 GET 部分相关的字段。

存储桶拥有者

用于存储将复制的对象的存储桶的规范用户 ID。规范用户 ID 是另一种形式的 AWS 账户 ID。有关规范用户 ID 的更多信息,请参阅《AWS 一般参考》中的 AWS 账户 标识符。有关如何查找您的账户的规范用户 ID 的信息,请参阅查找 AWS 账户 的规范用户 ID

示例条目

79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be
存储桶

用于存储被复制对象的存储桶的名称。

示例条目

Time

收到请求的时间;这些日期和时间采用协调世界时 (UTC)。使用 strftime() 术语的格式如下所示:[%d/%B/%Y:%H:%M:%S %z]

示例条目

[06/Feb/2019:00:00:38 +0000]
远程 IP

请求者的显式 IP 地址。中间代理和防火墙可能会隐藏发出请求的计算机的实际 IP 地址。

示例条目

192.0.2.3
请求者

请求者的规范用户 ID 或用于未经验证请求的 -。如果请求者是 IAM 用户,此字段将返回请求者的 IAM 用户名以及该 IAM 用户所属的 AWS 账户根用户。此标识符与用于访问控制目的的标识符是相同的。

示例条目

79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be

如果请求者使用代入的角色,则此字段返回代入的 IAM 角色。

示例条目

arn:aws:sts::123456789012:assumed-role/roleName/test-role
请求 ID

由 Amazon S3 生成的字符串,可用于唯一地标识每个请求。

示例条目

3E57427F33A59F07
操作

此处列出的操作将声明为 SOAP.operationREST.HTTP_method.resource_typeWEBSITE.HTTP_method.resource_typeBATCH.DELETE.OBJECT

示例条目

REST.COPY.OBJECT_GET

被复制对象的键(对象名称);或者,如果操作没有使用键参数,则为 -

示例条目

/photos/2019/08/puppy.jpg
Request-URI

HTTP 请求消息的 Request-URI 部分。

示例条目

"GET /amzn-s3-demo-bucket1/photos/2019/08/puppy.jpg?x-foo=bar"
HTTP 状态

复制操作的 GET 部分的数字 HTTP 状态代码。

示例条目

200
错误代码

复制操作的 GET 部分的 Amazon S3 错误代码;或者,如果没有发生任何错误,则为 -

示例条目

NoSuchBucket
发送的字节数

发送的响应字节数(不包括 HTTP 协议支出);或者,如果为零,则为 -

示例条目

2662992
对象大小

所涉及的对象的总大小。

示例条目

3462992
总时间

从服务器的角度传输请求的毫秒数。该值计算从收到请求到发送响应的最后一个字节的时间。由于网络延迟,从客户端计算出的时间可能会更长。

示例条目

70
周转时间

Amazon S3 处理您的请求所花费的毫秒数。该值计算从收到您的请求的最后一个字节到发出响应的第一个字节的时间。

示例条目

10
Referer

HTTP Referer 标头的值(如果存在)。发送请求时,HTTP 用户代理(例如,浏览器)通常会将此标头设置为链接的 URL 或嵌入页面。

示例条目

"http://www.example.com/webservices"
User-Agent

HTTP User-Agent 标头的值。

示例条目

"curl/7.15.1"
版本 ID

被复制对象的版本 ID,或者,如果 x-amz-copy-source 标头没有将 versionId 参数指定为复制源的一部分,则为 -

示例条目

3HL4kqtJvjVBH40Nrjfkd
主机 ID

x-amz-id-2 或 Amazon S3 扩展请求 ID。

示例条目

s9lzHYrFp76ZVxRcpX9+5cjAnEH2ROuNkd2BHfIa6UkFVdtjf5mKR3/eTPFvsiP/XV/VLi31234=
签名版本

签名版本 SigV2SigV4,用于对请求进行身份验证;或者,对于未经身份验证的请求,则为 -

示例条目

SigV4
密码套件

协商用于发出 HTTPS 请求的安全套接字层(SSL)密码,或者,对于 HTTP 为 -

示例条目

ECDHE-RSA-AES128-GCM-SHA256
身份验证类型

所使用的请求身份验证的类型:身份验证标头使用 AuthHeader,查询字符串(预签名 URL)使用 QueryString,未经身份验证的请求使用 -

示例条目

AuthHeader
主机标头

用于连接到 Amazon S3 的端点。

示例条目

s3.us-west-2.amazonaws.com

某些较早的区域支持传统的端点。您可能会在服务器访问日志或 AWS CloudTrail 日志中看到这些端点。有关更多信息,请参阅 传统终端节点。有关 Amazon S3 区域和端点的完整列表,请参阅《Amazon Web Services 一般参考》中的 Amazon S3 端点和限额

TLS 版本

客户端协商的传输层安全性(TLS)版本。此值为以下值之一:TLSv1.1TLSv1.2TLSv1.3;如果不使用 TLS,则为 -

示例条目

TLSv1.2
接入点 ARN

请求接入点的 Amazon Resource Name(ARN)。如果接入点的 ARN 格式不正确或未使用,则该字段将包含 -。有关接入点的更多信息,请参阅 使用接入点。有关 ARN 的更多信息,请参阅《AWS 参考指南》中的 Amazon 资源名称(ARN)

示例条目

arn:aws:s3:us-east-1:123456789012:accesspoint/example-AP
aclRequired

一个字符串,用于指示请求是否需要访问控制列表(ACL)以进行授权。如果请求需要 ACL 进行授权,则字符串为 Yes。如果不需要 ACL,则字符串为 -。有关 ACL 的更多信息,请参阅 访问控制列表 (ACL) 概述。有关使用 aclRequired 字段禁用 ACL 的更多信息,请参阅为您的存储桶控制对象所有权和禁用 ACL。

示例条目

Yes

自定义访问日志信息

您可以包含要存储在请求的访问日志记录中的自定义信息。为此,请将自定义查询字符串参数添加到请求的 URL 中。Amazon S3 忽略以 x- 开头的查询字符串参数,但是会将这些参数包含在请求的访问日志记录中,以作为日志记录的 Request-URI 字段的一部分。

例如,GET"s3.amazonaws.com/amzn-s3-demo-bucket1/photos/2019/08/puppy.jpg?x-user=johndoe" 请求工作方式与 "s3.amazonaws.com/amzn-s3-demo-bucket1/photos/2019/08/puppy.jpg" 的请求的相同,只是 "x-user=johndoe" 字符串包含在关联日志记录的 Request-URI 字段中。此功能仅在 REST 界面中可用。

可扩展服务器访问日志格式的编程注意事项

有时,我们可能会通过向每一行的末尾添加新字段来扩展访问日志记录格式。因此,请确保用于解析服务器访问日志的任何代码都可以处理它后续可能不理解的字段。