

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

# AWS Amazon S3 中的傳輸閘道流程日誌記錄
<a name="flow-logs-s3"></a>

現在流量日誌可將流量日誌資料發佈至 Amazon S3。

當發佈至 Amazon S3 時，流量日誌資料將發佈至您指定的現有 Amazon S3 儲存貯體。所有受監控傳輸閘道的流量日誌記錄，都將發佈至存放在該儲存貯體的一系列日誌檔案物件。

當您將流程日誌發佈至 Amazon S3 時，資料擷取和封存費用會由 Amazon CloudWatch 套用至已結束的日誌。如需已發佈日誌的 CloudWatch 定價詳細資訊，請開啟 [Amazon CloudWatch 定價](https://aws.amazon.com/cloudwatch/pricing/)，選擇**日誌**，然後尋找**已發佈的日誌**。

若要建立用於流量日誌的 Amazon S3 儲存貯體，請參閱《Amazon S3 使用者指南**》中的[建立儲存貯體](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html)。

如需有關多個帳戶記錄的詳細資訊，請參閱 AWS 解決方案程式庫中的[中央記錄](https://aws.amazon.com/solutions/implementations/centralized-logging/)。

如需 CloudWatch Logs 的詳細資訊，請參閱*《Amazon CloudWatch Logs 使用者指南》*中的[傳送至 Simple Storage Service (Amazon S3) 的日誌](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AWS-logs-and-resource-policy.html#AWS-logs-infrastructure-S3)。

**Topics**
+ [流量日誌檔](#flow-logs-s3-path)
+ [將流量日誌發佈至 Amazon S3 的 IAM 委託人的 IAM 政策](#flow-logs-s3-iam)
+ [流量日誌的 Amazon S3 儲存貯體許可](#flow-logs-s3-permissions)
+ [搭配 SSE-KMS 使用的必要金鑰政策](#flow-logs-s3-cmk-policy)
+ [Amazon S3 日誌檔案許可](#flow-logs-file-permissions)
+ [建立來源帳戶角色](flowlog-s3-create-source.md)
+ [建立發佈至 Amazon S3 的流程日誌](flowlog-s3-create.md)
+ [檢視流程日誌記錄](view-flow-log-records-s3.md)
+ [Amazon S3 中的已處理 AWS 傳輸閘道流量日誌記錄](#process-records-s3)

## 流量日誌檔
<a name="flow-logs-s3-path"></a>

VPC 流量日誌功能會收集流量日誌記錄，將這些記錄整合為日誌檔案，然後每隔 5 分鐘將日誌檔案發佈至 Amazon S3 儲存貯體。每個日誌檔皆包含過去五分鐘所記錄之 IP 流量的流量日誌記錄。

日誌檔的大小上限為 75 MB。如果日誌檔案在 5 分鐘內達到檔案大小上限，則流量日誌會停止新增流量日誌記錄。然後，將流量日誌發佈至 Amazon S3 儲存貯體，並建立新的日誌檔案。

在 Amazon S3 中，流量日誌檔案的 **Last modified** (上次修改) 欄位指出檔案上傳至 Amazon S3 儲存貯體的日期和時間。這個時間晚於檔案名稱中的時間戳記，並且會因檔案上傳至 Amazon S3 儲存貯體所花費的時間而有所不同。

**日誌檔案格式**

可為日誌檔案指定下列其中一種格式。每個檔案都會壓縮到單一 Gzip 檔案中。
+ **Text** – 純文字。此為預設格式。
+ **Parquet** – Apache Parquet 是一種單欄資料格式。與純文字的資料查詢相比，Parquet 格式的資料查詢速度快 10 到 100 倍。採用 Gzip 壓縮的 Parquet 格式的資料佔用的儲存空間比使用 Gzip 壓縮的純文字要少 20％。

**日誌檔案選項**

您可以選擇指定下列項目。
+ **Hive 兼容的 S3 前綴** – 啟用 Hive 相容的前置詞，而不是將分割區匯入 Hive 相容的工具。在執行查詢之前，請使用 **MSCK REPAIR TABLE** 命令。
+ **每小時分割** – 如果您有大量的日誌，而且通常針對特定小時進行查詢，則透過每小時分割日誌，可獲得更快的結果並節省查詢成本。

**日誌檔案 S3 儲存貯體結構**  
使用基於流量日誌的 ID、區域、建立日期以及目標選項的資料夾架構，將日誌檔案儲存至指定的 Amazon S3 儲存貯體。

根據預設，檔案會傳遞至下列位置。

```
{{bucket-and-optional-prefix}}/AWSLogs/{{account_id}}/vpcflowlogs/{{region}}/{{year}}/{{month}}/{{day}}/
```

如果您啟用 Hive 相容的 S3 字首，檔案會傳遞至下列位置。

```
{{bucket-and-optional-prefix}}/AWSLogs/aws-account-id={{account_id}}/service=vpcflowlogs/aws-region={{region}}/year={{year}}/month={{month}}/day={{day}}/
```

如果您啟用每小時分割，檔案會傳遞到下列位置。

```
{{bucket-and-optional-prefix}}/AWSLogs/{{account_id}}/vpcflowlogs/{{region}}/{{year}}/{{month}}/{{day}}/{{hour}}/
```

如果您啟用 Hive 相容的分割，並且每小時分割流量日誌，檔案會傳遞至下列位置。

```
{{bucket-and-optional-prefix}}/AWSLogs/aws-account-id={{account_id}}/service=vpcflowlogs/aws-region={{region}}/year={{year}}/month={{month}}/day={{day}}/hour={{hour}}/
```

**日誌檔案名稱**  
日誌檔案的檔案名稱以流量日誌 ID、區域以及建立日期和時間為基礎。檔案名稱使用下列格式。

```
{{aws_account_id}}_vpcflowlogs_{{region}}_{{flow_log_id}}_{{YYYYMMDD}}T{{HHmm}}Z_{{hash}}.log.gz
```

以下是 AWS 帳戶 123456789012 針對 us-east-1 區域中的資源，在 June 20, 2018 的 16:20 UTC 建立的流量日誌的日誌檔案範例。檔案包含結束時間介於 16:20:00 和 16:24:59 的流量日誌記錄。

```
123456789012_vpcflowlogs_us-east-1_fl-1234abcd_20180620T1620Z_fe123456.log.gz
```

## 將流量日誌發佈至 Amazon S3 的 IAM 委託人的 IAM 政策
<a name="flow-logs-s3-iam"></a>

建立流量日誌的 IAM 主體必須具有以下所需的許可，才能將流量日誌發佈至目標 Amazon S3 儲存貯體。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "logs:CreateLogDelivery",
        "logs:DeleteLogDelivery"
        ],
      "Resource": "*"
    }
  ]
}
```

------

## 流量日誌的 Amazon S3 儲存貯體許可
<a name="flow-logs-s3-permissions"></a>

根據預設，Amazon S3 儲存貯體及其所包含的物件皆為私有。只有儲存貯體擁有者可存取儲存貯體及存放於其中的物件。但是，儲存貯體擁有者可藉由編寫存取政策，將存取權授予其他資源和使用者。

如果建立流量日誌的使用者擁有儲存貯體且具有該儲存貯體的 `PutBucketPolicy` 和 `GetBucketPolicy` 許可，我們就會自動將以下政策連接至該儲存貯體。這個新的自動產生的政策會附加到原始政策。

否則，儲存貯體擁有者必須將此政策新增至儲存貯體、指定流量日誌建立者的 AWS 帳戶 ID，否則流量日誌會建立失敗。如需詳細資訊，請參閱《*Amazon Simple Storage Service 使用者指南*》中的[儲存貯體政策](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucket-policies.html)。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AWSLogDeliveryWrite",
            "Effect": "Allow",
            "Principal": {
                "Service": "delivery.logs.amazonaws.com"
            },
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::bucket_name/*",
            "Condition": {
                "StringEquals": {
                    "s3:x-amz-acl": "bucket-owner-full-control",
                    "aws:SourceAccount": "123456789012"
                },
                "ArnLike": {
                    "aws:SourceArn": "arn:aws:logs:us-east-1:123456789012:*"
                }
            }
        },
        {
            "Sid": "AWSLogDeliveryCheck",
            "Effect": "Allow",
            "Principal": {
                "Service": "delivery.logs.amazonaws.com"
            },
            "Action": [
                "s3:GetBucketAcl"
            ],
            "Resource": "arn:aws:s3:::bucket_name",
            "Condition": {
                "StringEquals": {
                    "aws:SourceAccount": "123456789012"
                },
                "ArnLike": {
                    "aws:SourceArn": "arn:aws:logs:us-east-1:123456789012:*"
                }
            }
        }
    ]
}
```

------

您為 {{my-s3-arn}} 指定的 ARN 取決於您是否使用與 Hive 相容的 S3 字首。
+ 預設字首

  ```
  arn:aws:s3:::{{bucket_name}}/{{optional_folder}}/AWSLogs/{{account_id}}/*
  ```
+ 與 Hive 相容的 S3 字首

  ```
  arn:aws:s3:::{{bucket_name}}/{{optional_folder}}/AWSLogs/aws-account-id={{account_id}}/*
  ```

最佳實務是，建議您將這些許可授予日誌交付服務委託人，而不是個別 AWS 帳戶 ARNs。這也是使用 `aws:SourceAccount` 和 `aws:SourceArn` 條件金鑰來保護自己免受[混淆代理人問題](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html)的困擾之最佳實務。來源帳戶是流量日誌的擁有者，且來源 ARN 是日誌服務的萬用字元 (\*) ARN。

## 搭配 SSE-KMS 使用的必要金鑰政策
<a name="flow-logs-s3-cmk-policy"></a>

透過啟用採用 Amazon S3 受管金鑰 (SSE-S3) 的伺服器端加密或採用 KMS Keys (SSE-KMS) 的伺服器端加密，您可以保護 Amazon S3 儲存貯體中的資料。如需詳細資訊，請參閱《*Amazon S3 使用者指南*》中的[使用伺服器端加密保護資料](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html)。

透過 SSE-KMS，您可以使用 AWS 受管金鑰或客戶受管金鑰。透過 AWS 受管金鑰，您無法使用跨帳戶交付。流量日誌是從日誌傳遞帳戶傳遞，因此您必須授予跨帳戶傳遞的存取權。若要授予 S3 儲存貯體的跨帳戶存取權，請使用由客戶管理之金鑰並在啟用儲存貯體加密時指定客戶受管金鑰的 Amazon Resource Name (ARN)。如需詳細資訊，請參閱《*Amazon S3 使用者指南*》中的[使用 AWS KMS指定伺服器端加密](https://docs.aws.amazon.com/AmazonS3/latest/userguide/specifying-kms-encryption.html)。

當您將 SSE-KMS 與由客戶管理之金鑰搭配使用時，您必須將以下內容新增至金鑰的金鑰政策 (而不是 S3 儲存貯體的儲存貯體政策)，以便 VPC 流量日誌可以寫入您的 S3 儲存貯體。

**注意**  
使用 S3 儲存貯體金鑰可讓您透過使用儲存貯體層級金鑰，減少 AWS KMS 對 Encrypt、GenerateDataKey 和 Decrypt 操作的請求，以節省 AWS Key Management Service (AWS KMS) 請求成本。根據設計，利用此儲存貯體層級金鑰的後續請求不會導致 AWS KMS API 請求或根據 AWS KMS 金鑰政策驗證存取權。

```
{
    "Sid": "Allow Transit Gateway Flow Logs to use the key",
    "Effect": "Allow",
    "Principal": {
        "Service": [
            "delivery.logs.amazonaws.com"
        ]
    },
   "Action": [
       "kms:Encrypt",
       "kms:Decrypt",
       "kms:ReEncrypt*",
       "kms:GenerateDataKey*",
       "kms:DescribeKey"
    ],
    "Resource": "*"
}
```

## Amazon S3 日誌檔案許可
<a name="flow-logs-file-permissions"></a>

除了必要的儲存貯體原則之外，Amazon S3 使用存取控制清單 (ACL) 來管理流量日誌所建立之日誌檔案的存取。根據預設，儲存貯體擁有者擁有各個日誌檔案的 `FULL_CONTROL` 許可。日誌交付擁有者與儲存貯體擁有者不同時，就沒有任何許可。日誌交付帳戶擁有 `READ` 與 `WRITE` 許可。如需詳細資訊，請參閱《*Amazon Simple Storage Service 使用者指南*》中的[存取控制清單 (ACL) 概觀](https://docs.aws.amazon.com/AmazonS3/latest/userguide/acl-overview.html)。

## Amazon S3 中的已處理 AWS 傳輸閘道流量日誌記錄
<a name="process-records-s3"></a>

日誌檔案已壓縮。如果您使用 Amazon S3 主控台開啟日誌檔案，這些檔案將會解壓縮，並顯示流量日誌記錄。如果您下載這些檔案，則必須解壓縮才能檢視流量日誌記錄。