为什么我的 Amazon S3 服务器访问日志没有被传输?

1 分钟阅读
0

我设置了 Amazon Simple Storage Service (Amazon S3) 服务器访问日志记录。日志本应该被传输至存储桶,但却没有对存储桶进行填充。

简短描述

如果您设置了 Amazon 3 服务器访问日志记录,但在预期存储桶中看不到日志,请检查以下内容:

  • 日志传输组(传输账户)可以访问目标存储桶。
  • 目标存储桶的存储桶策略不得拒绝访问日志。
  • 不得为目标存储桶启用 Amazon S3 Object Lock。
  • 如果在目标存储桶上开启默认加密,必须选择 AES256 (SSE-S3) 作为加密密钥。
  • 等待一段时间,以便最近的日志记录配置更改生效。

解决方法

日志传输组可以访问目标存储桶

服务器访问日志会通过名为日志传输组的传输账户被传输到目标存储桶(日志会传输到该存储桶)。要接收服务器访问日志,日志传输组必须有写入目标存储桶的权限。查看目标存储桶的访问控制列表(ACL)以验证日志传输组拥有写入权限。

要使用 Amazon S3 控制台检查和修改目标存储桶的 ACL,请执行以下操作:

  1. 打开 Amazon S3 控制台
  2. 从存储列表选择服务器访问日志应该发送的目标存储桶。
  3. 选择权限选项卡。
  4. 选择访问控制列表
  5. S3 日志传输组的下方,检查该组是否有写入对象的权限。如果该组没有写入对象的权限,执行下一步操作。
  6. 选择日志传输组
  7. LogDelivery 对话框的访问对象下方,选择写入对象
  8. 选择 Save(保存)。

目标存储桶的存储桶策略不得拒绝访问日志

检查目标存储桶的查看存储桶策略。在存储桶策略中搜索任何包含 “Effect”: “Deny” 的语句。然后,验证拒绝语句不会阻止访问日志被写入存储桶。

**注意:**最佳做法是使用单独的存储桶存储服务器访问日志。在默认情况下,S3 存储桶为私有,因此您无需在存储桶策略中使用拒绝语句来杜绝对该存储桶的未授权访问。如果 AWS Identity and Access Management (IAM) 用户或角色和存储桶不在相同的 AWS 账户内,而且 IAM 身份对其 IAM 策略内的存储桶有相关的权限,则该用户或角色可以访问存储桶。

不得为目标存储桶启用 Amazon S3 Object Lock

检查目标存储桶是否已开启 Object Lock。Object Lock 会阻止服务器访问日志的传输,因此您必须在想要发送日志的目标存储桶上关闭 Object Lock。

如果在目标存储桶上开启默认加密,必须选择 AES256 (SSE-S3)

如果您在目标存储桶上使用默认加密,确认选择 AES-256 (SSE-S3) 作为加密密钥。不支持使用 AWS-KMS (SSE-KMS) 进行加密。有关如何使用 Amazon S3 控制台配置默认加密的说明,请参阅启用 Amazon S3 默认存储桶加密

等待一段时间,以便最近的日志记录配置更改生效

第一次开启服务器访问日志记录,或者更改日志的目标存储桶可能需要点时间才能完全实现。在您开启日志记录后的一个小时内,部分请求可能不会被记录。在您更改目标存储桶后的一个小时内,部分日志可能依然会被传输至上一个存储桶。在您更改日志记录配置以后,确保等待一个小时左右再对日志进行验证。如需更多信息,请参阅尽其所能交付服务器日志


相关信息

如何传输日志?

AWS 官方
AWS 官方已更新 2 年前