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.
、operation
REST.
、HTTP_method
.resource_type
WEBSITE.
或HTTP_method
.resource_type
BATCH.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=
- 签名版本
-
签名版本,用于对请求进行身份验证的
SigV2
或SigV4
,或未经身份验证的请求的-
。示例条目
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.1
、TLSv1.2
、TLSv1.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
复制操作的其他日志记录
复制操作包括 GET
和 PUT
。出于该原因,我们会在执行复制操作时记录两份记录。前面的部分描述了与操作的 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.
、operation
REST.
、HTTP_method
.resource_type
WEBSITE.
或HTTP_method
.resource_type
BATCH.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=
- 签名版本
-
签名版本
SigV2
或SigV4
,用于对请求进行身份验证;或者,对于未经身份验证的请求,则为-
。示例条目
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.1
、TLSv1.2
、TLSv1.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 界面中可用。
可扩展服务器访问日志格式的编程注意事项
有时,我们可能会通过向每一行的末尾添加新字段来扩展访问日志记录格式。因此,请确保用于解析服务器访问日志的任何代码都可以处理它后续可能不理解的字段。