

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 经典负载均衡器的访问日志
<a name="access-log-collection"></a>

Elastic Load Balancing 提供了访问日志，该访问日志可捕获有关发送到负载均衡器的请求的详细信息。每个日志都包含信息（例如，收到请求的时间、客户端的 IP 地址、延迟、请求路径和服务器响应）。您可以使用这些访问日志分析流量模式并解决问题。

访问日志是 Elastic Load Balancing 的一项可选功能，默认情况下已禁用此功能。为负载均衡器启用访问日志之后，Elastic Load Balancing 捕获日志并将其存储在您指定的 Amazon S3 存储桶中。您可以随时禁用访问日志记录。

每个访问日志文件在存储到 S3 存储桶中之前将自动使用 SSE-S3 加密，并在您访问它时进行解密。您不需要执行任何操作；加密和解密以透明方式执行。每个日志文件都使用一个唯一密钥进行加密，此密钥本身将使用定期轮换的 KMS 密钥进行加密。有关更多信息，请参阅《Amazon S3 用户指南》**中的[使用采用 Amazon S3 托管加密密钥的服务器端加密（SSE-S3）保护数据](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingServerSideEncryption.html)。

使用访问日志无需额外付费。您需要支付 Amazon S3 的存储成本，但 Elastic Load Balancing 用以将日志文件发送到 Amazon S3 的带宽是免费的。有关存储成本的更多信息，请参阅 [Amazon S3 定价](https://aws.amazon.com/s3/pricing/)。

**Topics**
+ [

## 访问日志文件
](#access-log-file-format)
+ [

## 访问日志条目
](#access-log-entry-format)
+ [

## 处理访问日志
](#log-processing-tools)
+ [启用访问日志](enable-access-logs.md)
+ [禁用访问日志](disable-access-logs.md)

## 访问日志文件
<a name="access-log-file-format"></a>

Elastic Load Balancing 以指定间隔从每个负载均衡器节点发布日志文件。为负载均衡器启用访问日志时，可以指定 5 分钟或 60 分钟的发布间隔。在默认情况下，Elastic Load Balancing 以 60 分钟间隔发布日志。如果将间隔设置为 5 分钟，则日志的发布时间为 1:05、1:10、1:15，以此类推。如果将间隔设置为 5 分钟，则日志传输最多延迟 5 分钟；如果将间隔设置为 60 分钟，则最多延迟 15 分钟。您可以随时修改发布间隔。

负载均衡器可以传输相同时间段的多个日志。如果站点具有高流量、多个负载均衡器节点和较短日志发布间隔，则通常会发生这种情况。

访问日志的文件名采用以下格式：

```
amzn-s3-demo-loadbalancer-logs[/logging-prefix]/AWSLogs/aws-account-id/elasticloadbalancing/region/yyyy/mm/dd/aws-account-id_elasticloadbalancing_region_load-balancer-name_end-time_ip-address_random-string.log
```

*amzn-s3-demo-loadbalancer-logs*  
S3 存储桶的名称。

*prefix*  
（可选）存储桶的前缀（逻辑层级结构）。您指定的前缀不得包含字符串 `AWSLogs`。要获取更多信息，请参阅[使用前缀整理对象](https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-prefixes.html)。

`AWSLogs`  
我们会在您指定的存储桶名称和可选前缀后添加以 `AWSLogs` 开头的文件名部分。

*aws-account-id*  
所有者的 AWS 账户 ID。

*region*  
负载均衡器和 S3 存储桶所在的区域。

*yyyy*/*mm*/*dd*  
传输日志的日期。

*load-balancer-name*  
负载均衡器的名称。

*end-time*  
日志记录间隔结束的日期和时间。例如，如果发布间隔是 5 分钟，则结束时间 20140215T2340Z 中将包含在 23:35 与 23:40 之间发出的请求的条目。

*ip-address*  
处理请求的负载均衡器节点的 IP 地址。对于内部负载均衡器，这是私有 IP 地址。

*random-string*  
系统生成的随机字符串。

以下是一个带有“my-app”前缀的日志文件名示例：

```
s3://amzn-s3-demo-loadbalancer-logs/my-app/AWSLogs/123456789012/elasticloadbalancing/us-west-2/2018/02/15/123456789012_elasticloadbalancing_us-west-2_my-loadbalancer_20180215T2340Z_172.160.001.192_20sg8hgm.log
```

以下是一个不带前缀的日志文件名示例：

```
s3://amzn-s3-demo-loadbalancer-logs/AWSLogs/123456789012/elasticloadbalancing/us-west-2/2018/02/15/123456789012_elasticloadbalancing_us-west-2_my-loadbalancer_20180215T2340Z_172.160.001.192_20sg8hgm.log
```

日志文件可以在存储桶中存储任意长时间，不过您也可以定义 Amazon S3 生命周期规则以自动存档或删除日志文件。有关更多信息，请参阅《Amazon S3 用户指南》中的[对象生命周期管理](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html)**。

## 访问日志条目
<a name="access-log-entry-format"></a>

Elastic Load Balancing 记录发送给负载均衡器的请求，包括从未到达后端实例的请求。例如，如果客户端发送格式错误的请求或是没有运行状况良好的实例进行响应，仍会记录请求。

**重要**  
Elastic Load Balancing 将尽力记录请求。我们建议您使用访问日志来了解请求性质，而不是作为所有请求的完整描述。

### 语法
<a name="access-log-entry-syntax"></a>

每个日志条目都包含向负载均衡器进行的单个请求的详细信息。日志条目中的所有字段用空格分隔。日志文件中的每个条目都遵循以下格式：

```
timestamp elb client:port backend:port request_processing_time backend_processing_time response_processing_time elb_status_code backend_status_code received_bytes sent_bytes "request" "user_agent" ssl_cipher ssl_protocol
```

下表描述了访问日志条目的字段。


| 字段 | 描述 | 
| --- | --- | 
| time | 负载均衡器从客户端收到请求的时间 (采用 ISO 8601 格式)。 | 
| elb | 负载均衡器的名称 | 
| client:port | 请求客户端的 IP 地址和端口。 | 
| backend:port |  处理此请求的已注册实例的 IP 地址和端口。 如果负载均衡器无法将请求发送到已注册实例，或者如果在发送响应之前实例关闭了连接，则将此值设置为 `-`。 如果注册的实例在空闲超时之前未响应，也可将此值设置为 `-`。  | 
| request\$1processing\$1time |  [HTTP 侦听器] 从负载均衡器收到请求一直到将请求发送到注册实例所用的总时间 (以秒为单位)。 [TCP 侦听器] 从负载均衡器接受来自客户端的 TCP/SSL 连接到负载均衡器发送数据的第一个字节到注册实例所用的总时间 (以秒为单位)。 如果负载均衡器无法将请求分派到已注册实例，则此值设置为 `-1`。如果已注册实例在空闲超时前关闭连接，或客户端发送了格式错误的请求，则会发生这种情况。此外，对于 TCP 侦听器来说，如果客户端与负载均衡器建立连接，但是不发送任何数据，则会发生这种情况。 如果注册的实例在空闲超时之前未响应，也可将此值设置为 `-1`。  | 
| backend\$1processing\$1time |  [HTTP 侦听器] 从负载均衡器将请求发送到已注册实例到该实例开始发送响应标头所用的总时间 (以秒为单位)。 [TCP 侦听器] 负载均衡器成功与注册实例建立连接所用的总时间 (以秒为单位)。 如果负载均衡器无法将请求分派到已注册实例，则此值设置为 `-1`。如果已注册实例在空闲超时前关闭连接，或客户端发送了格式错误的请求，则会发生这种情况。 如果注册的实例在空闲超时之前未响应，也可将此值设置为 `-1`。  | 
| response\$1processing\$1time |  [HTTP 侦听器] 从负载均衡器收到来自已注册实例的响应标头到开始向客户端发送响应所用的总时间 (以秒为单位)。此时间包括在负载均衡器上的排队时间以及从负载均衡器到客户端的连接获取时间。 [TCP 侦听器] 从负载均衡器收到来自已注册实例的第一个字节到开始向客户端发送响应所用的总时间 (以秒为单位)。 如果负载均衡器无法将请求分派到已注册实例，则此值设置为 `-1`。如果已注册实例在空闲超时前关闭连接，或客户端发送了格式错误的请求，则会发生这种情况。 如果注册的实例在空闲超时之前未响应，也可将此值设置为 `-1`。  | 
| elb\$1status\$1code | [HTTP 侦听器] 来自负载均衡器的响应的状态代码。 | 
| backend\$1status\$1code | [HTTP 侦听器] 来自已注册实例的响应的状态代码。 | 
| received\$1bytes |  从客户端 (申请方) 接收的请求大小 (以字节为单位)。 [HTTP 侦听器] 值包括请求正文，但不包括标头。 [TCP 侦听器] 值包括请求正文和标头。  | 
| sent\$1bytes |  发送到客户端 (申请方) 的响应的大小 (以字节为单位)。 [HTTP 侦听器] 值包括响应正文，但不包括标头。 [TCP 侦听器] 值包括请求正文和标头。 | 
| 请求 |  来自客户端的请求行，包含在双引号内并采用以下格式进行记录：HTTP 方法 \$1 协议://主机标头:端口 \$1 路径 \$1 HTTP 版本。负载均衡器将保留客户端记录请求 URI 时发送的 URL。它不设置访问日志文件的内容类型。当您处理此字段时，请考虑客户端发送 URL 的方式。 [TCP 侦听器] URL 是三个短划线，相互之间用空格分隔并以空格结尾 ("- - - ")。  | 
| user\$1agent |  [HTTP/HTTPS listener] A User-Agent string that identifies the client that originated the request. The string consists of one or more product identifiers, product[/version]。 如果字符串长度超过 8 KB，则会将其截断。  | 
| ssl\$1cipher |  [HTTPS/SSL listener] The SSL cipher. This value is recorded only if the incoming SSL/TLS连接是在成功协商后建立的。否则，该值将设置为 `-`。  | 
| ssl\$1protocol |  [HTTPS/SSL listener] The SSL protocol. This value is recorded only if the incoming SSL/TLS连接是在成功协商后建立的。否则，该值将设置为 `-`。  | 

### 示例
<a name="access-log-entry-examples"></a>

**示例 HTTP 条目**  
以下是 HTTP 侦听器 (端口 80 到端口 80) 的示例日志条目：

```
2015-05-13T23:39:43.945958Z my-loadbalancer 192.168.131.39:2817 10.0.0.1:80 0.000073 0.001048 0.000057 200 200 0 29 "GET http://www.example.com:80/ HTTP/1.1" "curl/7.38.0" - -
```

**示例 HTTPS 条目**  
以下是 HTTPS 侦听器 (端口 443 到端口 80) 的示例日志条目：

```
2015-05-13T23:39:43.945958Z my-loadbalancer 192.168.131.39:2817 10.0.0.1:80 0.000086 0.001048 0.001337 200 200 0 57 "GET https://www.example.com:443/ HTTP/1.1" "curl/7.38.0" DHE-RSA-AES128-SHA TLSv1.2
```

**示例 TCP 条目**  
以下是 TCP 侦听器 (端口 8080 到端口 80) 的示例日志条目：

```
2015-05-13T23:39:43.945958Z my-loadbalancer 192.168.131.39:2817 10.0.0.1:80 0.001069 0.000028 0.000041 - - 82 305 "- - - " "-" - -
```

**示例 SSL 条目**  
以下是 SSL 侦听器 (端口 8443 到端口 80) 的示例日志条目：

```
2015-05-13T23:39:43.945958Z my-loadbalancer 192.168.131.39:2817 10.0.0.1:80 0.001065 0.000015 0.000023 - - 57 502 "- - - " "-" ECDHE-ECDSA-AES128-GCM-SHA256 TLSv1.2
```

## 处理访问日志
<a name="log-processing-tools"></a>

如果您的网站上有大量需求，则负载均衡器可以生成包含大量数据的日志文件 (以 GB 为单位)。您可能无法使用处理来 line-by-line处理如此大量的数据。因此，您可能必须使用提供并行处理解决方案的分析工具。例如，您可以使用以下分析工具分析和处理访问日志：
+ Amazon Athena 是一种交互式查询服务，让您能够轻松使用标准 SQL 分析 Amazon S3 中的数据。有关更多信息，请参阅 *Amazon Athena 用户指南*中的[查询经典负载均衡器日志](https://docs.aws.amazon.com/athena/latest/ug/elasticloadbalancer-classic-logs.html)。
+ [Loggly](https://documentation.solarwinds.com/en/success_center/loggly/content/admin/s3-ingestion-auto.htm)
+ [Splunk](https://splunk.github.io/splunk-add-on-for-amazon-web-services/)
+ [Sumo Logic](https://www.sumologic.com/application/elb/)

# 为经典负载均衡器启用访问日志
<a name="enable-access-logs"></a>

要为负载均衡器启用访问日志，您必须指定负载均衡器将在其中存储日志的 Amazon S3 存储桶的名称。您还必须将一个存储桶策略附加到此存储桶，该策略向 Elastic Load Balancing 授予写入存储桶的权限。

**Topics**
+ [

## 步骤 1：创建 S3 存储桶
](#create-s3-bucket)
+ [

## 步骤 2：将策略附加到 S3 存储桶
](#attach-bucket-policy)
+ [

## 步骤 3：配置访问日志
](#configure-access-logs)
+ [

## 步骤 4：确认存储桶权限
](#verify-access-logs)
+ [

## 问题排查
](#enable-access-logs-troubleshooting)

## 步骤 1：创建 S3 存储桶
<a name="create-s3-bucket"></a>

在启用访问日志时，您必须为访问日志指定 S3 存储桶。存储桶必须满足以下要求。

**要求**
+ 存储桶必须位于与负载均衡器相同的区域中。该存储桶和负载均衡器可由不同的账户拥有。
+ 唯一支持的服务器端加密选项是 Amazon S3 托管密钥 (SSE-S3) 有关更多信息，请参阅 [Amazon S3 托管的加密密钥 (SSE-S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingServerSideEncryption.html)。

**使用 Amazon S3 控制台创建 S3 存储桶。**

1. 打开 Amazon S3 控制台，网址为 [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)。

1. 选择 **Create bucket (创建存储桶)**。

1. 在 **Create a bucket (创建存储桶)** 页上，执行以下操作：

   1. 对于**存储桶名称**，请输入存储桶的名称。此名称在 Amazon S3 内所有现有存储桶名称中必须唯一。在某些区域，可能对存储桶名称有其他限制。有关更多信息，请参阅《Amazon S3 用户指南》**中的[存储桶配额、限制和局限性](https://docs.aws.amazon.com/AmazonS3/latest/userguide/BucketRestrictions.html)。

   1. 对于 **AWS 区域**，选择在其中创建负载均衡器的区域。

   1. 对于**默认加密**，选择 **Amazon S3 托管式密钥（SSE-S3）**。

   1. 选择 **创建存储桶 **。

## 步骤 2：将策略附加到 S3 存储桶
<a name="attach-bucket-policy"></a>

S3 存储桶必须具有为 Elastic Load Balancing 授予将访问日志写入存储桶的权限的存储桶策略。存储桶策略是 JSON 语句的集合，这些语句以访问策略语言编写，用于为存储桶定义访问权限。每个语句都包括有关单个权限的信息并包含一系列元素。

如果您正在使用具有附加策略的现有存储桶，则可以将 Elastic Load Balancing 访问日志的语句添加到该策略。如果您这样做，则建议您评估生成的权限集，以确保它们适用于需要具有对访问日志的存储桶的访问权的用户。

### 存储桶策略
<a name="bucket-policy-logdelivery"></a>

该策略向日志传送服务授予权限。

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "logdelivery.elasticloadbalancing.amazonaws.com"
      },
      "Action": "s3:PutObject",
      "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/prefix/AWSLogs/123456789012/*"
    }
  ]
}
```

对于 `Resource`，使用示例策略中显示的格式，输入访问日志所在位置的 ARN。请务必在 S3 存储桶 ARN 的资源路径中，包含该负载均衡器所在账户的账户 ID。这样可以确保只有来自指定账户的负载均衡器才能将访问日志写入 S3 存储桶。

您指定的 ARN 取决于您是否计划在[步骤 3](#enable-access-logs) 中启用访问日志时包含前缀。

**带前缀的 S3 存储桶 ARN 示例**  
S3 存储桶名称为 amzn-s3-demo-logging-bucket，前缀为 logging-prefix。

```
arn:aws:s3:::amzn-s3-demo-logging-bucket/logging-prefix/AWSLogs/123456789012/*
```

[AWS GovCloud (US)] 以下示例针对 AWS GovCloud (US) Regions使用 ARN 语法。

```
arn:aws-us-gov:s3:::amzn-s3-demo-logging-bucket/logging-prefix/AWSLogs/123456789012/*
```

**不带前缀的 S3 存储桶 ARN 示例**  
S3 存储桶名称为 amzn-s3-demo-logging-bucket。S3 存储桶 ARN 中没有前缀部分。

```
arn:aws:s3:::amzn-s3-demo-logging-bucket/AWSLogs/123456789012/*
```

[AWS GovCloud (US)] 以下示例针对 AWS GovCloud (US) Regions使用 ARN 语法。

```
arn:aws-us-gov:s3:::amzn-s3-demo-logging-bucket/AWSLogs/123456789012/*
```

### 传统存储桶策略
<a name="legacy-bucket-policy"></a>

在此之前，对于 2022 年 8 月之前可用的区域，我们要求向该区域特定的弹性负载均衡账户授予权限的策略。此传统策略仍然受到支持，但我们建议您将其替换为上述较新的策略。如果您希望继续使用传统存储桶策略（此处未显示），则可以这样做。

以下是要在 IDs 中指定的 Elastic Load Balancing 账户供参考`Principal`。请注意，不在此列表中的区域从来不支持传统存储桶策略。
+ 美国东部（弗吉尼亚州北部）– 127311923021
+ 美国东部（俄亥俄州）– 033677994240
+ 美国西部（北加利福尼亚）– 027434742980
+ 美国西部（俄勒冈州）– 797873946194
+ 非洲（开普敦）– 098369216593
+ 亚太地区（香港）– 754344448648
+ 亚太地区（雅加达）– 589379963580
+ 亚太地区（孟买）– 718504428378
+ 亚太地区（大阪）– 383597477331
+ 亚太地区（首尔）– 600734575887
+ 亚太地区（新加坡）– 114774131450
+ 亚太地区（悉尼）– 783225319266
+ 亚太地区（东京）– 582318560864
+ 加拿大（中部）– 985666609251
+ 欧洲（法兰克福）– 054676820928
+ 欧洲（爱尔兰）– 156460612806
+ 欧洲（伦敦）– 652711504416
+ 欧洲（米兰）– 635631232127
+ 欧洲（巴黎）– 009996457667
+ 欧洲（斯德哥尔摩）– 897822967062
+ 中东（巴林）– 076674570225
+ 南美洲（圣保罗）– 507241528517
+ AWS GovCloud （美国东部）— 190560391635
+ AWS GovCloud （美国西部）— 048591011584

### 安全最佳实践
<a name="bucket-policy-security-best-practices"></a>

为了增强安全性，请使用精确的 S3 存储桶 ARNs。
+ 使用完整的资源路径，而不仅仅是 S3 存储桶 ARN。
+ 包括 S3 存储桶 ARN 的账户 ID 部分。
+ 请勿在 S3 存储桶 ARN 的账户 ID 部分使用通配符（\$1）。

创建存储桶策略后，使用 Amazon S3 接口（例如 Amazon S3 控制台或 AWS CLI 命令）将您的存储桶策略附加到 S3 存储桶。

**使用控制台将存储桶策略附加到您的存储桶**

1. 打开 Amazon S3 控制台，网址为 [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)。

1. 选择存储桶的名称以打开其详细信息页面。

1. 选择 **Permissions**（权限），然后选择 **Bucket policy**（存储桶策略)、**Edit**（编辑）。

1. 更新存储桶策略以授予所需权限。

1. 选择**保存更改**。

**要将存储桶策略附加到 S3 存储桶，请使用 AWS CLI**  
使用 [put-bucket-policy](https://docs.aws.amazon.com/cli/latest/reference/s3api/put-bucket-policy.html) 命令。在此示例中，存储桶策略已保存到指定的 .json 文件中。

```
aws s3api put-bucket-policy \
    --bucket amzn-s3-demo-bucket \
    --policy file://access-log-policy.json
```

## 步骤 3：配置访问日志
<a name="configure-access-logs"></a>

使用以下过程配置访问日志，以捕获请求信息并将日志文件传输到 S3 存储桶。

**要求**  
存储桶必须满足[第 1 步](#create-s3-bucket)中所描述的要求，并且必须附加[第 2 步](#attach-bucket-policy)中所描述的存储桶策略。如果指定前缀，则前缀不得包含字符串 “AWSLogs”。

**使用控制台为负载均衡器配置访问日志**

1. 打开位于 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) 的 Amazon EC2 控制台。

1. 在导航窗格上的 **Load Balancing**（负载均衡）下，选择 **Load Balancers**（负载均衡器）。

1. 选择您的负载均衡器的名称以打开其详细信息页面。

1. 在**属性**选项卡上，选择**编辑**。

1. 在**编辑负载均衡器属性**页面的**监控**部分中，执行以下操作：

   1. 启用**访问日志**。

   1. 对于 **S3 URI**，输入日志文件的 S3 URI。您指定的 URI 取决于您是否使用前缀。
      + 带有前缀的 URI：`s3://amzn-s3-demo-logging-bucket/logging-prefix`
      + 不带前缀的 URI：`s3://amzn-s3-demo-logging-bucket`

   1. 将**日志记录间隔时间**保留为 `60 minutes - default`。

   1. 选择**保存更改**。

**要为负载均衡器配置访问日志，请使用 AWS CLI**  
首先，创建一个 .json 文件，该文件使 Elastic Load Balancing 能够捕获日志并每 60 分钟将这些日志传输到您为日志创建的 S3 存储桶一次：

```
{ 
  "AccessLog": {
    "Enabled": true,
    "S3BucketName": "amzn-s3-demo-logging-bucket",
    "EmitInterval": 60,
    "S3BucketPrefix": "my-app"
  }
}
```

接下来，在[modify-load-balancer-attributes](https://docs.aws.amazon.com/cli/latest/reference/elb/modify-load-balancer-attributes.html)命令中指定.json 文件，如下所示：

```
aws elb modify-load-balancer-attributes --load-balancer-name my-loadbalancer --load-balancer-attributes file://my-json-file.json
```

以下为响应示例。

```
{
    "LoadBalancerAttributes": {
        "AccessLog": {
            "Enabled": true,
            "EmitInterval": 60,
            "S3BucketName": "amzn-s3-demo-logging-bucket",
            "S3BucketPrefix": "my-app"
        }
    },
    "LoadBalancerName": "my-loadbalancer"
}
```

**管理保存访问日志的 S3 存储桶**  
要删除您配置用于访问日志的存储桶，请确保首先禁用访问日志。否则，如果有一个名称相同的新存储桶，并且在您不拥有的存储桶中创建了所需的存储桶策略 AWS 账户 ，Elastic Load Balancing 可能会将您的负载均衡器的访问日志写入这个新存储桶。

## 步骤 4：确认存储桶权限
<a name="verify-access-logs"></a>

在为负载均衡器启用访问日志后，Elastic Load Balancing 将验证 S3 存储桶，并创建测试文件以确保存储桶策略指定所需权限。您可以使用 S3 控制台验证是否已创建测试文件。测试文件不是实际的访问日志文件；它不包含示例记录。

**验证 Elastic Load Balancing 是否在 S3 存储桶中创建了测试文件**

1. 打开 Amazon S3 控制台，网址为 [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)。

1. 选择您指定用于访问日志的 S3 存储桶的名称。

1. 导航到测试文件 `ELBAccessLogTestFile`。位置取决于您是否使用前缀。
   + 带有前缀的位置：*amzn-s3-demo-loadbalancer-logs**logging-prefix*/AWSLogs/*123456789012*/ELBAccessLogTestFile
   + 不带前缀的位置：*amzn-s3-demo-loadbalancer-logs*/AWSLogs/*123456789012*/ELBAccessLogTestFile

## 问题排查
<a name="enable-access-logs-troubleshooting"></a>

**存储桶的访问被拒绝：*bucket-name*。请检查 S3bucket 权限**

如果您收到此错误，则以下是可能的原因：
+ 存储桶策略没有为 Elastic Load Balancing 授予将访问日志写入存储桶的权限。确认您使用的是该区域正确的存储桶策略。确认资源 ARN 使用的存储桶名称与您在启用访问日志时指定的存储桶名称相同。如果您在启用访问日志时未指定前缀，请确认资源 ARN 不包含前缀。
+ 存储桶使用不支持的服务器端加密选项。该存储段必须使用 Amazon S3 托管密钥（SSE-S3）。

# 为经典负载均衡器禁用访问日志
<a name="disable-access-logs"></a>

您随时可为您的负载均衡器禁用访问日志。在禁用访问日志后，您的访问日志将在 Amazon S3 中保留，直至您将其删除。有关更多信息，请参阅《Amazon S3 开发人员指南》**中的[使用 S3 存储桶](https://docs.aws.amazon.com/AmazonS3/latest/userguide/creating-buckets-s3.html)。

**使用控制台为负载均衡器禁用访问日志**

1. 打开位于 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) 的 Amazon EC2 控制台。

1. 在导航窗格上的 **Load Balancing**（负载均衡）下，选择 **Load Balancers**（负载均衡器）。

1. 选择您的负载均衡器的名称以打开其详细信息页面。

1. 在**属性**选项卡上，选择**编辑**。

1. 在**编辑负载均衡器属性**页面的**监控**部分中，禁用**访问日志**。

**要禁用访问日志，请使用 AWS CLI**  
使用以下[modify-load-balancer-attributes](https://docs.aws.amazon.com/cli/latest/reference/elb/modify-load-balancer-attributes.html)命令禁用访问日志：

```
aws elb modify-load-balancer-attributes --load-balancer-name my-loadbalancer --load-balancer-attributes "{\"AccessLog\":{\"Enabled\":false}}"
```

以下为响应示例：

```
{
    "LoadBalancerName": "my-loadbalancer",
    "LoadBalancerAttributes": {
        "AccessLog": {
            "S3BucketName": "amzn-s3-demo-loadbalancer-logs",
            "EmitInterval": 60,
            "Enabled": false,
            "S3BucketPrefix": "my-app"
        }
    }
}
```