

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# Classic Load Balancer 存取日誌
<a name="access-log-collection"></a>

Elastic Load Balancing 提供存取日誌，可針對傳送到負載平衡器的請求，擷取其詳細資訊。每個日誌包含收到請求的時間、用戶端的 IP 地址、延遲、請求路徑和伺服器回應等資訊。您可以使用這些存取日誌來分析流量模式和排除問題。

存取日誌是 Elastic Load Balancing 的選用功能，預設為停用。對負載平衡器啟動存取日誌之後，Elastic Load Balancing 會擷取日誌並存放在您指定的 Amazon S3 儲存貯體中。您可以隨時停用存取記錄。

每個存取日誌檔在存放於 S3 儲存貯體之前會使用 SSE-S3 自動加密，並於您存取它時解密。您不需要採取任何動作；加密和解密都是透明地執行。每個日誌檔案都會使用唯一的金鑰加密，該金鑰本身會使用定期輪換的 KMS 金鑰加密。如需詳細資訊，請參閱《[Amazon S3-managed加密金鑰 (SSE-S3) 保護資料](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingServerSideEncryption.html)。 *Amazon S3 *

存取日誌無需額外收費。您將需支付 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:40 和 23:35 項目之間的請求項目。

*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
```

下表說明存取日誌項目的欄位。


| 欄位 | Description | 
| --- | --- | 
| time | 負載平衡器從用戶端收到請求的時間 (ISO 8601 格式)。 | 
| elb | 負載平衡器名稱 | 
| client:port | 提出請求之用戶端的 IP 地址和連接埠。 | 
| backend:port |  處理此請求之已註冊執行個體的 IP 地址和連接埠。 如果該負載平衡器無法傳送請求到已註冊執行個體，或是執行個體在傳送回應之前關閉連線，則此值設定為 `-`。 如果已註冊的執行個體在閒置逾時之前沒有回應，這個值也可能設為 `-`。  | 
| request\$1processing\$1time |  [HTTP listener] 從負載平衡器收到請求開始，直到將請求傳送到已註冊的執行個體為止所經過的總時間 (以秒為單位)。 [TCP listener] 經歷過的總時間 (以秒為單位)，從負載平衡器接受用戶端 TCP/SSL 連線的時間，到負載平衡器傳送第一個位元組資料到已註冊執行個體的時間。 如果負載平衡器無法將請求分派到已註冊執行個體，這個值會設為 `-1`。如果已註冊執行個體的在閒置逾時之前關閉連線，或用戶端傳送格式不正確的請求，就可能發生此情況。此外，對於 TCP 接聽程式，如果用戶端建立與負載平衡器的連線，但不傳送任何資料，便會發生這種情況。 如果已註冊的執行個體在閒置逾時之前沒有回應，這個值也可能設為 `-1`。  | 
| backend\$1processing\$1time |  [HTTP 接聽程式] 從負載平衡器將請求傳送至註冊執行個體開始，直到執行個體開始傳送回應標頭為止的總時間 (以秒為單位)。 [TCP 接聽程式] 負載平衡器成功建立連線至註冊執行個體所經過的總時間 (以秒為單位)。 如果負載平衡器無法將請求分派到已註冊執行個體，這個值會設為 `-1`。如果已註冊執行個體的在閒置逾時之前關閉連線，或用戶端傳送格式不正確的請求，就可能發生此情況。 如果已註冊的執行個體在閒置逾時之前沒有回應，這個值也可能設為 `-1`。  | 
| response\$1processing\$1time |  [HTTP listener] 從負載平衡器收到已註冊的執行個體的回應標頭開始，直到開始將回應傳送到用戶端為止，所經過的總時間 (以秒為單位)。這包括負載平衡器上的佇列時間，以及從負載平衡器到用戶端的連線取得時間。 [TCP listener] 從負載平衡器收到已註冊的執行個體的第一個位元組開始，直到開始將回應傳送到用戶端為止，所經過的總時間 (以秒為單位)。 如果負載平衡器無法將請求分派到已註冊執行個體，這個值會設為 `-1`。如果已註冊執行個體的在閒置逾時之前關閉連線，或用戶端傳送格式不正確的請求，就可能發生此情況。 如果已註冊的執行個體在閒置逾時之前沒有回應，這個值也可能設為 `-1`。  | 
| elb\$1status\$1code | [HTTP listener] 來自負載平衡器的回應狀態碼。 | 
| backend\$1status\$1code | [HTTP listener] 來自已註冊執行個體的回應狀態碼。 | 
| received\$1bytes |  從用戶端 (請求者) 收到的請求大小 (以位元組為單位)。 [HTTP listener] 此值包含請求內文，不含標頭。 [TCP listener] 此值包含請求內文和標頭。  | 
| sent\$1bytes |  傳回到用戶端 (請求者) 的回應大小 (以位元組為單位)。 [HTTP listener] 此值包含回應內文，不含標頭。 [TCP listener] 此值包含請求內文和標頭。 | 
| 請求 |  來自用戶端的請求行，以雙引號括住，並採用以下格式來記錄：HTTP Method \$1 Protocol://Host header:port \$1 Path \$1 HTTP 版本。記錄請求 URI 時，負載平衡器會依原狀保留用戶端傳送的 URL。它不會為存取日誌檔案設定內容類型。處理此欄位時，請考量用戶端如何傳送 URL。 [TCP listener] URL 為三個虛線，以空格分隔，並以空格結束 (「- – -」)。  | 
| user\$1agent |  [HTTP/HTTPS listener] User-Agent 字串，識別發出請求的用戶端。此字串包含一或多個產品識別符，product[/version]。如果字串超過 8 KB，則會截斷。  | 
| ssl\$1cipher |  [HTTPS/SSL 接聽程式] SSL 加密。只有在建立傳入 SSL/TLS 連線並成功交涉之後，才會記錄這個值。否則，值設定為 `-`。  | 
| ssl\$1protocol |  [HTTPS/SSL 接聽程式] SSL 通訊協定。只有在建立傳入 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 的資料。您可能無法逐行處理這麼龐大的資料。因此，您可能需要使用提供平行處理解決方案的分析工具。例如，您可以使用以下分析工具來分析和處理存取日誌：
+ Amazon Athena 是一種互動式查詢服務，可讓您使用標準 SQL 輕鬆分析 Amazon S3 中的資料。如需詳細資訊，請參閱 *Amazon Athena 使用者指南*中的[查詢 Classic Load Balancer 日誌](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/)

# 啟用 Classic Load Balancer 的存取日誌
<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 儲存貯體。儲存貯體必須符合下列需求。

**要求**
+ 儲存貯體與負載平衡器必須位於相同的 Region (區域)。儲存貯體和負載平衡器可以由不同的帳戶擁有。
+ Amazon S3 受管金鑰 (SSE-S3) 是唯一支援的伺服器端加密選項。如需詳細資訊，請參閱 [Amazon S3 受管加密金鑰 (SSE-S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingServerSideEncryption.html)。

**使用 Amazon S3 主控台建立 S3 儲存貯體**

1. 開啟位於 [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/) 的 Amazon S3 主控台。

1. 選擇**建立儲存貯體**。

1. 在 **Create bucket (建立儲存貯體)** 頁面上，執行下列操作：

   1. 針對 **Bucket name (儲存貯體名稱)**，輸入儲存貯體的名稱。該名稱在 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)】 下列範例使用 的 ARN 語法 AWS GovCloud (US) Regions。

```
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)】 下列範例使用 的 ARN 語法 AWS GovCloud (US) Regions。

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

### 舊版儲存貯體政策
<a name="legacy-bucket-policy"></a>

先前，對於 2022 年 8 月之前可用的區域，我們需要一個政策，將許可授予該區域特定的 Elastic Load Balancing 帳戶。仍然支援此舊版政策，但建議您將其取代為上述較新的政策。如果您偏好繼續使用此處未顯示的舊版儲存貯體政策，您可以這麼做。

以下是要在 中指定的 Elastic Load Balancing 帳戶的 IDs，以供參考`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. 開啟位於 [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/) 的 Amazon 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 Balancer (負載平衡器)**。

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>

為負載平衡器啟用存取日誌之後，Load Balancing 會驗證 S3 儲存貯體，並建立測試檔案，以確保儲存貯體政策指定所需的許可。您可以使用 S3 主控台來確認是否已建立測試檔案。測試檔案不是實際的存取日誌檔案；它不包含範例記錄。

**驗證 Elastic Load Balancing 已在 S3 儲存貯體中建立測試檔案**

1. 開啟位於 [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/) 的 Amazon 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>

**對儲存貯體的存取遭拒：*儲存貯體名稱*。請檢查 S3bucket 許可**

如果您收到此錯誤，則以下是可能的原因：
+ 儲存貯體政策不會授權 Elastic Load Balancing 將存取日誌寫入儲存貯體。確認您正在使用適合該區域的正確儲存貯體政策。確認資源 ARN 使用您在啟用存取日誌時指定的相同儲存貯體名稱。如果啟用存取日誌時未指定字首，則請確認資源 ARN 不包含字首。
+ 儲存貯體使用不支援的伺服器端加密選項。儲存貯體必須使用 Amazon S3 受管金鑰 (SSE-S3)。

# 停用 Classic Load Balancer 的存取日誌
<a name="disable-access-logs"></a>

您可以隨時對負載平衡器停用存取日誌。在您停用存取日誌之後，存取日誌會保留在 Amazon S3 中，直到將它們刪除為止。如需詳細資訊，請參閱《Amazon [ S3 使用者指南》中的使用 S3 儲存貯](https://docs.aws.amazon.com/AmazonS3/latest/userguide/creating-buckets-s3.html)體。 *Amazon S3 *

**使用主控台為您的負載平衡器停用存取日誌**

1. 前往 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) 開啟 Amazon EC2 主控台。

1. 在導覽窗格的 **Load Balancing (負載平衡器)**，選擇 **Load Balancer (負載平衡器)**。

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"
        }
    }
}
```