

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

# 存取日誌 （標準日誌）
<a name="AccessLogs"></a>

您可以設定 CloudFront 以建立日誌檔案，其中包含有關 CloudFront 收到的每個使用者 (檢視器) 請求的詳細資訊。這些稱為*存取日誌*，也稱為*標準日誌*。

每個日誌包含收到請求的請求時間、處理時間、請求路徑和伺服器回應等資訊。您可以使用這些存取日誌來分析回應時間，並針對問題進行故障診斷。

下圖顯示 CloudFront 如何記錄有關物件請求的資訊。在此範例中，分佈會設定為將存取日誌傳送至 Amazon S3 儲存貯體。

![\[存取日誌的基本流程\]](http://docs.aws.amazon.com/zh_tw/AmazonCloudFront/latest/DeveloperGuide/images/Logging.png)


1. 在此範例中，您有兩個網站，A 和 B 以及兩個對應的 CloudFront 分佈。使用者使用與分佈相關聯的 URL 請求物件。

1. CloudFront 將每個請求路由到適當的節點。

1. CloudFront 寫入有關每個請求的資料，記錄特定於該分佈的檔案。在此範例中，與分佈 A 相關的請求資訊會進入分佈 A 的日誌檔案，與分佈 B 相關的請求資訊會進入分佈 B 的日誌檔案。

1. CloudFront 定期將分佈的日誌檔案儲存在您啟用記錄時指定的 Amazon S3 儲存貯體中。然後 CloudFront 在新的分佈日誌檔案中啟動儲存有關後續請求的資訊。

   如果在指定的某小時內沒有檢視器存取您的內容，您不會收到該小時的任何日誌檔案。

**注意**  
我們建議您使用日誌，了解內容請求的性質，而不是像完全考量所有請求。CloudFront 依最佳作業基礎交付存取日誌。在實際處理請求之後，才可能長時間交付特定請求的日誌項目，在極少數的情況下，有可能完全不會交付日誌項目。從存取日誌省略日誌項目時，存取日誌中的項目數量與顯示於 AWS 帳單和使用量報告中的用量會不相符。

CloudFront 支援兩種版本的標準記錄。標準記錄 (舊版) *僅*支援將您的存取日誌傳送至 Amazon S3。標準記錄 (v2) 支援其他交付目的地。您可以為分佈設定兩種或其中一種記錄選項。如需詳細資訊，請參閱下列主題：

**Topics**
+ [

# 設定標準記錄 (v2)
](standard-logging.md)
+ [

# 設定標準記錄 (舊式)
](standard-logging-legacy-s3.md)
+ [

# 標準記錄參考
](standard-logs-reference.md)

**提示**  
CloudFront 也提供即時存取日誌，提供您即時對分佈提出請求的相關資訊 （日誌會在收到請求後的幾秒內交付）。您可以使用即時存取日誌，根據內容交付效能來監控、分析和採取行動。如需詳細資訊，請參閱[使用即時存取日誌](real-time-logs.md)。

# 設定標準記錄 (v2)
<a name="standard-logging"></a>

您可以在建立或更新分佈時啟用存取日誌 （標準日誌）。標準記錄 (v2) 包含下列功能：
+ 將存取日誌傳送至 Amazon CloudWatch Logs、Amazon Data Firehose 與 Amazon Simple Storage Service (Amazon S3)。
+ 選取您想要的日誌欄位。您也可以選取[即時存取日誌欄位的子集](#standard-logging-real-time-log-selection)。
+ 選取其他[輸出日誌檔案格式](#supported-log-file-format)。

如果您使用的是 Amazon S3，您有下列選用功能：
+ 將日誌傳送至選擇加入 AWS 區域。
+ 使用分割組織您的日誌。
+ 啟用與 Hive 相容的檔案名稱。

如需詳細資訊，請參閱[傳送日誌至 Amazon S3](#send-logs-s3)。

如要開始使用標準記錄，請完成以下步驟：

1. 為 AWS 服務 將接收日誌的指定 設定所需的許可。

1. 從 CloudFront 主控台或 CloudWatch API 設定標準記錄。

1. 檢視您的存取日誌。

**注意**  
如果您啟用標準記錄 (v2)，這不會影響或變更標準記錄 (舊版)。除了使用標準記錄 (v2) 之外，您還可以繼續使用分佈的標準記錄 (舊版)。如需詳細資訊，請參閱[設定標準記錄 (舊式)](standard-logging-legacy-s3.md)。
如果您已啟用標準記錄 (舊版)，而且想要啟用 Amazon S3 的標準記錄 (v2)，建議您指定*不同的* Amazon S3 儲存貯體，或使用相同儲存貯體中的*個別路徑* (例如，使用日誌字首或分割)。這可協助您追蹤哪些日誌檔案與哪些分佈相關聯，並防止日誌檔案互相覆寫。

## 許可
<a name="permissions-standard-logging"></a>

CloudFront 使用 CloudWatch 提供的日誌來傳遞存取日誌。若要這樣做，您需要指定 的許可， AWS 服務 才能啟用記錄交付。

若要查看每個記錄目的地的必要許可，請在 *Amazon CloudWatch Logs 使用者指南*中選擇下列主題。
+ [CloudWatch Logs](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AWS-logs-and-resource-policy.html#AWS-logs-infrastructure-V2-CloudWatchLogs)
+ [Firehose](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AWS-logs-and-resource-policy.html#AWS-logs-infrastructure-V2-Firehose)
+ [Amazon S3](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AWS-logs-and-resource-policy.html#AWS-logs-infrastructure-V2-S3)

在設定記錄目的地的許可後，您便可以為分佈啟用標準記錄。

**注意**  
CloudFront 支援將存取日誌傳送至不同的 AWS 帳戶 （跨帳戶）。若要啟用跨帳戶交付，帳戶 (您的帳戶和接收帳戶) 必須具有必要的許可。如需詳細資訊，請參閱《Amazon CloudWatch Logs 使用者指南》**中的 [啟用跨帳戶交付的標準記錄](#enable-standard-logging-cross-accounts) 一節或[跨帳戶交付範例](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AWS-logs-and-resource-policy.html#vended-logs-crossaccount-example)。

## 啟用標準記錄
<a name="set-up-standard-logging"></a>

若要啟用標準記錄，您可以使用 CloudFront 主控台或 CloudWatch API。

**Contents**
+ [

### 啟用標準記錄 (CloudFront 主控台)
](#access-logging-console)
+ [

### 啟用標準記錄 (CloudWatch API)
](#enable-access-logging-api)

### 啟用標準記錄 (CloudFront 主控台)
<a name="access-logging-console"></a>

**啟用 CloudFront 分佈的標準記錄 (主控台)**

1. 使用 CloudFront 主控台以[更新現有的分佈](HowToUpdateDistribution.md#HowToUpdateDistributionProcedure)。

1. 選擇 **Logging** (日誌記錄) 索引標籤。

1. 選擇**新增**，然後選擇要接收日誌的服務：
   + CloudWatch Logs
   + Firehose
   + Amazon S3

1. 針對**目的地**，請選取您服務的資源。如果您尚未建立資源，您可以選擇**建立**或查看下列文件。
   + 針對 CloudWatch Logs，輸入**[日誌群組名稱](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/Working-with-log-groups-and-streams.html)**。
   + 對於 Firehose，輸入 **[Firehose 交付串流](https://docs.aws.amazon.com/firehose/latest/dev/basic-create.html)**。
   + 針對 Amazon S3，輸入**[儲存貯體名稱](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html)**。
**提示**  
若要指定字首，請在儲存貯體名稱後面輸入字首，例如 `amzn-s3-demo-bucket.s3.amazonaws.com/MyLogPrefix`。如果您未指定字首，CloudFront 會自動為您新增字首。如需詳細資訊，請參閱[傳送日誌至 Amazon S3](#send-logs-s3)。

1. 對於**其他設定 – *選用***，您可以指定下列選項：

   1. 針對**欄位選擇**，選取您要交付至目的地的日誌欄位名稱。您可以選取[存取日誌欄位](standard-logs-reference.md#BasicDistributionFileFormat)和[即時存取日誌欄位](#standard-logging-real-time-log-selection)的子集。

   1. (僅限 Amazon S3) 對於**分割**，指定分割日誌檔案資料的路徑。

   1. (僅限 Amazon S3) 對於 **Hive 相容檔案格式**，您可以選取核取方塊以使用 Hive 相容 S3 路徑。這有助於簡化將新資料載入 Hive 相容工具的過程。

   1. 針對**輸出格式**，請指定您偏好的格式。
**注意**  
如果您選擇 **Parquet**，此選項會產生將存取日誌轉換為 Apache Parquet 的 CloudWatch 費用。如需詳細資訊，請參閱 [CloudWatch 定價中的付費日誌](https://aws.amazon.com/cloudwatch/pricing/)一節。

   1. 對於**欄位分隔符號**，指定如何分隔日誌欄位。

1. 完成更新或建立分佈的步驟。

1. 若要新增另一個目的地，請重複步驟 3–6。

1. 在**日誌**頁面中，確認分佈旁的標準日誌狀態為**已啟用**。

1. (選用) 若要啟用 Cookie 記錄，請選擇**管理**、**設定**並開啟 **Cookie 記錄**，然後選擇**儲存變更**。
**提示**  
Cookie 記錄是全域設定，適用於分佈的*所有*標準日誌。您無法覆寫個別交付目的地的此設定。

如需標準記錄交付和日誌欄位的詳細資訊，請參閱 [標準記錄參考](standard-logs-reference.md)。

### 啟用標準記錄 (CloudWatch API)
<a name="enable-access-logging-api"></a>

您也可以使用 CloudWatch API 為您的分佈啟用標準記錄。

**備註**  
呼叫 CloudWatch API 以啟用標準記錄時，即使您想要啟用跨區域交付到另一個目的地，您也必須指定美國東部 (維吉尼亞北部) 區域 (`us-east-1`)。例如，如果您想要將存取日誌傳送至歐洲 (愛爾蘭) 區域的 S3 儲存貯體 (`eu-west-1`)，請使用 `us-east-1` 區域中的 CloudWatch API。
在標準日誌中包含 Cookie 還有其他選項。在 CloudFront API 中，這是 `IncludeCookies` 參數。如果您透過使用 CloudWatch API 設定存取記錄，並指定要包含 Cookie，則必須使用 CloudFront 主控台或 CloudFront API 來更新您的分佈以包含 Cookie。否則，CloudFront 無法傳送 Cookie 到您的日誌目的地。如需詳細資訊，請參閱[Cookie 記錄](DownloadDistValuesGeneral.md#DownloadDistValuesCookieLogging)。

**啟用分佈的標準記錄 (CloudWatch API)**

1. 建立分佈之後，請取得 Amazon Resource Name (ARN)。

   您可以從 CloudFront 主控台的**分佈**頁面找到 ARN，也可以使用 [GetDistribution](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_GetDistribution.html) API 操作。分佈 ARN 遵循以下格式：`arn:aws:cloudfront::123456789012:distribution/d111111abcdef8`

1. 接著，使用 CloudWatch [PutDeliverySource](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_PutDeliverySource.html) API 操作來建立分佈的交付來源。

   1. 輸入交付來源的名稱。

   1. 傳遞分佈的 `resourceArn`。

   1. 對於 `logType`，指定 `ACCESS_LOGS` 為收集的日誌類型。

   1.   
**Example AWS CLI put-delivery-source 命令**  

      以下是為分佈設定交付來源的範例。

      ```
      aws logs put-delivery-source --name S3-delivery --resource-arn arn:aws:cloudfront::123456789012:distribution/d111111abcdef8 --log-type ACCESS_LOGS
      ```

      **輸出**

      ```
      {
       "deliverySource": {
       "name": "S3-delivery",
       "arn": "arn:aws:logs:us-east-1:123456789012:delivery-source:S3-delivery",
       "resourceArns": [
       "arn:aws:cloudfront::123456789012:distribution/d111111abcdef8"
       ],
       "service": "cloudfront",
       "logType": "ACCESS_LOGS"
       }
      }
      ```

1. 使用 [PutDeliveryDestination](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_PutDeliveryDestination.html) API 操作來設定存放日誌的位置。

   1. 針對 `destinationResourceArn`，指定目的地的 ARN。這可以是 CloudWatch Logs 日誌群組、Firehose 交付串流，或 Amazon S3 儲存貯體。

   1. 針對 `outputFormat`，指定日誌的輸出格式。

   1.   
**Example AWS CLI put-delivery-destination 命令**  

      以下是將交付目的地設定為 Amazon S3 儲存貯體的範例。

      ```
      aws logs put-delivery-destination --name S3-destination --delivery-destination-configuration destinationResourceArn=arn:aws:s3:::amzn-s3-demo-bucket
      ```

      **輸出**

      ```
      {
          "name": "S3-destination",
          "arn": "arn:aws:logs:us-east-1:123456789012:delivery-destination:S3-destination",
          "deliveryDestinationType": "S3",
          "deliveryDestinationConfiguration": {
              "destinationResourceArn": "arn:aws:s3:::amzn-s3-demo-bucket"
          }
      }
      ```
**注意**  
如果您要跨帳戶傳遞日誌，則必須使用 [PutDeliveryDestinationPolicy](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_PutDeliveryDestinationPolicy.html) API 操作，以便將 AWS Identity and Access Management (IAM) 政策指派給目的地。IAM 政策允許從一個帳戶交付到另一個帳戶。

1. 使用 [CreateDelivery](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_CreateDelivery.html) API 操作，將交付來源連結至您在先前步驟中建立的目的地。此 API 操作會將交付來源與最終目的地建立關聯。

   1. 針對 `deliverySourceName`，指定來源名稱。

   1. 針對 `deliveryDestinationArn`，指定交付目的地的 ARN。

   1. 對於 `fieldDelimiter`，指定要分隔每個日誌欄位的字串。

   1. 針對 `recordFields`，指定您想要的日誌欄位。

   1. 如果您使用的是 S3，請指定是否使用 `enableHiveCompatiblePath` 和 `suffixPath`。  
**Example AWS CLI create-delivery 命令範例**  

   以下為建立交付的範例。

   ```
   aws logs create-delivery --delivery-source-name cf-delivery --delivery-destination-arn arn:aws:logs:us-east-1:123456789012:delivery-destination:S3-destination
   ```

   **輸出**

   ```
   {
       "id": "abcNegnBoTR123",
       "arn": "arn:aws:logs:us-east-1:123456789012:delivery:abcNegnBoTR123",
       "deliverySourceName": "cf-delivery",
       "deliveryDestinationArn": "arn:aws:logs:us-east-1:123456789012:delivery-destination:S3-destination",
       "deliveryDestinationType": "S3",
       "recordFields": [
           "date",
           "time",
           "x-edge-location",
           "sc-bytes",
           "c-ip",
           "cs-method",
           "cs(Host)",
           "cs-uri-stem",
           "sc-status",
           "cs(Referer)",
           "cs(User-Agent)",
           "cs-uri-query",
           "cs(Cookie)",
           "x-edge-result-type",
           "x-edge-request-id",
           "x-host-header",
           "cs-protocol",
           "cs-bytes",
           "time-taken",
           "x-forwarded-for",
           "ssl-protocol",
           "ssl-cipher",
           "x-edge-response-result-type",
           "cs-protocol-version",
           "fle-status",
           "fle-encrypted-fields",
           "c-port",
           "time-to-first-byte",
           "x-edge-detailed-result-type",
           "sc-content-type",
           "sc-content-len",
           "sc-range-start",
           "sc-range-end",
           "c-country",
           "cache-behavior-path-pattern"
       ],
        "fieldDelimiter": ""
   }
   ```

1. 在 CloudFront 主控台的**日誌**頁面上，確認分佈旁的標準日誌狀態**已啟用**。

   如需標準記錄交付和日誌欄位的詳細資訊，請參閱 [標準記錄參考](standard-logs-reference.md)。

**注意**  
若要使用 啟用 CloudFront 的標準記錄 (v2) AWS CloudFormation，您可以使用下列 CloudWatch Logs 屬性：  
[Delivery](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-logs-delivery.html)
[DeliveryDestination](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-logs-deliverydestination.html)
[DeliverySource](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-logs-deliverysource.html)
`ResourceArn` 是 CloudFront 分佈，且 `LogType` 必須是 `ACCESS_LOGS` 作為支援的日誌類型。

## 啟用跨帳戶交付的標準記錄
<a name="enable-standard-logging-cross-accounts"></a>

如果您為 啟用標準記錄， AWS 帳戶 而且想要將存取日誌交付給另一個帳戶，請確定您正確設定來源帳戶和目的地帳戶。具有 CloudFront 分佈的*來源帳戶*會將其存取日誌傳送至*目的地帳戶*。

在此範例程序中，來源帳戶 (*111111111111*) 會將其存取日誌傳送至目的地帳戶 (*222222222222*) 中的 Amazon S3 儲存貯體。若要將存取日誌傳送至目的地帳戶中的 Amazon S3 儲存貯體，請使用 AWS CLI。

### 設定目的地帳戶
<a name="steps-destination-account"></a>

對於目的地帳戶，請完成下列程序。

**設定目的地帳戶**

1. 若要建立日誌交付目的地，您可以輸入下列 AWS CLI 命令。此範例使用 `MyLogPrefix` 字串為您的存取日誌建立字首。

   ```
   aws logs put-delivery-destination --name cloudfront-delivery-destination --delivery-destination-configuration "destinationResourceArn=arn:aws:s3:::amzn-s3-demo-bucket-cloudfront-logs/MyLogPrefix"
   ```

   **輸出**

   ```
   {
       "deliveryDestination": {
           "name": "cloudfront-delivery-destination",
           "arn": "arn:aws:logs:us-east-1:222222222222:delivery-destination:cloudfront-delivery-destination",
           "deliveryDestinationType": "S3",
           "deliveryDestinationConfiguration": {"destinationResourceArn": "arn:aws:s3:::amzn-s3-demo-bucket-cloudfront-logs/MyLogPrefix"}
       }
   }
   ```
**注意**  
如果您指定的 S3 儲存貯體*沒有*字首，則 CloudFront 會自動將 `AWSLogs/<account-ID>/CloudFront` 附加為字首，顯示在 S3 交付目的地的 `suffixPath` 中。如需詳細資訊，請參閱 [S3DeliveryConfiguration](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_S3DeliveryConfiguration.html)。

1. 新增日誌交付目的地的資源政策，以允許來源帳戶建立日誌交付。

   在下列政策中，以來源帳戶 ID 取代 *111111111111*，並從步驟 1 的輸出指定交付目的地 ARN。

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "AllowCreateDelivery",
               "Effect": "Allow",
               "Principal": {"AWS": "111111111111"},
               "Action": ["logs:CreateDelivery"],
               "Resource": "arn:aws:logs:us-east-1:222222222222:delivery-destination:cloudfront-delivery-destination"
           }
       ]
   }
   ```

------

1. 儲存檔案，例如 `deliverypolicy.json`。

1. 若要將先前的政策連接至交付目的地，請輸入下列 AWS CLI 命令。

   ```
   aws logs put-delivery-destination-policy --delivery-destination-name cloudfront-delivery-destination --delivery-destination-policy file://deliverypolicy.json
   ```

1. 將下列陳述式新增至目的地 Amazon S3 儲存貯體政策，取代資源 ARN 和來源帳戶 ID。此政策允許 `delivery.logs.amazonaws.com` 服務主體執行 `s3:PutObject` 動作。

   ```
   {
       "Sid": "AWSLogsDeliveryWrite",
       "Effect": "Allow",
       "Principal": {"Service": "delivery.logs.amazonaws.com"},
       "Action": "s3:PutObject",
       "Resource": "arn:aws:s3:::amzn-s3-demo-bucket-cloudfront-logs/*",
       "Condition": {
           "StringEquals": {
               "s3:x-amz-acl": "bucket-owner-full-control",
               "aws:SourceAccount": "111111111111"
           },
           "ArnLike": {"aws:SourceArn": "arn:aws:logs:us-east-1:111111111111:delivery-source:*"}
       }
   }
   ```

1. 如果您使用 AWS KMS 做為儲存貯體，請將下列陳述式新增至 KMS 金鑰政策，以將許可授予`delivery.logs.amazonaws.com`服務主體。

   ```
   {
       "Sid": "Allow Logs Delivery to use the key",
       "Effect": "Allow",
       "Principal": {"Service": "delivery.logs.amazonaws.com"},
       "Action": [
           "kms:Encrypt",
           "kms:Decrypt",
           "kms:ReEncrypt*",
           "kms:GenerateDataKey*",
           "kms:DescribeKey"
       ],
       "Resource": "*",
       "Condition": {
           "StringEquals": {"aws:SourceAccount": "111111111111"},
           "ArnLike": {"aws:SourceArn": "arn:aws:logs:us-east-1:111111111111:delivery-source:*"}
       }
   }
   ```

### 設定來源帳戶
<a name="steps-source-account"></a>

設定目的地帳戶之後，請依照此程序建立交付來源，並啟用來源帳戶中分佈的記錄。

**設定來源帳戶**

1. 建立 CloudFront 標準記錄的交付來源，以便您可以將日誌檔案傳送至 CloudWatch Logs。

   您可以輸入下列 AWS CLI 命令，取代名稱和分佈 ARN。

   ```
   aws logs put-delivery-source --name s3-cf-delivery --resource-arn arn:aws:cloudfront::111111111111:distribution/E1TR1RHV123ABC --log-type ACCESS_LOGS
   ```

   **輸出**

   ```
   {
       "deliverySource": {
           "name": "s3-cf-delivery",
           "arn": "arn:aws:logs:us-east-1:111111111111:delivery-source:s3-cf-delivery",
           "resourceArns": ["arn:aws:cloudfront::111111111111:distribution/E1TR1RHV123ABC"],
           "service": "cloudfront",
           "logType": "ACCESS_LOGS"
       }
   }
   ```

1. 建立交付以對應來源帳戶的日誌交付來源和目的地帳戶的日誌交付目的地。

   在下列 AWS CLI 命令中，從[步驟 1：設定目的地帳戶中的輸出指定交付目的地](#steps-destination-account) ARN。

   ```
   aws logs create-delivery --delivery-source-name s3-cf-delivery --delivery-destination-arn arn:aws:logs:us-east-1:222222222222:delivery-destination:cloudfront-delivery-destination
   ```

   **輸出**

   ```
   {
       "delivery": {
           "id": "OPmOpLahVzhx1234",
           "arn": "arn:aws:logs:us-east-1:111111111111:delivery:OPmOpLahVzhx1234",
           "deliverySourceName": "s3-cf-delivery",
           "deliveryDestinationArn": "arn:aws:logs:us-east-1:222222222222:delivery-destination:cloudfront-delivery-destination",
           "deliveryDestinationType": "S3",
           "recordFields": [
               "date",
               "time",
               "x-edge-location",
               "sc-bytes",
               "c-ip",
               "cs-method",
               "cs(Host)",
               "cs-uri-stem",
               "sc-status",
               "cs(Referer)",
               "cs(User-Agent)",
               "cs-uri-query",
               "cs(Cookie)",
               "x-edge-result-type",
               "x-edge-request-id",
               "x-host-header",
               "cs-protocol",
               "cs-bytes",
               "time-taken",
               "x-forwarded-for",
               "ssl-protocol",
               "ssl-cipher",
               "x-edge-response-result-type",
               "cs-protocol-version",
               "fle-status",
               "fle-encrypted-fields",
               "c-port",
               "time-to-first-byte",
               "x-edge-detailed-result-type",
               "sc-content-type",
               "sc-content-len",
               "sc-range-start",
               "sc-range-end",
               "c-country",
               "cache-behavior-path-pattern"
           ],
           "fieldDelimiter": "\t"
       }
   }
   ```

1. 驗證您的跨帳戶交付是否成功。

   1. 從*來源*帳戶登入 CloudFront 主控台，然後選擇您的分佈。在**記錄**索引標籤的**類型**下，您會看到為 S3 跨帳戶日誌交付建立的項目。

   1. 從*目的地*帳戶登入 Amazon S3 主控台，然後選擇您的 Amazon S3 儲存貯體。您會在儲存貯體名稱中看到字首 `MyLogPrefix`，以及傳送到該資料夾的任何存取日誌。

## 輸出檔案格式
<a name="supported-log-file-format"></a>

根據您選擇的交付目的地，您可以為日誌檔指定下列其中一種格式：
+ JSON
+ Plain
+ w3c
+ Raw
+ Parquet (僅限 Amazon S3)

**注意**  
您只能在第一次建立交付目的地時設定輸出格式。這無法在稍後更新。若要變更輸出格式，請刪除交付項目，然後建立另一種格式。

如需詳細資訊，請參閱《Amazon CloudWatch Logs API 參考指南》**中的 [PutDeliveryDestination](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_PutDeliveryDestination.html)。

## 編輯標準記錄設定
<a name="standard-logs-v2-edit-settings"></a>

您可以使用 [CloudFront 主控台](https://console.aws.amazon.com/cloudfront/v4/home)或 CloudWatch API 啟用或停用記錄和更新其他日誌設定。記錄設定的變更在 12 小時內生效。

如需詳細資訊，請參閱下列主題：
+ 若要使用 CloudFront 主控台更新分佈，請參閱 [更新分佈](HowToUpdateDistribution.md)。
+ 若要使用 CloudFront API 更新分佈，請參閱《Amazon CloudFront API 參考》**中的 [UpdateDistribution](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_UpdateDistribution.html)。
+ 如需 CloudWatch Logs API 操作的詳細資訊，請參閱《[Amazon CloudWatch Logs API 參考](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/Welcome.html)》。

## 存取日誌欄位
<a name="standard-logging-real-time-log-selection"></a>

您可以選取標準記錄 (舊版) 支援的相同日誌欄位。如需詳細資訊，請參閱[日誌檔案欄位](standard-logs-reference.md#BasicDistributionFileFormat)。

此外，您可以選取下列[即時存取日誌欄位](real-time-logs.md#understand-real-time-log-config)。

1. `timestamp(ms)` – 以毫秒為單位的時間戳記。

1. `origin-fbl` – CloudFront 與您的原始伺服器之間第一個位元組延遲的秒數。

1. `origin-lbl` – CloudFront 與您的原始伺服器之間最後一個位元組延遲的秒數。

1. `asn` – 檢視器的自治系統編號 (ASN)。

1. `c-country` – 國家/地區代碼代表檢視器的地理位置，由檢視器的 IP 位址決定。如需國家/地區代碼的清單，請參閱 [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)。

1. `cache-behavior-path-pattern` – 識別符合檢視器請求之快取行為的路徑模式。

## 將日誌傳送至 CloudWatch Logs
<a name="send-logs-cloudwatch-logs"></a>

若要將日誌傳送至 CloudWatch Logs，請建立或使用現有的 CloudWatch Logs 日誌群組。如需有關設定 CloudWatch Logs 日誌群組的詳細資訊，請參閱[使用日誌群組和日誌串流](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/Working-with-log-groups-and-streams.html)。

建立日誌群組之後，您必須擁有允許標準記錄的必要許可。如需有關必要許可的詳細資訊，請參閱《Amazon CloudWatch Logs 使用者指南》**中的[傳送至 CloudWatch Logs 的日誌](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AWS-logs-and-resource-policy.html#AWS-logs-infrastructure-V2-CloudWatchLogs)。

**備註**  
當您指定 CloudWatch Logs 日誌群組的名稱時，請僅使用 regex 模式 `[\w-]`。如需詳細資訊，請參閱《Amazon CloudWatch Logs API 參考》**中的 [PutDeliveryDestination](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_PutDeliveryDestination.html#API_PutDeliveryDestination_RequestSyntax) API 操作。
確認您的日誌群組資源政策未超過大小限制。請參閱 CloudWatch Logs 主題中的[日誌群組資源政策大小限制考量](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AWS-logs-and-resource-policy.html#AWS-logs-infrastructure-V2-CloudWatchLogs)一節。

### 傳送至 CloudWatch Logs 的存取日誌範例
<a name="example-access-logs-cwl"></a>

```
{ 
"date": "2024-11-14", 
"time": "21:34:06", 
"x-edge-location": "SOF50-P2", 
"asn": "16509", 
"timestamp(ms)": "1731620046814", 
"origin-fbl": "0.251", 
"origin-lbl": "0.251", 
"x-host-header": "d111111abcdef8.cloudfront.net", 
"cs(Cookie)": "examplecookie=value" 
}
```

## 傳送日誌至 Firehose
<a name="send-logs-kinesis"></a>

若要將日誌傳送至 Firehose，請建立或使用現有的 Firehose 交付串流。然後，指定 Firehose 交付串流做為日誌交付目的地。您必須在美國東部 (維吉尼亞北部) us-east-1 區域中指定 Firehose 交付串流。

如需建立交付串流的相關資訊，請參閱[建立 Amazon Data Firehose 交付串流](https://docs.aws.amazon.com/firehose/latest/dev/basic-create.html)。

建立交付串流後，您必須擁有允許標準記錄的必要許可。如需詳細資訊，請參閱《Amazon CloudWatch Logs 使用者指南》**中的[傳送至 Firehose 的日誌](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AWS-logs-and-resource-policy.html#AWS-logs-infrastructure-V2-Firehose)。

**注意**  
當您指定 Firehose 串流的名稱時，請僅使用 regex 模式 `[\w-]`。如需詳細資訊，請參閱《Amazon CloudWatch Logs API 參考》**中的 [PutDeliveryDestination](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_PutDeliveryDestination.html#API_PutDeliveryDestination_RequestSyntax) API 操作。

### 傳送至 Firehose 的存取日誌範例
<a name="example-access-logs-firehose"></a>

```
{"date":"2024-11-15","time":"19:45:51","x-edge-location":"SOF50-P2","asn":"16509","timestamp(ms)":"1731699951183","origin-fbl":"0.254","origin-lbl":"0.254","x-host-header":"d111111abcdef8.cloudfront.net","cs(Cookie)":"examplecookie=value"}
{"date":"2024-11-15","time":"19:45:52","x-edge-location":"SOF50-P2","asn":"16509","timestamp(ms)":"1731699952950","origin-fbl":"0.125","origin-lbl":"0.125","x-host-header":"d111111abcdef8.cloudfront.net","cs(Cookie)":"examplecookie=value"}
```

## 傳送日誌至 Amazon S3
<a name="send-logs-s3"></a>

若要將存取日誌傳送至 Amazon S3，請建立或使用現有的 S3 儲存貯體。當您在 CloudFront 中啟用記錄時，請指定儲存貯體名稱。如需建立儲存貯體的詳細資訊，請參閱《Amazon Simple Storage Service 使用者指南》**中的[建立儲存貯體](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html)。

建立儲存貯體之後，您必須擁有允許標準記錄的必要許可。如需詳細資訊，請參閱「Amazon CloudWatch Logs 使用者指南」**中的[傳送至 Amazon S3 的日誌](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AWS-logs-and-resource-policy.html#AWS-logs-infrastructure-V2-S3)。
+ 啟用記錄後， AWS 會自動為您新增必要的儲存貯體政策。
+ 您也可以在[選擇加入 AWS 區域](https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-regions.html) 中使用 S3 儲存貯體。

**注意**  
如果您已啟用標準記錄 (舊版)，而且想要啟用 Amazon S3 的標準記錄 (v2)，建議您指定*不同的* Amazon S3 儲存貯體，或使用相同儲存貯體中的*個別路徑* (例如，使用日誌字首或分割)。這可協助您追蹤哪些日誌檔案與哪些分佈相關聯，並防止日誌檔案互相覆寫。

**Topics**
+ [

### 指定 S3 儲存貯體
](#prefix-s3-buckets)
+ [

### 分割
](#partitioning)
+ [

### 與 Hive 相容的檔案名稱格式
](#hive-compatible-file-name-format)
+ [

### 存取日誌的範例路徑
](#bucket-path-examples)
+ [

### 傳送至 Amazon S3 的存取日誌範例
](#example-access-logs-s3)

### 指定 S3 儲存貯體
<a name="prefix-s3-buckets"></a>

當您指定 S3 儲存貯體做為交付目的地時，請注意下列事項。

S3 儲存貯體名稱只能使用 regex 模式 `[\w-]`。如需詳細資訊，請參閱《Amazon CloudWatch Logs API 參考》**中的 [PutDeliveryDestination](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_PutDeliveryDestination.html#API_PutDeliveryDestination_RequestSyntax) API 操作。

如果您為 S3 儲存貯體指定字首，您的日誌會顯示在該路徑下。如果您不指定字首，CloudFront 會自動為您附加 `AWSLogs/{account-id}/CloudFront` 字首。

如需詳細資訊，請參閱[存取日誌的範例路徑](#bucket-path-examples)。

### 分割
<a name="partitioning"></a>

當 CloudFront 將存取日誌傳送到 S3 儲存貯體時，您可以使用分割來組織存取日誌。這有助於您根據需要的路徑來組織和找出存取日誌。

您可以使用下列變數來建立資料夾路徑。
+ `{DistributionId}` 或 `{distributionid}`
+ `{yyyy}`
+ `{MM}`
+ `{dd}`
+ `{HH}`
+ `{accountid}`

您可以使用任意數量的變數，並指定路徑中的資料夾名稱。接著，CloudFront 會使用此路徑，在 S3 儲存貯體中為您建立資料夾結構。

**範例**
+ `my_distribution_log_data/{DistributionId}/logs`
+ `/cloudfront/{DistributionId}/my_distribution_log_data/{yyyy}/{MM}/{dd}/{HH}/logs `

**注意**  
 您可以使用任一變數做為尾碼路徑中的分佈 ID。不過，如果您要將存取日誌傳送到 AWS Glue，則必須使用 `{distributionid}`變數，因為 AWS Glue 預期分割區名稱為小寫。在 CloudFront 中更新現有的日誌組態，以 `{DistributionId}` 取代 `{distributionid}`。

### 與 Hive 相容的檔案名稱格式
<a name="hive-compatible-file-name-format"></a>

您可以使用此選項，讓包含交付存取日誌的 S3 物件使用允許與 Apache Hive 整合的字首結構。如需詳細資訊，請參閱 [CreateDelivery](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_CreateDelivery.html) API 操作。

**Example 範例**  

```
/cloudfront/DistributionId={DistributionId}/my_distribution_log_data/year={yyyy}/month={MM}/day={dd}/hour={HH}/logs
```

如需分割和 Hive 相容選項的詳細資訊，請參閱《Amazon CloudWatch Logs API 參考》**中的 [S3DeliveryConfiguration](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_S3DeliveryConfiguration.html) 元素。

### 存取日誌的範例路徑
<a name="bucket-path-examples"></a>

當您指定 S3 儲存貯體做為目的地時，您可以使用下列選項來建立存取日誌的路徑：
+ 包含或不含字首的 Amazon S3 儲存貯體
+ 透過使用 CloudFront 提供的變數或輸入您自己變數的分割
+ 啟用 Hive 相容選項

下表顯示您的存取日誌在儲存貯體中，依您選擇的選項所顯示的方式。

#### 具有字首的 Amazon S3 儲存貯體
<a name="bucket-with-prefix"></a>


| Amazon S3 儲存貯體名稱。 | 您在尾碼路徑中指定的分割區 | 已更新尾碼路徑 | 已啟用 Hive 相容？ | 存取日誌會傳送至 | 
| --- | --- | --- | --- | --- | 
| amzn-s3-demo-bucket/MyLogPrefix | 無 | 無 | 否 | amzn-s3-demo-bucket/MyLogPrefix/ | 
| amzn-s3-demo-bucket/MyLogPrefix | myFolderA/ | myFolderA/ | 否 | amzn-s3-demo-bucket/MyLogPrefix/myFolderA/ | 
| amzn-s3-demo-bucket/MyLogPrefix | myFolderA/\$1yyyy\$1 | myFolderA/\$1yyyy\$1 | 是 | amzn-s3-demo-bucket/MyLogPrefix/myFolderA/year=2025 | 

#### 沒有字首的 Amazon S3 儲存貯體
<a name="bucket-without-prefix"></a>


| Amazon S3 儲存貯體名稱。 | 您在尾碼路徑中指定的分割區 | 已更新尾碼路徑 | 已啟用 Hive 相容？ | 存取日誌會傳送至 | 
| --- | --- | --- | --- | --- | 
| amzn-s3-demo-bucket | 無 | AWSLogs/\$1account-id\$1/CloudFront/ | 否 | amzn-s3-demo-bucket/AWSLogs/<your-account-ID>/CloudFront/ | 
| amzn-s3-demo-bucket | myFolderA/ | AWSLogs/\$1account-id\$1/CloudFront/myFolderA/ | 否 | amzn-s3-demo-bucket/AWSLogs/<your-account-ID>/CloudFront/myFolderA/ | 
| amzn-s3-demo-bucket | myFolderA/ | AWSLogs/\$1account-id\$1/CloudFront/myFolderA/ | 是 | amzn-s3-demo-bucket/AWSLogs/aws-account-id=<your-account-ID>/CloudFront/myFolderA/ | 
| amzn-s3-demo-bucket | myFolderA/\$1yyyy\$1 | AWSLogs/\$1account-id\$1/CloudFront/myFolderA/\$1yyyy\$1 | 是 | amzn-s3-demo-bucket/AWSLogs/aws-account-id=<your-account-ID>/CloudFront/myFolderA/year=2025 | 

#### AWS 帳戶 ID 做為分割區
<a name="bucket-account-id-partition"></a>


| Amazon S3 儲存貯體名稱。 | 您在尾碼路徑中指定的分割區 | 已更新尾碼路徑 | 已啟用 Hive 相容？ | 存取日誌會傳送至 | 
| --- | --- | --- | --- | --- | 
| amzn-s3-demo-bucket | 無 | AWSLogs/\$1account-id\$1/CloudFront/ | 是 | amzn-s3-demo-bucket/AWSLogs/aws-account-id=<your-account-ID>/CloudFront/ | 
| amzn-s3-demo-bucket | myFolderA/\$1accountid\$1 | AWSLogs/\$1account-id\$1/CloudFront/myFolderA/\$1accountid\$1 | 是 | amzn-s3-demo-bucket/AWSLogs/aws-account-id=<your-account-ID>/CloudFront/myFolderA/accountid=<your-account-ID> | 

**備註**  
`{account-id}` 變數會保留給 CloudFront。如果您指定*沒有*字首的 Amazon S3 儲存貯體，CloudFront 會自動將此變數新增至尾碼路徑。如果您的日誌與 Hive 相容，此變數會顯示為 `aws-account-id`。
您可以使用 `{accountid}` 變數，讓 CloudFront 將您的帳戶 ID 新增至尾碼路徑。如果您的日誌與 Hive 相容，此變數會顯示為 `accountid`。
如需尾碼路徑的詳細資訊，請參閱 [S3DeliveryConfiguration](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_S3DeliveryConfiguration.html)。

### 傳送至 Amazon S3 的存取日誌範例
<a name="example-access-logs-s3"></a>

```
#Fields: date time x-edge-location asn timestamp(ms) x-host-header cs(Cookie)
2024-11-14    22:30:25    SOF50-P2    16509    1731623425421    
d111111abcdef8.cloudfront.net    examplecookie=value2
```

## 停用標準記錄
<a name="delete-standard-log-destination"></a>

如果您不再需要分佈的標準記錄，您可以停用該記錄。

**停用標準記錄**

1. 登入 CloudFront 主控台。

1. 選擇**分佈**，然後選擇分佈 ID。

1. 選擇**記錄**，然後在**存取日誌目的地**下，選取目的地。

1. 選擇**管理**，然後選擇**刪除**。

1. 如果您有多個標準記錄，請重複上一個步驟。

**注意**  
當您從 CloudFront 主控台刪除標準記錄時，此動作只會刪除交付和交付目的地。它不會從您的 刪除交付來源 AWS 帳戶。若要刪除交付來源，請在 `aws logs delete-delivery-source --name DeliverySourceName` 命令中指定交付來源名稱。如需詳細資訊，請參閱《Amazon CloudWatch Logs API 參考》**中的 [DeleteDeliverySource](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_DeleteDeliverySource.html)。

## 疑難排解
<a name="troubleshooting-access-logs-v2"></a>

使用下列資訊來修正使用 CloudFront 標準記錄 (v2) 時的常見問題。

### 交付來源已存在
<a name="access-logging-resource-already-used"></a>

當您為分佈啟用標準記錄時，您可以建立交付來源。然後，您可以使用該交付來源來建立您想要的目的地類型交付：CloudWatch Logs、Firehose、Amazon S3。目前，每個分佈只能有一個交付來源。如果您嘗試為相同的分佈建立另一個交付來源，則會出現下列錯誤訊息。

```
This ResourceId has already been used in another Delivery Source in this account
```

若要建立另一個交付來源，請先刪除現有的交付來源。如需詳細資訊，請參閱《Amazon CloudWatch Logs API 參考》**中的 [DeleteDeliverySource](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_DeleteDeliverySource.html)。

### 我變更了尾碼路徑，而 Amazon S3 儲存貯體無法接收我的日誌
<a name="access-logging-s3-permission"></a>

如果您啟用標準記錄 (v2) 並指定無字首的儲存貯體 ARN，CloudFront 會將下列預設值附加到尾碼路徑：`AWSLogs/{account-id}/CloudFront`。如果您使用 CloudFront 主控台或 [UpdateDeliveryConfiguration](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_UpdateDeliveryConfiguration.html) API 操作來指定不同的尾碼路徑，則必須更新 Amazon S3 儲存貯體政策以使用相同的路徑。

**Example 範例：更新尾碼路徑**  

1. 您的預設尾碼路徑為 `AWSLogs/{account-id}/CloudFront`，而您將其取代為 `myFolderA`。

1. 由於您的新尾碼路徑與 Amazon S3 儲存貯體政策中指定的路徑不同，因此不會交付您的存取日誌。

1. 您可以執行下列任一步驟：
   + 將 Amazon S3 儲存貯體許可從 `amzn-s3-demo-bucket/AWSLogs/<your-account-ID>/CloudFront/*` 更新為 `amzn-s3-demo-bucket/myFolderA/*`。
   + 更新您的記錄組態以再次使用預設尾碼：`AWSLogs/{account-id}/CloudFront`
如需詳細資訊，請參閱[許可](#permissions-standard-logging)。

## 刪除日誌檔案
<a name="standard-logs-v2-delete"></a>

CloudFront 不會自動從您的目的地刪除日誌檔案。如需有關刪除日誌檔案的詳細資訊，請參閱下列主題：

**Amazon S3**
+ [Amazon Simple Storage Service 主控台使用者指南](https://docs.aws.amazon.com/AmazonS3/latest/userguide/DeletingObjects.html)中的*刪除物件*

**CloudWatch Logs**
+ *Amazon CloudWatch Logs 使用者指南*中的[使用日誌群組和日誌串流](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/Working-with-log-groups-and-streams.html)
+ *Amazon CloudWatch Logs API 參考*中的 [DeleteLogGroup](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_DeleteLogGroup.html) 

**Firehose**
+ *Amazon Data Firehose API 參考*中的 [DeleteDeliveryStream](https://docs.aws.amazon.com/firehose/latest/APIReference/API_DeleteDeliveryStream.html) 

## 定價
<a name="pricing-standard-logs"></a>

CloudFront 不收取啟用標準日誌的費用。不過，您可能需要支付交付、擷取、儲存或存取的費用，視您選取的日誌交付目的地而定。如需詳細資訊，請參閱 [Amazon CloudWatch Logs 定價](https://aws.amazon.com/cloudwatch/pricing/)。在**付費方案**下，選擇**日誌**索引標籤，然後在**已付費日誌**下，查看每個交付目的地的資訊。

如需每個 定價的詳細資訊 AWS 服務，請參閱下列主題：
+ [Amazon CloudWatch Logs 定價](https://aws.amazon.com/cloudwatch/pricing/)
+ [Amazon Data Firehose 定價](https://aws.amazon.com/kinesis/data-firehose/pricing/)
+ [Amazon S3 定價](https://aws.amazon.com/s3/pricing/) 
**注意**  
雖然儲存和存取日誌檔案會產生 Amazon S3 費用，但將日誌傳送到 Amazon S3 不會產生額外費用。如果您啟用 **Parquet** 選項將存取日誌轉換為 Apache Parquet，此選項會產生 CloudWatch 費用。如需詳細資訊，請參閱 [CloudWatch 定價中的付費日誌](https://aws.amazon.com/cloudwatch/pricing/)一節。

# 設定標準記錄 (舊式)
<a name="standard-logging-legacy-s3"></a>

**備註**  
本主題適用於先前版本的標準記錄。如需最新版本，請參閱[設定標準記錄 (v2)](standard-logging.md)。
如果您已啟用標準記錄 (舊版)，而且想要啟用 Amazon S3 的標準記錄 (v2)，建議您指定*不同的* Amazon S3 儲存貯體，或使用相同儲存貯體中的*個別路徑* (例如，使用日誌字首或分割)。這可協助您追蹤哪些日誌檔案與哪些分佈相關聯，並防止日誌檔案互相覆寫。

若要開始使用標準記錄 (舊版)，請完成下列步驟：

1. 選擇將接收日誌的 Amazon S3 儲存貯體，並新增必要許可。

1. 從 CloudFront 主控台或 CloudFront API 設定標準記錄 (舊版)。您只能選擇 Amazon S3 儲存貯體來接收您的日誌。

1. 檢視您的存取日誌。

## 為標準日誌選擇 Amazon S3 儲存貯體
<a name="access-logs-choosing-s3-bucket"></a>

當您啟用分佈記錄時，請指定您要 CloudFront 存放日誌檔案存的 Amazon S3 儲存貯體。如果您是使用 Amazon S3 做為原始伺服器，我們建議您為日誌檔案使用*個別的*儲存貯體。

指定您要 CloudFront 儲存存取記錄的 Amazon S3 儲存貯體，例如 `amzn-s3-demo-bucket.s3.amazonaws.com`。

您可以在同一個儲存貯體存放多個分佈的日誌檔案。啟用記錄時，您可以指定檔案名稱的選用字首，以便您可以繼續追蹤哪個日誌檔案與那個分佈關聯。

**關於選擇 S3 儲存貯體**  
您的儲存貯體必須啟用存取控制清單 (ACL)。如果您從 CloudFront 主控台選擇未啟用 ACL 的儲存貯體，則會出現錯誤訊息。請參閱 [許可](#AccessLogsBucketAndFileOwnership)。
不要選擇 [S3 物件擁有權](https://docs.aws.amazon.com/AmazonS3/latest/userguide/about-object-ownership.html)設定為**強制執行儲存貯體擁有者**的 Amazon S3 儲存貯體。該設定會停用儲存貯體及其中物件的 ACL，這可防止 CloudFront 將記錄檔傳送至儲存貯體。
舊版記錄不支援選擇加入區域中的 Amazon S3 儲存貯體。請選擇預設啟用的區域，或使用支援選擇加入區域和其他功能的 [Standard Logging V2](standard-logging.md)。如需預設和選擇加入區域的清單，請參閱 [AWS 區域](https://docs.aws.amazon.com/global-infrastructure/latest/regions/aws-regions.html)。

## 許可
<a name="AccessLogsBucketAndFileOwnership"></a>

**重要**  
從 2023 年 4 月開始，您必須對用於 CloudFront 標準日誌的新 S3 儲存貯體啟用 S3 ACL。您可以在[建立儲存貯體](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-ownership-new-bucket.html)時啟用 ACL，或為[現有儲存貯體](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-ownership-existing-bucket.html)啟用 ACL。  
有關變更的詳細資訊，請參閱《Amazon Simple Storage Service 使用者指南》**中的[新 S3 儲存貯體的預設設定常見問答集](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-faq.html)和 *AWS 新聞部落格*中的[預告：Amazon S3 安全性變更將於 2023 年 4 月推出](https://aws.amazon.com/blogs/aws/heads-up-amazon-s3-security-changes-are-coming-in-april-of-2023/)。

對於您為日誌檔案指定的儲存貯體，您的 AWS 帳戶 必須具有下列許可：
+ 儲存貯體的 ACL 必須授予您 `FULL_CONTROL`。如果您是儲存貯體擁有者，您的帳戶會有預設的該許可。如果您不是，儲存貯體擁有者則必須更新儲存貯體的 ACL。
+ `s3:GetBucketAcl`
+ `s3:PutBucketAcl`

**儲存貯體的 ACL**  
當您建立或更新分佈及啟用記錄時，CloudFront 使用這些許可更新儲存貯體的 ACL，提供 `awslogsdelivery` 帳戶 `FULL_CONTROL` 許可。`awslogsdelivery` 帳戶將日誌檔案寫入儲存貯體。如果您的帳戶沒有更新 ACL 所需的許可，則建立或更新分佈會失敗。  
在某些情況下，如果您以程式設計的方式提交請求建立儲存貯體，但有指定名稱的儲存貯體已存在，則 S3 在儲存貯體上重設許可為預設值。如果您配置 CloudFront 在 S3 儲存貯體儲存存取日誌，且停止在該儲存貯體中取得日誌，請檢查儲存貯體上的許可，確保 CloudFront 擁有必要的許可。

**還原儲存貯體的 ACL**  
如果您移除 `awslogsdelivery` 帳戶的許可，CloudFront 便無法將日誌儲存到 S3 儲存貯體。若要啟用 CloudFront，使其開始為分佈儲存日誌，請執行以下其中一個步驟，即可還原 ACL 許可：  
+ 在 CloudFront 中停用分佈的記錄功能，然後再次啟用。如需詳細資訊，請參閱[標準記錄](DownloadDistValuesGeneral.md#DownloadDistValuesLoggingOnOff)。
+ 在 Amazon S3 主控台中瀏覽至 S3 儲存貯體，接著新增許可，即可為 `awslogsdelivery` 手動新增 ACL 許可。若要為 `awslogsdelivery` 新增 ACL，您必須提供該帳戶的正式 ID，如下所示：

  `c4c1ede66af53448b93c283ce9448c4ba468c9432aa01d700d3878632f77d2d0`

  

  如需將 ACL 新增至 S3 儲存貯體的詳細資訊，請參閱《Amazon Simple Storage Service 使用者指南》**中的[設定 ACL](https://docs.aws.amazon.com/AmazonS3/latest/userguide/managing-acls.html)。

**每個日誌檔案的 ACL**  
除了儲存貯體上的 ACL，每個日誌檔案上都有一個 ACL。每個日誌檔案上儲存貯體擁有者擁有 `FULL_CONTROL` 許可，分佈擁有者 (如果與儲存貯體擁有者不同) 沒有許可，且 `awslogsdelivery` 帳戶擁有讀取和寫入許可。

**停用記錄**  
如果您停用記錄，CloudFront 不會刪除儲存貯體或日誌檔案的 ACL。您可以視需要刪除 ACL。

### 適用於 SSE-KMS 儲存貯體的必要金鑰政策
<a name="AccessLogsKMSPermissions"></a>

如果標準日誌的 S3 儲存貯體透過客戶自管金鑰來使用 AWS KMS keys (SSE-KMS) 實現伺服器端加密，則必須將下列陳述式新增至客戶自管金鑰的金鑰政策。這可讓 CloudFront 將日誌寫入儲存貯體。您無法搭配 使用 SSE-KMS， AWS 受管金鑰 因為 CloudFront 無法將日誌檔案寫入儲存貯體。

```
{
    "Sid": "Allow CloudFront to use the key to deliver logs",
    "Effect": "Allow",
    "Principal": {
        "Service": "delivery.logs.amazonaws.com"
    },
    "Action": "kms:GenerateDataKey*",
    "Resource": "*"
}
```

如果標準日誌的 S3 儲存貯體使用 SSE-KMS 搭配 [S3 儲存貯體金鑰](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucket-key.html)，您還需要將 `kms:Decrypt` 權限新增至政策陳述式。在此情況下，完整的政策陳述式如下所示。

```
{
    "Sid": "Allow CloudFront to use the key to deliver logs",
    "Effect": "Allow",
    "Principal": {
        "Service": "delivery.logs.amazonaws.com"
    },
    "Action": [
        "kms:GenerateDataKey*",
        "kms:Decrypt"
    ],
    "Resource": "*"
}
```

**注意**  
當您為 S3 儲存貯體啟用 SSE-KMS 時，請為客戶自管金鑰指定完整的 ARN。如需詳細資訊，請參閱《*Amazon Simple Storage Service 使用者指南*》中的[使用 AWS KMS keys (SSE-KMS) 指定伺服器端加密](https://docs.aws.amazon.com/AmazonS3/latest/userguide/specifying-kms-encryption.html)。

## 啟用標準記錄 (舊版)
<a name="standard-logs-legacy-enable"></a>

若要啟用標準日誌，請使用 CloudFront 主控台或 CloudFront API。

**Contents**
+ [

### 啟用標準記錄 (舊版) (CloudFront 主控台)
](#standard-logs-legacy-enable-console)
+ [

### 啟用標準記錄 (舊版) (CloudFront API)
](#standard-logs-legacy-enable-api)

### 啟用標準記錄 (舊版) (CloudFront 主控台)
<a name="standard-logs-legacy-enable-console"></a>

**啟用 CloudFront 分佈的標準日誌 (主控台)**

1. 使用 CloudFront 主控台建立[新的分佈](distribution-web-creating-console.md)或[更新現有的分佈](HowToUpdateDistribution.md#HowToUpdateDistributionProcedure)。

1. 在**標準日誌**區段的**日誌交付**中，選擇**開啟**。

1. (選用) 對於 **Cookie 記錄**，如果您想要在日誌中包含 Cookie，請選擇**開啟**。如需詳細資訊，請參閱[Cookie 記錄](DownloadDistValuesGeneral.md#DownloadDistValuesCookieLogging)。
**提示**  
Cookie 記錄是全域設定，適用於分佈的*所有*標準日誌。您無法覆寫個別交付目的地的此設定。

1. 針對**交付至**區段，指定 **Amazon S3 (舊版)**。

1. 指定您的 Amazon S3 儲存貯體。如果您還沒有儲存貯體，您可以選擇**建立**或查看文件來[建立儲存貯體](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html)。

1. (選擇性) 針對**日誌字首**功能，請指定您希望 CloudFront 在此分佈的存取日誌檔案名稱前加入的字首 (如果有)，例如 `exampleprefix/`。結尾的斜線) (/) 是可選的，但建議簡化瀏覽日誌檔案。如需詳細資訊，請參閱[日誌字首](DownloadDistValuesGeneral.md#DownloadDistValuesLogPrefix)。

1. 完成更新或建立分佈的步驟。

1. 在**日誌**頁面中，確認分佈旁的標準日誌狀態為**已啟用**。

   如需標準記錄交付和日誌欄位的詳細資訊，請參閱 [標準記錄參考](standard-logs-reference.md)。

### 啟用標準記錄 (舊版) (CloudFront API)
<a name="standard-logs-legacy-enable-api"></a>

您也可以使用 CloudFront API 為您的分佈啟用標準日誌。

**啟用分佈的標準日誌 (CloudFront API)**
+ 使用 [CreateDistribution](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_CreateDistribution.html) 或 [UpdateDistribution](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_UpdateDistribution.html) API 操作，並設定 [LoggingConfig](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_LoggingConfig.html) 物件。

## 編輯標準記錄設定
<a name="ChangeSettings"></a>

您可以啟用或停用記錄、變更存放日誌的 Amazon S3 儲存貯體，以及透過使用 [CloudFront 主控台](https://console.aws.amazon.com/cloudfront/v4/home)或 CloudFront API 來變更日誌檔案的前綴。記錄設定的變更在 12 小時內生效。

如需詳細資訊，請參閱下列主題：
+ 若要使用 CloudFront 主控台更新分佈，請參閱[更新分佈](HowToUpdateDistribution.md)。
+ 若要使用 CloudFront API 更新分佈，請參閱 *Amazon CloudFront API 參考*中的 [UpdateDistribution](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_UpdateDistribution.html)。

## 傳送日誌至 Amazon S3
<a name="standard-logs-in-s3"></a>

當您將日誌傳送至 Amazon S3 時，您的日誌會以下列格式顯示。

### 檔案名稱格式
<a name="AccessLogsFileNaming"></a>

CloudFront 儲存在 Amazon S3 儲存貯體的每個日誌檔案名稱使用以下檔案名稱格式：

`<optional prefix>/<distribution ID>.YYYY-MM-DD-HH.unique-ID.gz`

使用國際標準時間 (UTC) 的日期與時間。

例如，如果您使用 `example-prefix` 做為前綴，且您的分佈 ID 為 `EMLARXS9EXAMPLE`，則檔案名稱看起來像這樣：

`example-prefix/EMLARXS9EXAMPLE.2019-11-14-20.RT4KCN4SGK9.gz`

啟用分佈的記錄時，您可以指定檔案名稱的選用字首，以便您可以繼續追蹤哪個日誌檔案與那個分佈關聯。如果您包含日誌檔案前綴的值，且您的前綴不是以正斜線 (`/`) 結尾，則 CloudFront 會自動附加一個正斜線。如果您的前綴確實以正斜線結束，CloudFront 就不會加以新增。

在檔案名稱尾端的 `.gz` 表示 CloudFront 使用 gzip 已壓縮了日誌檔案。

## 標準日誌檔案格式
<a name="LogFileFormat"></a>

日誌檔案中的每個項目會提供有關單一檢視器請求的詳細資訊。日誌檔案具有下列特性：
+ 使用 [W3C 延伸日誌檔案格式](https://www.w3.org/TR/WD-logfile.html)。
+ 包含索引標籤分隔值。
+ 包含不一定按時間順序排列的記錄。
+ 包含兩個標頭行：一個有檔案格式版本，而另一個則列出包含在每個記錄的 W3C 欄位。
+ 在欄位值中包含空格和特定其他字元的 URL 編碼對等字元。

  以下字元會使用 URL 編碼的對等字元：
  + ASCII 字元碼 0 到 32 (含)
  + ASCII 字元碼 127 及更高
  + 下表中的所有字元

  URL 編碼標準定義於 [RFC 1738](https://tools.ietf.org/html/rfc1738.html)。


|  URL 編碼的值  |  字元  | 
| --- | --- | 
|  %3C  |  <  | 
|  %3E  |  >  | 
|  %22  |  "  | 
|  %23  |  \$1  | 
|  %25  |  %  | 
|  %7B  |  \$1  | 
|  %7D  |  \$1  | 
|  %7C  |  \$1  | 
|  %5C  |  \$1  | 
|  %5E  |  ^  | 
|  %7E  |  \$1  | 
|  %5B  |  [  | 
|  %5D  |  ]  | 
|  %60  |  `  | 
|  %27  |  '  | 
|  %20  |  空格  | 

## 刪除日誌檔案
<a name="DeletingLogFiles"></a>

CloudFront 不會自動從您的 Amazon S3 儲存貯體中刪除日誌檔案。如需有關從 Amazon S3 儲存貯體刪除日誌檔案的資訊，請參閱《Amazon Simple Storage Service 主控台使用者指南》**中的[刪除物件](https://docs.aws.amazon.com/AmazonS3/latest/userguide/DeletingObjects.html)。

## 定價
<a name="AccessLogsCharges"></a>

標準記錄是 CloudFront 的一項選用功能。CloudFront 不收取啟用標準日誌的費用。不過，在 Amazon S3 上的存放和存取檔案會依一般 Amazon S3 費用計費。您可隨時將其刪除。

如需 Amazon S3 定價的詳細資訊，請參閱 [Amazon S3 定價](https://aws.amazon.com/s3/pricing/)。

如需 CloudFront 定價的詳細資訊，請參閱 [CloudFront 定價](https://aws.amazon.com/cloudfront/pricing/)。

# 標準記錄參考
<a name="standard-logs-reference"></a>

下列各節適用於標準記錄 (v2) 和標準記錄 (舊版)。

**Topics**
+ [

## 日誌檔案交付的時間點
](#access-logs-timing)
+ [

## 請求 URL 或標頭超過大小上限時，記錄請求的方式
](#access-logs-request-URL-size)
+ [

## 日誌檔案欄位
](#BasicDistributionFileFormat)
+ [

## 分析日誌
](#access-logs-analyzing)

## 日誌檔案交付的時間點
<a name="access-logs-timing"></a>

CloudFront 交付分佈的日誌在一小時內就高達數次。一般而言，日誌檔案包含有關請求的資訊，CloudFront 在特定期間內收到此請求。CloudFront 通常會將該時段的日誌檔案，在出現於日誌中事件的一小時內交付到您的目的地。不過，請注意，一個時段的部分或全部日誌檔案項目有時會延遲高達 24 小時。當日誌項目延遲時，CloudFront 將它們儲存在日誌檔案中，其中檔案名稱包含*發生*請求的日期和時段，而不是交付檔案時的日期和時間。

建立日誌檔案時，CloudFront 為分佈從所有節點整合資訊，此節點在日誌檔案涵蓋的時段間收到物件的請求。

根據 CloudFront 為與分佈關聯的物件收到多少請求，CloudFront 可以儲存一個時段內的多個檔案。

您啟用記錄後，CloudFront 會開始可靠地交付存取日誌大約四個小時。該時段之前，您可能會收到幾個存取日誌。

**注意**  
如果在時段內沒有使用者請求您的物件，您便不會收到該時段的任何日誌檔案。

## 請求 URL 或標頭超過大小上限時，記錄請求的方式
<a name="access-logs-request-URL-size"></a>

若所有請求標頭 (包含 cookie) 的總大小超過 20 KB，或是 URL 超過 8192 個位元組，CloudFront 便無法完整剖析請求且無法記錄請求。因為沒有記錄請求，您將無法在日誌檔案中看到傳回的 HTTP 錯誤狀態代碼。

如果要求主體超過大小上限，則會記錄請求，包含 HTTP 錯誤狀態代碼。

## 日誌檔案欄位
<a name="BasicDistributionFileFormat"></a>

分佈的日誌檔案包含 33 個欄位。下列清單依序包含每個欄位名稱，以及該欄位中資訊的描述。

1. **`date`**

   事件發生的日期格式 `YYYY-MM-DD`。例如 `2019-06-30`。使用國際標準時間 (UTC) 的日期與時間。對於 WebSocket 連線，這是連線關閉的日期。

1. **`time`**

   CloudFront 伺服器完成回應至請求的時間 (以 UTC 表示)，例如 `01:42:39`。對於 WebSocket 連線，這是連線關閉的時間。

1. **`x-edge-location`**

   提供請求的節點。一個三字母代碼和任意指派的數字會辨識每個節點，例如 DFW3。三字母代碼通常會對應節點所在地理位置附近機場的國際航空運輸協會 (IATA) 機場代碼。(未來這些縮寫可能會改變。)

1. **`sc-bytes`**

   回應請求時伺服器提供給檢視器的總位元數，包括標頭。對於 WebSocket 與 gRPC 連線，這是透過連線從伺服器傳送到用戶端的位元組總數。

1. **`c-ip`**

   檢視器的 IP 位址，該檢視器已執行請求，例如 `192.0.2.183` 或 `2001:0db8:85a3::8a2e:0370:7334`。如果檢視器使用 HTTP 代理或負載平衡器傳送請求，此欄位值則為代理或負載平衡器的 IP 位址。另請參閱 `x-forwarded-for` 欄位。

1. **`cs-method`**

   從檢視器接收到的 HTTP 請求方法。

1. **`cs(Host)`**

   CloudFront 分佈的網域名稱(例如，d111111abcdef8.cloudfront.net)。

1. **`cs-uri-stem`**

   識別路徑和物件的請求 URL 部分 (例如 `/images/cat.jpg`)。URL 中包含問號 (?)，而且查詢字串不包含在日誌中。

1. **`sc-status`**

   包含以下其中一個值：
   + 伺服器回應的 HTTP 狀態碼 (例如 `200`)。
   + `000`，這表示檢視器在伺服器回應請求之前已關閉連線。如果檢視器在伺服器開始傳送回應之後關閉連線，此欄位會包含伺服器開始傳送回應的 HTTP 狀態碼。

1. **`cs(Referer)`**

   請求中的 `Referer` 標頭值。發出請求的網域名稱。常見推薦網站，包含搜尋引擎、其他直接連結到您物件的網站，以及您自己的網站。

1. **`cs(User-Agent)`**

   請求中的 `User-Agent` 標頭值。識別請求來源的 `User-Agent` 標頭，例如提交請求的裝置與瀏覽器類型，或如果請求來自搜尋引擎，則識別是哪一個搜尋引擎。

1. **`cs-uri-query`**

   請求 URI 的查詢字串部分 (如果有)。

   當 URL 不包含查詢字串時，此欄位的值是一個連字號 (-)。如需詳細資訊，請參閱[根據查詢字串參數快取內容](QueryStringParameters.md)。

1. **`cs(Cookie)`**

   請求中的 `Cookie` 標頭，包括名稱值對和關聯的屬性。

   如果您啟用 Cookie 記錄，無論您選擇將哪一個 Cookie 轉送到原始伺服器，CloudFront 都會在所有請求中記錄 Cookie。當請求不包含 Cookie 標頭時，此欄位的值是一個連字號 (-)。如需 Cookie 的詳細資訊，請參閱[根據 Cookie 快取內容](Cookies.md)。

1. **`x-edge-result-type`**

   在最後一個位元組離開伺服器之後，伺服器如何將回應分類。在某些情況下，結果類型會在伺服器準備好傳送回應的時間，以及完成傳送回應的時間中發生改變。另請參閱 `x-edge-response-result-type` 欄位。

   例如，在 HTTP 串流中，假設伺服器在快取中找到串流的區段。在這種情況下，這個欄位的值通常是 `Hit`。不過，如果在伺服器已交付整個區段之前，檢視器關閉檢視器，則最終結果類型 (此欄位的值) 為 `Error`。

   WebSocket 與 gRPC 連線會有的此欄位值為 `Miss`，因為內容無法快取，且會透過代理直接傳至原始伺服器。

   可能的值包括：
   + `Hit` – 該伺服器從快取提供物件給檢視器。
   + `RefreshHit` – 該伺服器在邊緣快取中找到物件，但物件已過期，因此伺服器會聯絡原始伺服器，以確認快取具有該物件的最新版本。
   + `Miss` – 快取中的物件無法滿足請求，因此會將請求轉送至原始伺服器，並將結果傳回至檢視器。
   + `LimitExceeded` – 請求遭拒，因為超過 CloudFront 配額 (先前稱為限制)。
   + `CapacityExceeded` – 伺服器會傳回 HTTP 503 狀態碼，因為在請求提供物件時沒有足夠的容量。
   + `Error` – 通常，這表示請求導致客戶端錯誤 (`sc-status` 欄位的值在 `4xx` 範圍內) 或伺服器錯誤 (`sc-status` 欄位的值在 `5xx` 範圍內)。如果 `sc-status` 欄位的值是 `200`，或者如果該欄位的值是 `Error` 並且 `x-edge-response-result-type` 欄位的值不是 `Error`，這代表 HTTP 請求成功，但用戶端在接收所有位元組之前中斷連線。
   + `Redirect` – 伺服器會根據分佈設定，將檢視器從 HTTP 重新引導至 HTTPS。
   + `LambdaExecutionError` – 與分佈相關聯的 Lambda@Edge 函數由於格式不正確的關聯、函數逾時、 AWS 相依性問題或其他一般可用性問題而未完成。

1. **`x-edge-request-id`**

   可獨特識別請求的不透明字串。CloudFront 也會在 `x-amz-cf-id` 回應標頭中傳送此字串。

1. **`x-host-header`**

   包含在該請求 `Host` 標頭的檢視器值。如果您在物件 URL 中使用 CloudFront 網域名稱 (例如 d111111abcdef8.cloudfront.net)，則此欄位會包含該網域名稱。如果您使用物件 URL 中的備用網域名稱 (CNAME)，例如 www.example.com，則此欄位包含此備用網域名稱。

   如果您使用備用網域名稱，請參閱網域名稱的欄位 7 中的 `cs(Host)`，此網域名稱與分佈相關聯。

1. **`cs-protocol`**

   檢視器請求的通訊協定 (`http`、`https`、`grpcs`、`ws` 或 `wss`)。

1. **`cs-bytes`**

   檢視器包含在請求中的資料位元組總數，包括標頭。對於 WebSocket 與 gRPC 連線，這是連線時從用戶端傳送到伺服器的位元組總數。

1. **`time-taken`**

   從伺服器收到檢視者請求，到伺服器將回應的最後一個位元組寫入輸出佇列的秒數 (以千分之一秒為單位，例如 0.082)，這會在伺服器上測量。從檢視器來看，取得完整回應的總時間會比該值來的長，因為網路延遲和 TCP 緩衝。

1. **`x-forwarded-for`**

   如果檢視器使用 HTTP 代理或負載平衡器傳送請求，`c-ip` 欄位值則為代理或負載平衡器的 IP 位址。在這種情況下，此欄位是產生請求的檢視器 IP 位址。此欄位可以包含多個逗號分隔的 IP 位址。每個 IP 位址可以是 IPv4 位址 (例如 `192.0.2.183`) 或 IPv6 位址 (例如 `2001:0db8:85a3::8a2e:0370:7334`)。

   如果檢視器無法使用 HTTP 代理或負載平衡器，則此欄位值是一個連字號 (-)。

1. **`ssl-protocol`**

   當請求使用 HTTPS 時，此欄位會包含檢視器和伺服器為傳輸請求和回應而交涉的 SSL/TLS 通訊協定。如需可能值的清單，請參閱 [檢視器和 CloudFront 之間支援的通訊協定和密碼](secure-connections-supported-viewer-protocols-ciphers.md) 中支援的 SSL/TLS 通訊協定。

   當欄位 17 中的 `cs-protocol` 為 `http` 時，此欄位的值是一個連字號 (-)。

1. **`ssl-cipher`**

   當請求使用 HTTPS 時，此欄位會包含檢視器和伺服器為加密請求和回應而交涉的 SSL/TLS 密碼。如需可能值的清單，請參閱 [檢視器和 CloudFront 之間支援的通訊協定和密碼](secure-connections-supported-viewer-protocols-ciphers.md) 中支援的 SSL/TLS 密碼。

   當欄位 17 中的 `cs-protocol` 為 `http` 時，此欄位的值是一個連字號 (-)。

1. **`x-edge-response-result-type`**

   在將回應傳回至檢視器之前，伺服器如何將回應分類。另請參閱 `x-edge-result-type` 欄位。可能的值包括：
   + `Hit` – 該伺服器從快取提供物件給檢視器。
   + `RefreshHit` – 該伺服器在邊緣快取中找到物件，但物件已過期，因此伺服器會聯絡原始伺服器，以確認快取具有該物件的最新版本。
   + `Miss` – 快取中的物件無法滿足請求，因此伺服器會將請求轉送至原始伺服器，並將結果傳回至檢視器。
   + `LimitExceeded` – 請求遭拒，因為超過 CloudFront 配額 (先前稱為限制)。
   + `CapacityExceeded` – 該伺服器會傳回 503 錯誤，因為在請求提供物件時沒有足夠的容量。
   + `Error` – 通常，這表示請求導致客戶端錯誤 (`sc-status` 欄位的值在 `4xx` 範圍內) 或伺服器錯誤 (`sc-status` 欄位的值在 `5xx` 範圍內)。

     如果 `x-edge-result-type` 欄位的值為 `Error` 且此欄位的值不為 `Error`，則用戶端在完成下載之前中斷連線。
   + `Redirect` – 伺服器會根據分佈設定，將檢視器從 HTTP 重新引導至 HTTPS。
   + `LambdaExecutionError` – 與分佈相關聯的 Lambda@Edge 函數由於格式不正確的關聯、函數逾時、 AWS 相依性問題或其他一般可用性問題而未完成。

1. **`cs-protocol-version`**

   檢視器在請求中指定的 HTTP 版本。可能的值包括 `HTTP/0.9`、`HTTP/1.0`、`HTTP/1.1`、`HTTP/2.0` 及 `HTTP/3.0`。

1. **`fle-status`**

   為分佈配置[欄位層級加密](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/field-level-encryption.html)時，此欄位包含可指出要求主體是否已成功處理的代碼。當伺服器成功處理要求主體時，會加密指定欄位中的值，並將請求轉送至原始伺服器，此欄位的值為 `Processed`。在這種情況下，`x-edge-result-type` 的值仍然可以表示用戶端或伺服器端的錯誤。

   此欄位可能的值包含：
   + `ForwardedByContentType` – 伺服器無須剖析與加密便將請求轉送到原始伺服器，因為沒有配置任何內容類型。
   + `ForwardedByQueryArgs` – 伺服器無需剖析或加密便將請求轉送到原始伺服器，因為請求包含查詢參數，此參數不在欄位層級加密的組態裡。
   + `ForwardedDueToNoProfile` – 伺服器無需剖析或加密便將請求轉送到原始伺服器，因為在欄位層級加密的組態裡沒有指定設定檔。
   + `MalformedContentTypeClientError` – 因為 `Content-Type` 標頭的值不是有效格式，因此伺服器拒絕請求並將 HTTP 400 狀態碼傳回至檢視器。
   + `MalformedInputClientError` – 伺服器拒絕請求且將 HTTP 400 狀態碼傳回給檢視器，因為要求主體不是有效格式。
   + `MalformedQueryArgsClientError` – 伺服器拒絕請求且將 HTTP 400 狀態碼傳回給檢視器，因為查詢參數空白或不是有效格式。
   + `RejectedByContentType` – 伺服器拒絕請求且將 HTTP 400 狀態碼傳回給檢視器，因為在欄位層級加密的組態中沒有指定內容類型。
   + `RejectedByQueryArgs` – 伺服器拒絕請求且將 HTTP 400 狀態碼傳回給檢視器，因為在欄位層級加密的組態中沒有指定查詢參數。
   + `ServerError` – 原始伺服器傳回錯誤。

   如果請求超過欄位層級的加密配額 (先前稱為限制)，此欄位會包含下列其中一個錯誤碼，而伺服器會將 HTTP 狀態碼傳回給檢視器 400。如需目前欄位層級加密的配額的詳細資訊，請參閱[欄位層級加密的配額](cloudfront-limits.md#limits-field-level-encryption)。
   + `FieldLengthLimitClientError` – 配置為加密的欄位已超過允許的長度上限。
   + `FieldNumberLimitClientError` – 將分佈配置為加密的請求所包含的欄位數超過了允許的欄位數。
   + `RequestLengthLimitClientError` – 當配置了欄位層級加密時，要求主體的長度超過允許的長度上限。

   如果不為分佈設定欄位層級加密，則此欄位的值是一個連字號 (-)。

1. **`fle-encrypted-fields`**

   邊緣伺服器加密並轉送至原始伺服器的[欄位層級加密](field-level-encryption.md)欄位數目。CloudFront 伺服器會在加密資料時將已處理的請求串流至原始伺服器，因此即使 `fle-status` 的值為錯誤，此欄位也可以具有值。

   如果不為分佈設定欄位層級加密，則此欄位的值是一個連字號 (-)。

1. **`c-port`**

   來自檢視器之請求的連接埠號碼。

1. **`time-to-first-byte`**

   接收請求與寫入回應的第一個位元組之間的秒數 (如伺服器上所測量)。

1. **`x-edge-detailed-result-type`**

   此欄位包含與 `x-edge-result-type` 欄位相同的值，但下列情況除外：
   + 該物件已從 [Origin Shield](origin-shield.md) 層提供給檢視器時，此欄位包含 `OriginShieldHit`。
   + 當物件不在 CloudFront 快取中，且回應是由[原始伺服器請求 Lambda @Edge 函數](lambda-at-the-edge.md)產生時，此欄位會包含 `MissGeneratedResponse`。
   + 當 `x-edge-result-type` 欄位的值為 `Error` 時，此欄位會包含下列其中一個值，以及有關該錯誤的詳細資訊：
     + `AbortedOrigin` – 該伺服器發生原始伺服器問題。
     + `ClientCommError` – 檢視器的回應因伺服器與檢視器之間發生通訊問題而遭到中斷。
     + `ClientGeoBlocked` – 分佈設定為拒絕來自檢視者地理位置的請求。
     + `ClientHungUpRequest` – 檢視器在傳送請求的同時提早停止。
     + `Error` – 發生錯誤，其錯誤類型不符合任何其他類別。當此伺服器提供來自快取的錯誤回應時，可能會發生此錯誤類型。
     + `InvalidRequest` – 該伺服器收到來自檢視器的無效請求。
     + `InvalidRequestBlocked` – 對請求的資源的存取遭到封鎖。
     + `InvalidRequestCertificate` – 分佈不符合建立 HTTPS 連線的 SSL/TLS 憑證。
     + `InvalidRequestHeader` — 請求包含無效的標頭。
     + `InvalidRequestMethod` – 分佈未設定為處理使用的 HTTP 請求方法。當分佈只支援可快取的請求時會發生此情況。
     + `OriginCommError` – 在連接到原始伺服器或從原始伺服器讀取資料時，請求逾時。
     + `OriginConnectError` – 該伺服器無法連線到原始伺服器。
     + `OriginContentRangeLengthError` – 原始伺服器回應中的 `Content-Length` 標頭不符合 `Content-Range` 標頭中的長度。
     + `OriginDnsError` – 該伺服器無法解析原始伺服器的網域名稱。
     + `OriginError` – 原始伺服器傳回不正確的回應。
     + `OriginHeaderTooBigError` – 原始伺服器傳回的標頭對邊緣伺服器太大，因而無法處理。
     + `OriginInvalidResponseError` – 原始伺服器傳回無效的回應。
     + `OriginReadError` – 該伺服器無法從原始伺服器讀取。
     + `OriginWriteError` – 該伺服器無法寫入原始伺服器。
     + `OriginZeroSizeObjectError` – 從原始伺服器傳送大小為零的物件，因而導致錯誤。
     + `SlowReaderOriginError` – 檢視器讀取訊息過慢，因而導致原始伺服器錯誤。

1. **`sc-content-type`**

   回應的 HTTP `Content-Type` 標頭值。

1. **`sc-content-len`**

   回應的 HTTP `Content-Length` 標頭值。

1. **`sc-range-start`**

   當回應包含 HTTP `Content-Range` 標頭時，此欄位包含範圍起始值。

1. **`sc-range-end`**

   當回應包含 HTTP `Content-Range` 標頭時，此欄位包含範圍結束值。

1. **`distribution-tenant-id`**

   分佈租用戶的 ID。

1. **`connection-id`**

   TLS 連線的唯一識別符。

   您必須為分發啟用 mTLS，才能取得此欄位的資訊。如需詳細資訊，請參閱[使用 CloudFront 進行相互 TLS 身分驗證 （檢視器 mTLS)原始伺服器與 CloudFront 的交互 TLS](mtls-authentication.md)。

   

以下是分佈的範例日誌檔案。

```
#Version: 1.0
#Fields: date time x-edge-location sc-bytes c-ip cs-method cs(Host) cs-uri-stem sc-status cs(Referer) cs(User-Agent) cs-uri-query cs(Cookie) x-edge-result-type x-edge-request-id x-host-header cs-protocol cs-bytes time-taken x-forwarded-for ssl-protocol ssl-cipher x-edge-response-result-type cs-protocol-version fle-status fle-encrypted-fields c-port time-to-first-byte x-edge-detailed-result-type sc-content-type sc-content-len sc-range-start sc-range-end
2019-12-04	21:02:31	LAX1	392	192.0.2.100	GET	d111111abcdef8.cloudfront.net	/index.html	200	-	Mozilla/5.0%20(Windows%20NT%2010.0;%20Win64;%20x64)%20AppleWebKit/537.36%20(KHTML,%20like%20Gecko)%20Chrome/78.0.3904.108%20Safari/537.36	-	-	Hit	SOX4xwn4XV6Q4rgb7XiVGOHms_BGlTAC4KyHmureZmBNrjGdRLiNIQ==	d111111abcdef8.cloudfront.net	https	23	0.001	-	TLSv1.2	ECDHE-RSA-AES128-GCM-SHA256	Hit	HTTP/2.0	-	-	11040	0.001	Hit	text/html	78	-	-
2019-12-04	21:02:31	LAX1	392	192.0.2.100	GET	d111111abcdef8.cloudfront.net	/index.html	200	-	Mozilla/5.0%20(Windows%20NT%2010.0;%20Win64;%20x64)%20AppleWebKit/537.36%20(KHTML,%20like%20Gecko)%20Chrome/78.0.3904.108%20Safari/537.36	-	-	Hit	k6WGMNkEzR5BEM_SaF47gjtX9zBDO2m349OY2an0QPEaUum1ZOLrow==	d111111abcdef8.cloudfront.net	https	23	0.000	-	TLSv1.2	ECDHE-RSA-AES128-GCM-SHA256	Hit	HTTP/2.0	-	-	11040	0.000	Hit	text/html	78	-	-
2019-12-04	21:02:31	LAX1	392	192.0.2.100	GET	d111111abcdef8.cloudfront.net	/index.html	200	-	Mozilla/5.0%20(Windows%20NT%2010.0;%20Win64;%20x64)%20AppleWebKit/537.36%20(KHTML,%20like%20Gecko)%20Chrome/78.0.3904.108%20Safari/537.36	-	-	Hit	f37nTMVvnKvV2ZSvEsivup_c2kZ7VXzYdjC-GUQZ5qNs-89BlWazbw==	d111111abcdef8.cloudfront.net	https	23	0.001	-	TLSv1.2	ECDHE-RSA-AES128-GCM-SHA256	Hit	HTTP/2.0	-	-	11040	0.001	Hit	text/html	78	-	-	
2019-12-13	22:36:27	SEA19-C1	900	192.0.2.200	GET	d111111abcdef8.cloudfront.net	/favicon.ico	502	http://www.example.com/	Mozilla/5.0%20(Windows%20NT%2010.0;%20Win64;%20x64)%20AppleWebKit/537.36%20(KHTML,%20like%20Gecko)%20Chrome/78.0.3904.108%20Safari/537.36	-	-	Error	1pkpNfBQ39sYMnjjUQjmH2w1wdJnbHYTbag21o_3OfcQgPzdL2RSSQ==	www.example.com	http	675	0.102	-	-	-	Error	HTTP/1.1	-	-	25260	0.102	OriginDnsError	text/html	507	-	-
2019-12-13	22:36:26	SEA19-C1	900	192.0.2.200	GET	d111111abcdef8.cloudfront.net	/	502	-	Mozilla/5.0%20(Windows%20NT%2010.0;%20Win64;%20x64)%20AppleWebKit/537.36%20(KHTML,%20like%20Gecko)%20Chrome/78.0.3904.108%20Safari/537.36	-	-	Error	3AqrZGCnF_g0-5KOvfA7c9XLcf4YGvMFSeFdIetR1N_2y8jSis8Zxg==	www.example.com	http	735	0.107	-	-	-	Error	HTTP/1.1	-	-	3802	0.107	OriginDnsError	text/html	507	-	-
2019-12-13	22:37:02	SEA19-C2	900	192.0.2.200	GET	d111111abcdef8.cloudfront.net	/	502	-	curl/7.55.1	-	-	Error	kBkDzGnceVtWHqSCqBUqtA_cEs2T3tFUBbnBNkB9El_uVRhHgcZfcw==	www.example.com	http	387	0.103	-	-	-	Error	HTTP/1.1	-	-	12644	0.103	OriginDnsError	text/html	507	-	-
```

## 分析日誌
<a name="access-logs-analyzing"></a>

由於您每個小時可以收到多個存取日誌，我們建議您將指定期間內收到的所有日誌檔案整合成一個檔案。然後，您可以更準確且完整地分析該期間的資料。

使用 [Amazon Athena](https://aws.amazon.com/athena/) 是分析存取日誌的其中一種方法。Athena 是一種互動式查詢服務，可協助您分析 AWS 服務的資料，包括 CloudFront。若要進一步了解，請參閱 *Amazon Athena 使用者指南*中的[查詢 Amazon CloudFront 日誌](https://docs.aws.amazon.com/athena/latest/ug/cloudfront-logs.html)。

此外，以下 AWS 部落格文章討論一些分析存取日誌的方法。
+ [Amazon CloudFront 請求記錄](https://aws.amazon.com/blogs/aws/amazon-cloudfront-request-logging/) (適用於透過 HTTP 傳送的內容)
+ [增強型 CloudFront Logs，現在提供查詢字串](https://aws.amazon.com/blogs/aws/enhanced-cloudfront-logs-now-with-query-strings/)