

# Amazon S3 的日志记录选项
<a name="logging-with-S3"></a>

您可以记录用户、角色或 Amazon Web Services 服务对 Amazon S3 资源所采取的操作，并维护日志记录以满足审计和合规性目的。为此，您可以使用服务器访问日志记录、Amazon CloudTrail 日志记录，或两者的组合。我们建议您使用 CloudTrail 为您的 Amazon S3 资源记录存储桶级和对象级操作的日志。请参阅下面几节，了解有关每个选项的更多信息：
+ [使用服务器访问日志记录来记录请求](ServerLogs.md)
+ [使用 Amazon CloudTrail 记录 Amazon S3 API 调用](cloudtrail-logging.md)

下表列出了 CloudTrail 日志和 Amazon S3 服务器访问日志的关键属性。要确保 CloudTrail 满足您的安全要求，请查看表和注释。


| 日志属性 | Amazon CloudTrail | Amazon S3 服务器日志 | 
| --- |--- |--- |
| 可以转发到其他系统（Amazon CloudWatch Logs、Amazon CloudWatch Events） | 是 | No | 
| 将日志传输到多个目标（例如，将相同的日志发送到两个不同的存储桶） | 是 | No | 
| 对对象的子级开启日志（前缀） | 是 | No | 
| 跨账户日志传输（不同账户拥有的目标和源存储桶） | 是 | No | 
| 使用数字签名或哈希对日志文件进行完整性验证 | 是 | No | 
| 默认或选择加密日志文件 | 是 | No | 
| 对象操作（使用 Amazon S3 API） | 支持 | 是 | 
| 存储桶操作（使用 Amazon S3 API） | 支持 | 是 | 
| 日志的可搜索 UI | 是 | No | 
| 对象锁定参数的字段，Amazon S3 选择日志记录的属性 | 是 | No | 
| 日志记录的 `Object Size`、`Total Time`、`Turn-Around Time` 和 `HTTP Referer` 的字段 | 否 | 是 | 
| 生命周期转换，过期，还原 | 否 | 是 | 
| 批处理删除操作中键的日志记录 | 支持 | 是 | 
| 身份验证失败1 | 否 | 是 | 
| 日志得到传输的账户 | 存储桶拥有者 2 以及请求者 | 仅限存储桶拥有者 | 
| **Performance and Cost** | **Amazon CloudTrail** | **Amazon S3 Server Logs** | 
| --- |--- |--- |
| 价格 | 管理事件（第一次传输）免费；数据事件引发费用，此外还有日志存储 | 除日志存储之外，没有其他费用 | 
| 日志传输的速度 | 每 5 分钟传输数据事件；每 15 分钟传输管理事件 | 几个小时内 | 
| 日志格式 | JSON | 具有以空格分隔、新行分隔的记录的日志文件 | 

**备注**

1. CloudTrail 对于未通过身份验证（其中，提供的凭证无效）或由于重定向而失败（错误代码 `301 Moved Permanently`）的请求不传输日志。但是，对于授权失败的请求 (`AccessDenied`) 和匿名用户发出的请求，它的确包括日志。

1. 当账户对请求中的此对象没有完全访问权限时，S3 存储桶拥有者将接收 CloudTrail 日志。有关更多信息，请参阅 [跨账户情形中的 Amazon S3 对象级操作](cloudtrail-logging-s3-info.md#cloudtrail-object-level-crossaccount)。

1. 对于 VPC 端点策略拒绝的 VPC 端点请求，或者对于在评估 VPC 策略之前失败的请求，S3 不支持向请求者或存储桶拥有者传输 CloudTrail 日志或服务器访问日志。