使用服务器访问日志记录来记录请求 - Amazon Simple Storage Service
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

欢迎使用新的 Amazon S3 用户指南! Amazon S3 用户指南结合了以下三个已停用的指南中的信息和说明:Amazon S3 开发人员指南Amazon S3 控制台用户指南Amazon S3 入门指南

使用服务器访问日志记录来记录请求

服务器访问日志记录详细地记录对存储桶提出的各种请求。对于许多应用程序而言,服务器访问日志很有用。例如,访问日志信息可能在安全和访问权限审核方面很有用。它还可以帮助您了解您的客户群并了解您的 Amazon S3 账单。

注意

服务器访问日志不会记录 2019 年 3 月 20 日之后发布的区域的不正确区域重定向错误的相关信息。在存储桶所在区域的外部发出对象或存储桶的请求时,会发生不正确区域重定向错误。

如何启用日志传送?

要启用日志传输,请执行以下基本步骤。有关详细信息,请参阅 启用 Amazon S3 服务器访问日志记录

  1. 提供目标存储桶的名称。此存储桶是您希望 Amazon S3 用于将访问日志保存为对象的位置。源存储桶和目标存储桶必须位于同一个 AWS 区域,并且由同一个账户拥有。

    您可以让日志传输至您拥有的且与源存储桶位于同一区域中的任何存储桶,包括源存储桶本身。不过,为了更方便地管理日志,我们建议您将访问日志保存在不同的存储桶中。

    当源存储桶和目标存储桶是同一存储桶时,将为写入该存储桶的日志创建额外的日志。这样做可能并不理想,因为它会导致您的存储账单金额小幅增加。此外,有关日志的额外日志可能会导致更难以找到您所查找的日志。如果您选择将访问日志保存在源存储桶中,我们建议您为所有日志对象键指定前缀,以便对象名称以通用字符串开头,且日志对象更易于识别。

    当多个存储桶记录到同一目标存储桶时,键前缀也可用于区分源存储桶。

  2. (可选)将一个前缀分配给所有 Amazon S3 日志对象键。 通过该前缀可更方便地查找日志对象。例如,如果您指定前缀值 logs/,则 Amazon S3 创建的每个日志对象的键均以 logs/ 前缀开头。

    logs/2013-11-01-21-32-16-E568B2907131C0C0

    当您删除日志时,键前缀也可以有所帮助。例如,您可以设置一个生命周期配置规则,让 Amazon S3 删除具有特定键前缀的对象。有关更多信息,请参阅 删除 Amazon S3 日志文件

  3. (可选)设置权限以使其他人能够访问生成的日志。默认情况下,仅存储桶拥有者始终拥有日志对象的完全访问权限。有关更多信息,请参阅 Amazon S3 中的 Identity and Access Management

日志对象键格式

Amazon S3 将以下对象键格式用于在目标存储桶中上传的日志对象:

TargetPrefixYYYY-mm-DD-HH-MM-SS-UniqueString/

在键中,YYYYmmDDHHMMSS 分别为日志文件传输时间中表示年、月、日、小时、分钟和秒的数字。这些日期和时间采用协调世界时 (UTC)。

在特定时间传输的日志文件可包含在该时间前的任何时刻编写的记录。无法知道是否已传输特定时间间隔内的所有日志记录。

键的 UniqueString 部分用于防止覆盖文件。它没有意义,日志处理软件应忽略它。

需要尾部斜杠 / 来表示前缀的末尾。

如何传输日志?

Amazon S3 定期收集访问日志记录,在日志文件中整合这些记录,然后将日志文件作为日志对象上传到目标存储桶。如果多个启用了日志记录的源存储桶使用相同的目标存储桶,此目标存储桶中将保留所有这些源存储桶的访问日志。但是,每个日志对象只会报告特定源存储桶的访问日志记录。

Amazon S3 使用特殊的日志传输账户(称为日志传输组)写入访问日志。这些写入受常规的访问控制限制。您必须通过在目标存储桶的访问控制列表 (ACL) 中添加授权条目,向日志传输组授予对该存储桶的写入权限。

如果您使用 Amazon S3 控制台在存储桶上启用日志记录,则控制台会同时在源存储桶上启用日志记录,并在目标存储桶上更新 ACL,以便向日志传输组授予写入权限。有关更多信息,请参阅 访问控制列表 (ACL) 概述

最大努力服务器日志传输

服务器访问日志记录会以最大努力进行传输。针对已正确配置了日志记录的存储桶的大多数请求会导致传输一条日志记录。大多数日志记录将在记录后的几小时内传输,但可以更频繁地传输这些记录。

因此不能保证服务器日志记录的完整性和即时性。特殊请求的日志记录可能会在实际处理了请求之后进行传输,也可能根本不会传输。服务器日志的用途在于向您提供有关存储桶流量性质方面的信息。丢失日志记录的情况十分少见,但是服务器日志记录不旨在完整记录所有请求。

根据服务器日志记录功能的最大努力性质,在 AWS 门户上提供的使用情况报告(AWS 管理控制台上的账单和成本管理报告)中可能有一个或多个访问请求不会出现在传输的服务器日志中。

存储桶日志记录状态更改将逐渐生效

存储桶日志记录状态的更改需要一定时间才能实际影响日志文件的传输。例如,如果您为某个存储桶启用了日志记录,那么将记录在以下时间内发送的请求,而不会记录其他请求。如果您将日志记录的目标存储桶从存储桶 A 更改为存储桶 B,则在接下来的一个小时里仍可能有一些日志传输到存储桶 A,但其他日志则会传输到新的目标存储桶 B。无论如何,新的设置将最终生效,并且您无需执行任何操作。

有关日志记录和日志文件的更多信息,请参阅以下各部分: