View a markdown version of this page

使用服务器访问日志记录来记录请求 - Amazon Simple Storage Service

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

服务器访问日志记录详细地记录对存储桶提出的各种请求。服务器访问日志可用于进行操作分析、了解您的安全态势以及向用户收费。

Amazon S3 定期收集访问日志记录,整合这些记录,然后将它们传输到您选择的目标。您可以将日志传输至 Amazon CloudWatch Logs 或 Amazon S3 通用存储桶。

注意

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

传递选项

您可以将服务器访问日志传输到两个目标。您可以使用其中一个或两个目标。

  • Amazon CloudWatch Logs:以结构化格式将日志传输到 CloudWatch Logs 日志组。您可以使用 CloudWatch Logs Insights 查询日志、跨账户和区域聚合日志,以及使用 AWS KMS 加密日志。从日志组中,您还可以通过 JSON 或 Apache Parquet 格式将日志传输到 Amazon S3,或者以 Apache Iceberg 格式将日志镜像到 S3 表类数据存储服务以进行 SQL 分析。CloudWatch 提供的日志摄取率适用。

  • Amazon S3 通用存储桶:以空格分隔的文本格式,将日志传输到您指定的 Amazon S3 存储桶。日志传输不收取任何费用。您仅需为日志文件的存储付费。目标存储桶必须位于源存储桶所在的 AWS 区域和 AWS 账户中。

下表比较了两个传输选项。

比较服务器访问日志传输选项
能力 Amazon CloudWatch Logs Amazon S3 通用存储桶
目标 CloudWatch Logs 日志组、Amazon S3(JSON 或 Parquet)或 Amazon Data Firehose。CloudWatch Logs 日志组传输可以扩展为以 Iceberg 格式将日志镜像到 S3 表类数据存储服务。 Amazon S3 存储桶(以空格分隔的文本)
日志格式 结构化 JSON(日志组)、JSON 或 Apache Parquet(Amazon S3)、Apache Iceberg(S3 表类数据存储服务) 以空格分隔的文本
查询 CloudWatch Logs Insights(日志组)、Amazon Athena 或 Spark(S3 表类数据存储服务) Amazon Athena
通过 S3 表类数据存储服务进行 SQL 分析 是(自动 Iceberg 镜像) 否(需要 ETL)
跨账户聚合 是(Amazon S3 和 Firehose 目标支持跨账户传输) 否(仅限同一个账户)
跨区域聚合 是(Amazon S3 和 Firehose 目标支持跨区域传输) 否(仅限同一个区域)
AWS KMS 加密 否(仅限 SSE-S3)
设置 CloudWatch Logs API 或 Amazon S3 控制台 Amazon S3 API (PutBucketLogging) 或控制台
传输延迟 几个小时内 几个小时内

最大努力服务器日志传输

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

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

由于服务器日志记录特征的最大努力性质,使用情况报告中可能有一个或多个访问请求不会出现在传输的服务器日志中。您可以在 AWS 账单与成本管理 控制台的成本和使用情况报告下找到这些使用情况报告。

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

存储桶日志记录状态的更改需要一定时间才能实际影响日志文件的传输。例如,如果您为某个存储桶启用了日志记录,那么将记录在以下时间内发送的请求,而不会记录其他请求。假定您将用于日志记录的目标存储桶从存储桶 A 更改为存储桶 B。在接下来的一个小时内,仍可能有一些日志会继续传输到存储桶 A,但其它日志则传输到新的目标存储桶 B。同样,如果您更改用于传输的 CloudWatch Logs 日志组,则在转换期间仍可能有一些日志继续传输到之前的日志组。在所有情况下,新的设置最终都将生效,而您无需执行任何更多操作。

定价

服务器访问日志记录的成本取决于您使用的传输选项。

  • Amazon CloudWatch Logs:您按照 CloudWatch 提供的日志费率支付摄取费用,并采用基于量的分层定价。CloudWatch Logs 会在存储之前压缩日志,因此存储的量明显小于摄取的量。如果您启用 S3 表类数据存储服务镜像,则无需为存储或表维护支付额外费用。您只需按照 S3 表类数据存储服务定价为查询请求付费。有关当前费率,请参阅 CloudWatch 定价

  • Amazon S3 通用存储桶:日志传输不收取任何费用。您只需按标准 Amazon S3 存储费率为日志文件的存储付费。我们不会估计传输日志文件的数据传输费,但会按正常数据传输费率对访问日志文件收费。有关当前费率,请参阅 Amazon S3 定价

有关传输和使用服务器访问日志的更多信息,请参阅以下各节。