

# 排查服务器访问日志记录问题
<a name="troubleshooting-server-access-logging"></a>

以下主题可以帮助您排查在使用 Amazon S3 设置日志记录时可能遇到的问题。

**Topics**
+ [设置日志记录时的常见错误消息](#common-errors)
+ [排查传输失败问题](#delivery-failures)

## 设置日志记录时的常见错误消息
<a name="common-errors"></a>

当您通过 Amazon Command Line Interface（Amazon CLI）和 Amazon SDK 启用日志记录功能时，可能会出现以下常见错误消息：

错误：不允许进行跨 S3 位置日志记录

如果目的地存储桶（也称为*目标存储桶*）与源存储桶位于不同的区域，则会出现不允许跨 S3 位置日志记录错误。要解决此错误，请确保配置为接收访问日志的目标存储桶与源存储桶位于相同的 Amazon Web Services 区域和 Amazon Web Services 账户中。

错误：要记录的存储桶的拥有者与目标存储桶的拥有者必须相同

启用服务器访问日志记录时，如果指定的目标存储桶属于其他账户，则会出现此错误。要解决此错误，请确保目标存储桶与源存储桶位于相同 Amazon Web Services 账户中。

**注意**  
我们建议您选择不同于源存储桶的目的地存储桶。当源存储桶和目标存储桶相同时，将为写入存储桶的日志创建额外的日志，这会增加您的存储费用。这些关于日志的额外日志也可能使您难以找到您正在寻找的特定日志。为了更方便地管理日志，我们建议将访问日志保存在不同的存储桶中。有关更多信息，请参阅 [如何启用日志传送？](ServerLogs.md#server-access-logging-overview)。

错误：用于日志记录的目标存储桶不存在

在设置配置之前，目标存储桶必须已存在。此错误表示目标存储桶不存在或找不到目标存储桶。确保存储桶名称拼写正确，然后重试。

错误：不允许对强制存储桶拥有者的存储存储桶进行目标授权

此错误表明目标存储桶为 S3 对象所有权使用“强制存储桶拥有者”设置。“强制存储桶拥有者”设置不支持目的地（目标）存储桶。有关更多信息，请参阅 [日志传输的权限](enable-server-access-logging.md#grant-log-delivery-permissions-general)。

## 排查传输失败问题
<a name="delivery-failures"></a>

为避免出现服务器访问日志记录问题，请确保遵循以下最佳实践：
+ **S3 日志传输组具有对目的地存储桶的写入权限** – S3 日志传输组将服务器访问日志传输到目的地存储桶。存储桶策略或存储桶访问控制列表（ACL）可用于授予对目标存储桶的写入权限。但是，我们建议您使用存储桶策略，而不是 ACL。有关如何授予对目标存储桶的写入权限的更多信息，请参阅[日志传输的权限](enable-server-access-logging.md#grant-log-delivery-permissions-general)。
**注意**  
如果目标存储桶为对象所有权使用“强制存储桶拥有者”设置，请注意以下几点：  
ACL 已禁用，不再影响权限。这意味着，您无法更新存储桶 ACL 以授予对 S3 日志传输组的访问权限。相反，要授予对日志记录服务主体的访问权限，您必须更新目标存储桶的存储桶策略。
您不能将目标授权包含在 `PutBucketLogging` 配置中。
+ **目标存储桶的存储桶策略允许访问日志** – 检查目标存储桶的存储桶策略。在存储桶策略中搜索包含 `"Effect": "Deny"` 的所有语句。然后，验证 `Deny` 语句不会阻止将访问日志写入存储桶中。
+ **未对目标存储桶启用 S3 对象锁定** – 检查目标存储桶是否启用了对象锁定。对象锁定阻止服务器访问日志传输。您必须选择未启用对象锁定的目标存储桶。
+ **如果在目标存储桶上启用了默认加密，则选择 Amazon S3 托管密钥（SSE-S3）**– 仅当使用具有 Amazon S3 托管式密钥的服务器端加密（SSE-S3）时，才能对目标存储桶使用默认存储桶加密。服务器访问日志记录目标存储桶不支持采用 Amazon Key Management Service（Amazon KMS）密钥的默认服务器端加密（SSE-KMS）。有关如何启用默认加密的更多信息，请参阅[配置默认加密](default-bucket-encryption.md)。
+ **目标存储桶未启用申请方付款** – 不支持将申请方付款存储桶用作服务器访问日志记录的目标存储桶。要允许传输服务器访问日志，请对目标存储桶禁用申请方付款选项。
+ **查看您的 Amazon Organizations 服务控制策略（SCP）和资源控制策略（RCP）**- 当使用 Amazon Organizations 时，请检查服务控制策略和资源控制策略以确保允许 Amazon S3 访问。这些策略指定了受影响账户中的主体和资源的最大权限。在策略中搜索任何包含 `"Effect": "Deny"` 的语句，并验证 `Deny` 语句不会阻止将任何访问日志写入存储桶中。有关更多信息，请参阅《Amazon Organizations User Guide》**中的 [Authorization policies in Amazon Organizations](https://docs.amazonaws.cn/organizations/latest/userguide/orgs_manage_policies_authorization_policies.html)。
+ **等待一段时间让最近的日志记录配置更改生效** – 首次启用服务器访问日志记录或更改日志的目标存储桶时，需要一定的时间才能完全生效。要正确记录和传输所有请求，可能需要一个多小时的时间。

  要检查日志传输失败，请在 Amazon CloudWatch 中启用请求指标。如果日志在几个小时内未传输，请查找 `4xxErrors` 指标，该指标可能表明日志传输失败。有关启用请求指标的更多信息，请参阅[为存储桶中的所有对象创建 CloudWatch 指标配置](configure-request-metrics-bucket.md)。