

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

# AWS Global Accelerator 中的流程日誌
<a name="monitoring-global-accelerator.flow-logs"></a>

流程日誌可讓您在 AWS Global Accelerator 中，擷取傳入及傳出網路界面的 IP 地址流量相關資訊。流程日誌資料會發佈至 Amazon S3，您可以在建立流程日誌後擷取和檢視您的資料。

流程日誌可協助您處理幾項任務。例如，您可以針對特定流量沒有觸達端點的原因進行故障診斷，進而協助診斷限制性過高的安全群組規則。您也可以使用流程日誌做為安全工具，監控觸達端點的流量。

流程日誌記錄代表您流程日誌中的網路流。每個記錄都會為特定擷取視窗，擷取特定 5 元組的網路流，5 元組為五個不同值的組合，指定 IP 流程的來源、目標和通訊協定。擷取期間是一段時間，在此期間流程日誌服務會在發佈流程日誌記錄前彙整資料。擷取期間大約是 10 秒，但最多可能需要 1 分鐘。

使用流程日誌時，CloudWatch 日誌需支付費用，即使日誌直接發佈至 Amazon S3 也是如此。如需詳細資訊，請參閱「」*將記錄傳送至 S3*at[Amazon CloudWatch 定價](https://aws.amazon.com/cloudwatch/pricing/)。

**Topics**
+ [將流程日誌發佈到 Amazon S3](#monitoring-global-accelerator.flow-logs-publishing-S3)
+ [交付日誌檔案的時間](#monitoring-global-accelerator.flow-logs.timing)
+ [流程日誌記錄語法](#monitoring-global-accelerator.flow-logs.records.syntax)

## 將流程日誌發佈到 Amazon S3
<a name="monitoring-global-accelerator.flow-logs-publishing-S3"></a>

AWS Global Accelerator 的流程日誌會發佈至 Amazon S3 到您指定的現有 S3 儲存貯體。流程日誌記錄會發佈至儲存貯體中的一系列日誌檔案物件。

若要建立搭配流程日誌使用的 Amazon S3 儲存貯體，請參閱[建立儲存貯體](https://docs.aws.amazon.com/AmazonS3/latest/gsg/CreatingABucket.html)中的*Amazon Simple Storage Service 入門指南*。

### 流程日誌檔案
<a name="monitoring-global-accelerator.flow-logs-publishing-S3.files"></a>

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

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

日誌檔案將儲存至指定的 Amazon S3 儲存貯體，並使用由流程日誌的 ID、區域及其建立之日期而決定的資料夾結構。儲存貯體資料夾結構使用以下格式：

```
s3-bucket_name/s3-bucket-prefix/AWSLogs/aws_account_id/globalaccelerator/region/yyyy/mm/dd/
```

同樣的，日誌檔案名稱也是由流程日誌的 ID、區域，以及建立日誌檔案的日期和時間決定。檔案名稱使用下列格式：

```
aws_account_id_globalaccelerator_accelerator_id_flow_log_id_timestamp_hash.log.gz
```

請注意下列有關記錄檔的資料夾和檔案名稱結構：
+ 時間戳記使用 `YYYYMMDDTHHmmZ` 格式。
+ 如果您為 S3 儲存貯體前置詞指定斜線 (/)，則記錄檔儲存貯體資料夾結構將包含雙斜線 (//)，如下所示：

  ```
  s3-bucket_name//AWSLogs/aws_account_id
  ```

以下範例顯示由 AWS 帳戶建立之流程日誌日誌檔案的資料夾結構與檔案名稱`123456789012`的加速器，識別碼為`1234abcd-abcd-1234-abcd-1234abcdefgh`，於二零一八年十一月二十三日上午零時零五分：

```
my-s3-bucket/prefix1/AWSLogs/123456789012/globalaccelerator/us-west-2/2018/11/23/123456789012_globalaccelerator_1234abcd-abcd-1234-abcd-1234abcdefgh_20181123T0005Z_1fb1234.log.gz
```

單一流程記錄檔包含具有多個 5 元組記錄的交錯項目；也就是說`client_ip`、`client_port`、`accelerator_ip`、`accelerator_port`、`protocol`。若要查看加速器的所有流程記錄檔，請尋找`accelerator_id`和您的`account_id`。

### 用於將流程日誌發佈至 Amazon S3 的 IAM 角色
<a name="monitoring-global-accelerator.flow-logs-publishing-S3.roles"></a>

IAM 主體 (例如 IAM 使用者) 必須有足夠的許可才能將流程日誌發佈至 Amazon S3 儲存貯體。IAM 政策必須包含下列許可：

```
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "DeliverLogs",
            "Effect": "Allow",
            "Action": [
                "logs:CreateLogDelivery",
                "logs:DeleteLogDelivery"
            ],
            "Resource": "*"
        },
        {
            "Sid": "AllowGlobalAcceleratorService",
            "Effect": "Allow",
            "Action": [
                "globalaccelerator:*"
            ],
            "Resource": "*"
        },
        {
            "Sid": "s3Perms",
            "Effect": "Allow",
            "Action": [
                "s3:GetBucketPolicy",
                "s3:PutBucketPolicy"
            ],
            "Resource": "*"
        }
    ]
}
```

### 流程日誌的 Amazon S3 儲存貯體許可
<a name="monitoring-global-accelerator.flow-logs-publishing-S3.bucket-permissions"></a>

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

如果建立流程日誌的使用者擁有儲存貯體，則服務會自動將下列政策連接至儲存貯體，為流程日誌提供許可，以便將日誌發佈至儲存貯體：

```
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "AWSLogDeliveryWrite",
            "Effect": "Allow",
            "Principal": {"Service": "delivery.logs.amazonaws.com"},
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::bucket_name/optional_folder/AWSLogs/account_id/*",
            "Condition": {"StringEquals": {"s3:x-amz-acl": "bucket-owner-full-control"}}
        },
        {
            "Sid": "AWSLogDeliveryAclCheck",
            "Effect": "Allow",
            "Principal": {"Service": "delivery.logs.amazonaws.com"},
            "Action": "s3:GetBucketAcl",
            "Resource": "arn:aws:s3:::bucket_name"
        }
    ]
}
```

如果建立流程日誌的使用者並未擁有儲存貯體，或者沒有儲存貯體的 `GetBucketPolicy` 與 `PutBucketPolicy` 許可，流程日誌的建立將會失敗。在此情況下，儲存貯體擁有者必須手動將上述政策手動新增至儲存貯體，然後指定流程日誌建立者的 AWS 帳戶 ID。如需詳細資訊，請參閱「」[如何新增 S3 儲存貯體政策？](https://docs.aws.amazon.com/AmazonS3/latest/gsg/add-bucket-policy.html)中的*Amazon Simple Storage Service 入門指南*。如果儲存貯體從多個帳戶接收流程日誌，請將 `Resource` 元素項目新增至每個帳戶的 `AWSLogDeliveryWrite` 政策陳述式。

例如，以下儲存貯體政策允許 AWS 帳戶 123123123123123123 和 456456456456456456 將流程日誌發佈至名為`flow-logs`在名為的儲存貯體中`log-bucket`：

```
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "AWSLogDeliveryWrite",
            "Effect": "Allow",
            "Principal": {"Service": "delivery.logs.amazonaws.com"},
            "Action": "s3:PutObject",
            "Resource": [
            	"arn:aws:s3:::log-bucket/flow-logs/AWSLogs/123123123123/*",
            	"arn:aws:s3:::log-bucket/flow-logs/AWSLogs/456456456456/*"
            	],
            "Condition": {"StringEquals": {"s3:x-amz-acl": "bucket-owner-full-control"}}
        },
        {
            "Sid": "AWSLogDeliveryAclCheck",
            "Effect": "Allow",
            "Principal": {"Service": "delivery.logs.amazonaws.com"},
            "Action": "s3:GetBucketAcl",
            "Resource": "arn:aws:s3:::log-bucket"
        }
    ]
}
```

**注意**  
建議您將`AWSLogDeliveryAclCheck`和`AWSLogDeliveryWrite`許可新增至日誌交付服務主體，而非個別 AWS 帳戶 ARN。

### 使用 SSE-KMS 儲存貯體必要的 CMK 金鑰政策
<a name="monitoring-global-accelerator.flow-logs-publishing-S3.encrypt-kms"></a>

若您透過客戶託管的客戶主金鑰 (CMK) 來使用受 AWS KMS 受管金鑰 (SSE-KMS) 啟用 Amazon S3 儲存貯體伺服器端加密，您必須新增下列內容到 CMK 的金鑰原則，讓流程日誌可將日誌檔案寫入儲存貯體：

```
{
    "Sid": "Allow AWS Global Accelerator Flow Logs to use the key",
    "Effect": "Allow",
    "Principal": {
        "Service": [
            "delivery.logs.amazonaws.com"
        ]
    },
    "Action": "kms:GenerateDataKey*",
    "Resource": "*"
}
```

### Amazon S3 日誌檔案許可
<a name="monitoring-global-accelerator.flow-logs-publishing-S3.log-file-permissions"></a>

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

### 啟用將流程日誌發佈至 Amazon S3
<a name="monitoring-global-accelerator.flow-logs-publishing-S3.enable"></a>

若要在 AWS Global Accelerator 中啟用流程日誌，請遵循此程序中的步驟。

### 在 AWS Global Accelerator 中啟用流量日誌


1. 為您的 AWS 帳戶中的流程日誌建立 Amazon S3 儲存貯體。

1. 為啟用流程日誌的 AWS 使用者新增所需的 IAM 政策。如需詳細資訊，請參閱 [用於將流程日誌發佈至 Amazon S3 的 IAM 角色](#monitoring-global-accelerator.flow-logs-publishing-S3.roles)。

1. 使用您要用於日誌檔的 Amazon S3 儲存貯體名稱和前綴執行下列 AWS CLI 命令：

   ```
   aws globalaccelerator update-accelerator-attributes 
          --accelerator-arn arn:aws:globalaccelerator::012345678901:accelerator/1234abcd-abcd-1234-abcd-1234abcdefgh 
          --region us-west-2
          --flow-logs-enabled
          --flow-logs-s3-bucket s3-bucket-name 
          --flow-logs-s3-prefix s3-bucket-prefix
   ```

### Amazon S3 中的處理流程日誌記錄
<a name="monitoring-global-accelerator.flow-logs-publishing-S3.processing"></a>

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

## 交付日誌檔案的時間
<a name="monitoring-global-accelerator.flow-logs.timing"></a>

AWS Global Accelerator 為您設定的加速器交付日誌檔案一小時多達數次。一般而言，日誌檔案包含有關請求的資訊，加速器在特定期間內收到此請求。通常，全球加速器會將該時段的日誌檔案，在出現於日誌中事件的一小時內交付到 Amazon S3 儲存貯體。一個時段的部分或全部日誌檔案項目有時會延遲高達 24 小時。當日誌項目延遲時，Global Accelerator 將它們儲存在日誌檔案中，其中檔案名稱包含發生請求的日期和時段，而不是交付檔案時的日期和時間。

建立日誌檔案時，Global Accelerator 為加速器從所有節點整合資訊，此節點在日誌檔案涵蓋的時段間收到請求。

您啟用記錄後，Global Accelerator 會開始可靠地交付日誌檔案大約四個小時。此時段之前，您可能會收到幾個日誌檔案。

**注意**  
如果在時段內沒有使用者連接至您的加速器，您便不會收到該時段的任何日誌檔案。

## 流程日誌記錄語法
<a name="monitoring-global-accelerator.flow-logs.records.syntax"></a>

流程日誌記錄是以空格分隔的字串，並具有以下格式：

 `<version> <aws_account_id> <accelerator_id> <client_ip> <client_port> <accelerator_ip> <accelerator_port> <endpoint_ip> <endpoint_port> <protocol> <ip_address_type> <packets> <bytes> <start_time> <end_time> <action> <log-status> <globalaccelerator_source_ip> <globalaccelerator_source_port> <endpoint_region> <globalaccelerator_region> <direction> <vpc_id>` 

1.0 版格式不包含 VPC 識別碼`vpc_id`。2.0 版格式，其中包含`vpc_id`) 會在全域加速器將流量傳送至具有用戶端 IP 位址保留的端點時產生。

下表說明流程日誌記錄的欄位。


****  

| 欄位 | 描述 | 
| --- | --- | 
| `version` | 流程會記錄版本。 | 
| `aws_account_id` | 流程日誌的 AWS 帳戶 ID。 | 
| `accelerator_id` | 要記錄流量的加速器 ID。 | 
| `client_ip` | 來源 IPv4 地址。 | 
| `client_port` | 來源連接埠。 | 
| `accelerator_ip` | 加速器的 IP 地址。 | 
| `accelerator_port` | 加速器的港口 | 
| `endpoint_ip` | 流量的目標 IP 地址。 | 
| `endpoint_port` | 流量的目標連接埠。 | 
| `protocol` | 流量的 IANA 通訊協定號碼。如需詳細資訊，請參閱[指派的網際網路通訊協定號碼](https://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml)。 | 
| `ip_address_type` | IPv4。 | 
| `packets` | 在擷取期間傳輸的封包數。 | 
| `bytes` | 在擷取期間傳輸的位元組數。 | 
| `start_time` | 擷取期間的開始時間 (單位為 Unix 秒)。 | 
| `end_time` | 擷取期間的結束時間 (單位為 Unix 秒)。 | 
| `action` | 與流量關聯的動作： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/global-accelerator/latest/dg/monitoring-global-accelerator.flow-logs.html)  | 
| `log-status` | 流程日誌的記錄狀態： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/global-accelerator/latest/dg/monitoring-global-accelerator.flow-logs.html)  | 
| `globalaccelerator_source_ip` | 全域加速器網路介面所使用的 IP 位址。 | 
| `globalaccelerator_source_port` | 全域加速器網路介面所使用的連接埠。 | 
| `endpoint_region` | 端點所在的 AWS 區域。 | 
| `globalaccelerator_region` | 提供請求的節點 (存在點)。每個節點都有一個三字母的代碼，以及一個任意指派的號碼，例如 DFW3。三字母代碼通常對應於節點附近機場的國際航空運輸協會機場代碼。(未來這些縮寫可能會改變。) | 
| `direction` | 流量的方向。表示進入全域加速器網路的流量 (`INGRESS`）或返回客戶端（`EGRESS`。 | 
| `vpc_id` | VPC 識別符。當全域加速器將流量傳送至具有用戶端 IP 位址保留的端點時，隨附於 2.0 版流量記錄中。 | 

如果欄位不適用於特定記錄，則記錄會針對該項目顯示一個 '-' 符號。