

# 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 日志或服务器访问日志。