

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

# 使用伺服器存取記錄記錄要求
<a name="ServerLogs"></a>

伺服器存取記錄日誌，應儲存貯體要求，提出的詳細記錄。伺服器存取日誌對許多應用程式來說，都是個很有用的資料。舉例來說，存取記錄資訊在安全與存取稽核中相當實用。這些資訊也可幫助您了解自己的客戶群，並掌握 Amazon S3 帳單相關資料。

**注意**  
若區域是在 2019 年 3 月 20 日後才推出，則伺服器存取日誌不會記錄與其錯誤區域重新導向錯誤相關的資訊。當對物件或儲存貯體的請求在該儲存貯體存在的區域以外發出時，就會發生錯誤的區域重新導向錯誤。

## 如何啟用日誌交付？
<a name="server-access-logging-overview"></a>

若要啟用日誌傳遞，請執行下列基本步驟。如需詳細資訊，請參閱[啟用 Amazon S3 伺服器存取記錄日誌](enable-server-access-logging.md)。

1. **提供目的地儲存貯體的名稱** (也稱為「目標儲存貯體」**)。此儲存貯體是您希望 Amazon S3 將存取日誌儲存為物件的位置。來源和目的地儲存貯體必須位於同一 AWS 區域 ，並且由相同帳戶擁有。目的地儲存貯體不得具有 S3 物件鎖定預設保留期組態。目的地儲存貯體也必須未啟用「請求者付款」。

   您可將日誌交付給所有您擁有的儲存貯體，在同一的區域當做來源儲存貯體，包括來源儲存貯體本身。但為了更簡易進行記錄管理，建議您將存取記錄儲存在不同的儲存貯體中。

   當來源儲存貯體和目的地儲存貯體位於同一儲存貯體時，會為寫入儲存貯體的日誌建立額外的日誌，以建立日誌無限迴圈。不建議這麼做，因為它可能會導致您的儲存體帳單稍微增加。此外，額外的日誌可能會增加您的搜尋困難。

   若您選擇將存取日誌儲存在來源儲存貯體中，建議您為所有的日誌物件索引鍵指定目的地字首 (也稱為*目標字首*)。當您指定字首時，所有日誌物件名稱都會以通用字串開頭，如此就能更容易識別日誌物件。

1. **(選用) 為所有 Amazon S3 日誌物件索引鍵指派目的地字首。**目的地字首 (也稱為*目標字首*) 讓您更容易尋找日誌物件。例如，若指定的字首值為 `logs/`，則 Amazon S3 建立的每個日誌物件都會以 `logs/` 字首作為其索引鍵的開頭。

   ```
   logs/2013-11-01-21-32-16-E568B2907131C0C0
   ```

   如果您指定字首值 `logs`，則日誌物件會顯示如下：

   ```
   logs2013-11-01-21-32-16-E568B2907131C0C0
   ```

   當多個儲存貯體記錄到相同目的地儲存貯體時，[字首](https://docs.aws.amazon.com/general/latest/gr/glos-chap.html#keyprefix)也可用來區分來源儲存貯體。

   此字首也可協助您刪除日誌。例如，您可為 Amazon S3 設定生命週期組態規則，刪除具有特定字首的物件。如需詳細資訊，請參閱[刪除 Amazon S3 日誌檔案](deleting-log-files-lifecycle.md)。

1. **(選用) 設定可讓其他人存取所產生日誌的許可**。**依預設，儲存貯體擁有者一律僅擁用日誌物件的完整存取權。如果目的地儲存貯體使用 S3 物件擁有權的儲存貯體擁有者強制執行設定來停用存取控制清單 (ACL)，則您無法在使用 ACL 的目的地授權 (也稱為*目標授權*) 中授予許可。但是，您可以更新目的地儲存貯體的儲存貯體政策，以將存取權授予其他使用者。如需詳細資訊，請參閱[Amazon S3 的身分和存取管理](security-iam.md)及[日誌交付許可](enable-server-access-logging.md#grant-log-delivery-permissions-general)。

1. **(選用) 設定日誌檔的日誌物件索引鍵格式。**有兩種日誌物件索引鍵格式可供您選擇 (也稱為*目標物件索引鍵格式*)：
   + **非日期型分割**：這是原始日誌物件索引鍵格式。如果您選擇此格式，日誌檔索引鍵格式會顯示如下：

     ```
     [DestinationPrefix][YYYY]-[MM]-[DD]-[hh]-[mm]-[ss]-[UniqueString]
     ```

     例如，如果您指定 `logs/` 作為字首，則日誌物件的命名如下：

     ```
     logs/2013-11-01-21-32-16-E568B2907131C0C0
     ```
   + **日期行分割**：如果您選擇日期型分割，則可以選擇日誌檔的事件時間或傳遞時間作為日誌格式中使用的日期來源。此格式較容易查詢日誌。

     如果您選擇日期型分割，日誌檔索引鍵格式會顯示如下：

     ```
     [DestinationPrefix][SourceAccountId]/[SourceRegion]/[SourceBucket]/[YYYY]/[MM]/[DD]/[YYYY]-[MM]-[DD]-[hh]-[mm]-[ss]-[UniqueString]
     ```

     例如，如果您指定 `logs/` 作為目標字首，則日誌物件的命名如下：

     ```
     logs/123456789012/us-west-2/{{amzn-s3-demo-source-bucket}}/2023/03/01/2023-03-01-21-32-16-E568B2907131C0C0
     ```

     對於傳遞時間傳遞，日誌檔名稱中的時間會與日誌檔的傳遞時間對應。

     對於事件時間傳遞，年、月和日會對應事件發生的日期，且索引鍵中的時、分和秒會設定為 `00`。這些日誌檔中傳遞的日誌僅適用特定的一天。

   

   如果您要透過 AWS Command Line Interface (AWS CLI)、 AWS SDKs或 Amazon S3 REST API 設定日誌，請使用 `TargetObjectKeyFormat` 指定日誌物件金鑰格式。若要指定非日期型分割，請使用 `SimplePrefix`。若要指定日期型分割，請使用 `PartitionedPrefix`。如果您使用 `PartitionedPrefix`，請使用 `PartitionDateSource` 指定 `EventTime` 或 `DeliveryTime`。

   若是 `SimplePrefix`，日誌檔索引鍵格式顯示如下：

   ```
   [TargetPrefix][YYYY]-[MM]-[DD]-[hh]-[mm]-[ss]-[UniqueString]
   ```

   若是具有事件時間或傳遞時間的 `PartitionedPrefix`，日誌檔索引鍵格式顯示如下：

   ```
   [TargetPrefix][SourceAccountId]/[SourceRegion]/[SourceBucket]/[YYYY]/[MM]/[DD]/[YYYY]-[MM]-[DD]-[hh]-[mm]-[ss]-[UniqueString]
   ```

## 日誌物件金鑰格式
<a name="server-log-keyname-format"></a>

Amazon S3 會針對其上傳到目的地儲存貯體的日誌物件，使用下列物件索引鍵格式：
+ **非日期型分割**：這是原始日誌物件索引鍵格式。如果您選擇此格式，日誌檔索引鍵格式會顯示如下：

  ```
  [DestinationPrefix][YYYY]-[MM]-[DD]-[hh]-[mm]-[ss]-[UniqueString]
  ```
+ **日期行分割**：如果您選擇日期型分割，則可以選擇日誌檔的事件時間或傳遞時間作為日誌格式中使用的日期來源。此格式較容易查詢日誌。

  如果您選擇日期型分割，日誌檔索引鍵格式會顯示如下：

  ```
  [DestinationPrefix][SourceAccountId]/[SourceRegion]/[SourceBucket]/[YYYY]/[MM]/[DD]/[YYYY]-[MM]-[DD]-[hh]-[mm]-[ss]-[UniqueString]
  ```

在日誌物件索引鍵中，`YYYY`、`MM`、`DD`、`hh`、`mm` 與 `ss` 分別是年、月、日、時、分與秒的數字。這些日期和時間都使用國際標準時間 (UTC)。

在特定時間交付的日誌檔，會包含該時間之前的任何時間點所寫入之記錄。但無法得知某特定時間間隔的所有日誌記錄是否皆已交付。

金鑰的 `UniqueString` 元件的存在原因，就是為了要避免覆寫檔案。它沒有任何意義，所以日誌處理軟體應會忽略它。

## 交付日誌的方式？
<a name="how-logs-delivered"></a>

Amazon S3 會定期收集存取日誌記錄，將這些記錄整合為日誌檔，然後將日誌檔上傳至目的地儲存貯體作為日誌物件。若您對多個識別同一目的地儲存貯體的來源儲存貯體啟用了記錄功能，則此目的地儲存貯體就會有這些來源儲存貯體的存取日誌。但每個日誌物件都會回報特定來源儲存貯體的存取日誌記錄。

Amazon S3 使用特殊日誌交付帳戶來寫入伺服器存取日誌。這些寫入受一般的存取控制限制之約束。建議您更新目的地儲存貯體的儲存貯體政策，以授予日誌記錄服務主體的存取權 (`logging.s3.amazonaws.com`) 以進行存取日誌交付。您也可以透過儲存貯體存取控制清單 (ACL)，將存取日誌交付的存取權授予 S3 日誌交付群組。不過，不建議使用儲存貯體 ACL 授予 S3 日誌交付群組的存取權。

當啟用伺服器存取記錄並透過目的地儲存貯體政策授予存取日誌交付的存取權時，您必須更新政策以允許 `s3:PutObject` 存取記錄服務主體。如果您使用 Amazon S3 主控台來啟用伺服器存取記錄，則主控台會自動更新目的地儲存貯體政策，將這些許可授予記錄服務主體。如需有關授予伺服器存取日誌交付許可的詳細資訊，請參閱 [日誌交付許可](enable-server-access-logging.md#grant-log-delivery-permissions-general)。

**注意**  
在下列情況下，S3 不支援將 CloudTrail 日誌或伺服器存取日誌傳送給 VPC 端點請求的請求者或儲存貯體擁有者：當 VPC 端點政策拒絕請求時，或者如果請求在評估 VPC 政策之前失敗。

**S3 物件擁有權的儲存貯體擁有者強制執行設定**  
如果目的地儲存貯體使用「物件擁有權」的儲存貯體擁有者強制設定，則 ACL 會停用且不再影響許可。您必須更新目的地儲存貯體上的儲存貯體政策，以授予記錄服務主體的存取權。如需「物件擁有權」的詳細資訊，請參閱 [授予 S3 日誌交付群組的存取權以進行伺服器存取日誌記錄](object-ownership-migrating-acls-prerequisites.md#object-ownership-server-access-logs)。

## 伺服器日誌交付最佳作法
<a name="LogDeliveryBestEffort"></a>

伺服器存取日誌記錄會依最佳作法交付。大多數儲存貯體的要求，為日誌記錄結果適合組態，交付日誌記錄。大多數的日誌記錄會於記錄後的數小時內交付，但也可以常交付。

並不保證伺服器記錄的完成程度與時間先後順序。特定要求的日誌記錄，可能會在實際處理要求之後很久才交付，或者*有可能完全不會交付*。您甚至可能會看到日誌記錄的複寫。伺服器日誌的目的在於讓您能了解儲存貯體流量的真實狀態。雖然日誌記錄極少遺失或重複，但請注意，伺服器記錄並不代表所有請求的完整記錄。

由於伺服器記錄的最佳作法特性，您的用量報告可能會包含一或多個未出現在已交付伺服器日誌中的存取請求。您可以在 AWS 帳單與成本管理 主控台的**成本和用量報告**下，找到這些用量報告。

## 儲存貯體記錄狀態變更會在一段時間後生效
<a name="BucketLoggingStatusChanges"></a>

記錄儲存貯體狀態的變更，要一段時間後才會實際影響到日誌檔交付。例如，若已啟用儲存貯體記錄，則在接下來的一小時內提出之要求，可能有些會記錄下來，有些則不會。假熱您將記錄的目的地儲存貯體從儲存貯體 A 變更為儲存貯體 B，則接下來的一小時內，有些日誌可能會繼續交付到儲存貯體 A，而有些則可能會交付到新的目的地儲存貯體 B。在任何情況之下，新的設定最後都會生效，您無須採取任何動作。

如需記錄和記錄檔案的詳細資訊，請參閱下列章節：

**Topics**
+ [如何啟用日誌交付？](#server-access-logging-overview)
+ [日誌物件金鑰格式](#server-log-keyname-format)
+ [交付日誌的方式？](#how-logs-delivered)
+ [伺服器日誌交付最佳作法](#LogDeliveryBestEffort)
+ [儲存貯體記錄狀態變更會在一段時間後生效](#BucketLoggingStatusChanges)
+ [啟用 Amazon S3 伺服器存取記錄日誌](enable-server-access-logging.md)
+ [Amazon S3 伺服器存取日誌格式](LogFormat.md)
+ [刪除 Amazon S3 日誌檔案](deleting-log-files-lifecycle.md)
+ [使用 Amazon S3 伺服器存取日誌來識別請求](using-s3-access-logs-to-identify-requests.md)
+ [針對伺服器存取記錄進行疑難排解](troubleshooting-server-access-logging.md)