

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

# 監控 VPC
<a name="monitoring"></a>

您可以使用下列工具，來監控 Virtual Private Cloud (VPC) 中的流量或網路存取。

**VPC 流量日誌**  
您可以使用 VPC 流量日誌，來擷取 VPC 中傳入和傳出網路介面的流量詳細資訊。

**Amazon CloudWatch 網路監視器**  
您可以使用網路監視器來了解網際網路問題如何影響 上託管的應用程式與最終使用者之間的效能 AWS 和可用性。您也可以近乎即時地探索如何透過切換到使用其他 服務，或透過不同的方式將流量重新路由到工作負載，來改善應用程式的預計延遲 AWS 區域。如需詳細資訊，請參閱[使用 Amazon CloudWatch 網路監視器](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-InternetMonitor.html)。

**Amazon VPC IP 地址管理員 (IPAM)**  
您可以使用 IPAM 來規劃、追蹤和監控您工作負載的 IP 地址。如需詳細資訊，請參閱 [IP 地址管理員](https://docs.aws.amazon.com/vpc/latest/ipam/)。

**流量鏡射**  
您可以使用此功能從 Amazon EC2 執行個體的網路介面複製網路流量，並將其傳送至頻外安全和監控設備，以進行深度封包檢查。您可以偵測網路和安全異常狀況，取得營運洞察，實作合規與安全控制，並排解問題。如需詳細資訊，請參閱[流量鏡射](https://docs.aws.amazon.com/vpc/latest/mirroring/)。

**Reachability Analyzer**  
您可以使用此工具來分析 VPC 中兩項資源之間的網路連線能力並進行偵錯。指定來源和目的地資源後，Reachability Analyzer 會在可連線虛擬路徑時，在這些路徑之間產生逐個躍點的詳細資訊，並在無法連線時識別導致阻礙的元件。如需詳細資訊，請參閱 [Reachability Analyzer](https://docs.aws.amazon.com/vpc/latest/reachability/)。

**Network Access Analyzer**  
您可以使用 Network Access Analyzer 了解對資源的網路存取。這有助於您識別網路安全狀態的改善，並證明您的網路符合特定的合規要求。如需詳細資訊，請參閱 [Network Access Analyzer](https://docs.aws.amazon.com/vpc/latest/network-access-analyzer/)。

**CloudTrail 日誌**  
AWS CloudTrail 會記錄 Amazon VPC 的 API 呼叫，例如：  
+ 執行了哪些 API 呼叫 (例如建立或修改 VPC 資源等動作)
+ 呼叫的來源 IP 位址
+ 呼叫發起者身分
+ 呼叫的執行時間
系統會為 `CreateVpc`、`DeleteVpc`、`CreateDefaultVpc` 動作分別建立單獨的日誌。這些日誌也包含隨 VPC 自動建立並關聯的預設資源 (例如任何預設網際網路閘道或預設安全群組)。  
如需詳細資訊，請參閱《Amazon EC2 使用者指南》**中的[使用 AWS CloudTrail記錄 Amazon EC2 API 呼叫](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/monitor-with-cloudtrail.html)。

# 使用 VPC 流量日誌來記錄 IP 流量
<a name="flow-logs"></a>

VPC 流量日誌是一項可讓您擷取傳入及傳出您 VPC 中網路介面之 IP 流量相關資訊的功能。流量日誌資料可以發佈至下列位置：Amazon CloudWatch Logs、Amazon S3 或 Amazon Data Firehose。將網路流量日誌傳送至 CloudWatch Logs 或 S3 等目的地的設定傳輸路徑與許可稱為*訂閱*。建立流程日誌之後，您可以在您設定的日誌群組、儲存貯體或交付串流中擷取和檢視流程日誌記錄。

流量日誌可協助您處理多項任務，例如：
+ 診斷過於嚴苛的安全群組規則
+ 監控進入執行個體的流量
+ 判斷網路介面往來流量的方向

流量日誌資料是在網路流量路徑之外收集，因此不會影響網路輸送量或延遲。您可以建立或刪除流量日誌，而不會影響網路效能。

**注意**  
本節僅討論 VPC 的流量日誌。如需版本 6 中引入之傳輸閘道的流量日誌相關資訊，請參閱*《Amazon VPC 傳輸閘道使用者指南》*中的[使用傳輸閘道流量日誌記錄網路流量](https://docs.aws.amazon.com/vpc/latest/tgw/tgw-flow-logs.html)。

**Topics**
+ [流量日誌基礎知識](flow-logs-basics.md)
+ [流量日誌記錄](flow-log-records.md)
+ [流量日誌記錄範例](flow-logs-records-examples.md)
+ [流量日誌限制](flow-logs-limitations.md)
+ [定價](#flow-logs-pricing)
+ [使用流量日誌工作](working-with-flow-logs.md)
+ [將流量日誌發佈至 CloudWatch Logs](flow-logs-cwl.md)
+ [將流量日誌發佈到 Amazon S3](flow-logs-s3.md)
+ [將流量日誌發布至 Amazon Data Firehose](flow-logs-firehose.md)
+ [使用 Amazon Athena 查詢流量日誌](flow-logs-athena.md)
+ [疑難排解 VPC 流量日誌](flow-logs-troubleshooting.md)

# 流量日誌基礎知識
<a name="flow-logs-basics"></a>

您可以建立 VPC、子網或網路介面的流量日誌。如果建立子網或 VPC 的流量日誌，則會監控該子網或 VPC 中的每個網路介面。

監控之網路介面的流量日誌將記錄為*流量日誌記錄*，即由描述流量之欄位組成的日誌事件。如需更多詳細資訊，請參閱 [流量日誌記錄](flow-log-records.md)。

若要建立流量日誌，您要指定：
+ 要建立流量日誌的資源
+ 要擷取的流量類型 (接受的流量、拒絕的流量，或全部流量)
+ 流量日誌資料的發佈目標

在下列範例中，您將為私有子網中的其中一個 EC2 執行個體建立流量日誌，以擷取網路介面的接受流量，並將流量日誌記錄發佈至 Amazon S3 儲存貯體。

![\[執行個體的流量日誌\]](http://docs.aws.amazon.com/zh_tw/vpc/latest/userguide/images/flow-logs-diagram-s3.png)


在以下範例中，流量日誌擷取子網的所有流量，並將流量日誌記錄發佈至 Amazon CloudWatch Logs。流量日誌擷取子網中所有網路介面的流量。

![\[子網的流量日誌\]](http://docs.aws.amazon.com/zh_tw/vpc/latest/userguide/images/flow-logs-diagram-cw.png)


在您建立流量日誌之後，其可能需要數分鐘的時間，才會開始收集資料並將資料發佈至選擇的目的地。流量日誌不會擷取您網路介面的即時日誌串流。如需詳細資訊，請參閱[2. 建立流量日誌](working-with-flow-logs.md#create-flow-log)。

如果您在建立子網或 VPC 的流量日誌後於子網中啟動執行個體，只要該網路介面一出現網路流量，我們就會為這個新的網路介面建立日誌串流 (適用於 CloudWatch Logs) 或日誌檔案物件 (適用於 Amazon S3)。

您可以為其他 AWS 服務建立的網路介面建立流量日誌，例如：
+ Elastic Load Balancing
+ Amazon RDS
+ Amazon ElastiCache
+ Amazon Redshift
+ Amazon WorkSpaces
+ NAT 閘道
+ 傳輸閘道

無論網路介面的類型為何，您都必須使用 Amazon EC2 主控台或 Amazon EC2 API 建立網路介面的流量日誌。

您可以將標籤套用至流量日誌。每個標籤皆包含由您定義的一個索引鍵與一個選用值。標籤可協助您整理流量日誌，例如依據用途或擁有者整理日誌。

如果您不再需要流量日誌，即可將其刪除。刪除流程日誌會停用資源的流程日誌服務，因此將不會再建立和發佈新的流程日誌記錄。刪除流程日誌並不會刪除任何現有的流程日誌資料。刪除流程日誌之後，您可以在完成操作後直接從目的地刪除流程日誌資料。如需詳細資訊，請參閱[4. 刪除流量日誌](working-with-flow-logs.md#delete-flow-log)。

# 流量日誌記錄
<a name="flow-log-records"></a>

流量日誌記錄代表您 VPC 中的網路流。根據預設，每筆記錄會擷取發生在*彙總時間間隔* (也稱為*擷取時段*) 內的網際網路通訊協定 (IP) 流量 (特徵為每個網路介面一個 5 元組)。

每筆記錄都是包含欄位的字串，其中欄位會由空格分隔。記錄包含 IP 流程不同元件的值，例如來源、目標和通訊協定。

建立流量日誌時，您可以使用流量日誌記錄的預設格式，或指定自訂格式。

**Topics**
+ [彙總時間間隔](#flow-logs-aggregration-interval)
+ [預設格式](#flow-logs-default)
+ [自訂格式](#flow-logs-custom)
+ [可用的欄位](#flow-logs-fields)

## 彙總時間間隔
<a name="flow-logs-aggregration-interval"></a>

彙總時間間隔是指擷取特定流程並彙總至流量日誌記錄的一段期間。根據預設，最大彙總時間間隔為 10 分鐘。建立流量日誌時，您可以選擇指定最大彙總時間間隔為 1 分鐘。最大彙總時間間隔 1 分鐘的流量日誌所產生的流量日誌記錄量會高於最大彙總時間間隔 10 分鐘的流量日誌。

當網路介面連線至 [Nitro 型執行個體](https://docs.aws.amazon.com/ec2/latest/instancetypes/ec2-nitro-instances.html)時，無論指定的最大彙總時間間隔為何，彙總時間間隔一律為 1 分鐘或更短。

在彙總時間間隔內擷取資料之後，需要額外的時間來處理和發佈資料至 CloudWatch Logs 或 Amazon S3。流量日誌服務通常會在大約 5 分鐘內將日誌傳遞給 CloudWatch Logs，並在大約 10 分鐘內將日誌傳遞給 Amazon S3。不過，日誌傳遞是最大努力的基礎，而您的日誌可能會延遲超過一般傳遞時間。

## 預設格式
<a name="flow-logs-default"></a>

使用預設格式時，流量日誌記錄會依照[可用欄位](#flow-logs-fields)表格中顯示的順序，包括版本 2 欄位。您無法自訂或變更預設格式。若要擷取其他欄位或不同的欄位子集，請改為指定自訂格式。

## 自訂格式
<a name="flow-logs-custom"></a>

使用自訂格式時，您可以指定流量日誌記錄中包含哪些欄位以及順序。這樣可讓您建立專門針對需求的流量日誌，省略不相關的欄位。使用自訂格式可以減少個別處理程序從已發佈的流量日誌擷取特定資訊的需求。您可指定任何數量的可用流量日誌欄位，但至少必須指定一個。

## 可用的欄位
<a name="flow-logs-fields"></a>

下表描述流量日誌記錄的所有可用欄位。**版本**欄表示導入此欄位的 VPC 流量日誌版本。預設格式包括所有版本 2 欄位，其顯示順序與表格中的順序相同。

將流量日誌資料發佈到 Amazon S3 時，欄位的資料類型取決於流量日誌格式。如果格式為純文字，則所有欄位均為 STRING 類型。如果格式為 Parquet，請參閱欄位資料類型的資料表。

如果欄位不適用或無法計算特定記錄，則記錄會針對該項目顯示一個 '-' 符號。非直接來自封包標頭的中繼資料欄位是最佳近似值，而且它們的值可能會遺失或不正確。


| 欄位 | 描述 | 版本 | 
| --- | --- | --- | 
|  version  |  VPC 流量日誌版本。如果您使用預設格式，則版本為 2。如果您使用自訂格式，則版本為指定欄位中的最高版本。例如，如果您只指定版本 2 中的欄位，則版本為 2。如果您指定的欄位混合了版本 2、3 和 4 的欄位，則版本為 4。 **Parquet 資料類型：**INT\$132  | 2 | 
|  account-id  |  記錄流量之來源網路介面擁有者 AWS 的帳戶 ID。如果網路介面是由 AWS 服務建立，例如在建立 VPC 端點或 Network Load Balancer 時，可能會unknown顯示此欄位的記錄。 **Parquet 資料類型：**STRING  | 2 | 
|  interface-id  |  要記錄流量的網路介面 ID。對於與區域 NAT 閘道相關聯的流程，傳回 '-' 符號。 **Parquet 資料類型：**STRING  | 2 | 
|  srcaddr  |   對於傳入流量，此欄位顯示流量的來源 IP 位址。對於傳出流量，此欄位顯示傳送流量之網路介面的私有 IPv4 位址或 IPv6 位址。對於來自區域 NAT 閘道的傳出流量，這是與 中相同的封包層級來源 IP 地址pkt-srcaddr。另請參閱pkt-srcaddr。 **Parquet 資料類型：**STRING  | 2 | 
|  dstaddr  |  網路介面上傳出流量的目標地址，或傳入流量網路介面的 IPv4 或 IPv6 地址。網路介面的 IPv4 地址永遠都是其私有 IPv4 地址。對於傳入區域 NAT 閘道的流量，這是與 中相同的封包層級目的地 IP 地址pkt-dstaddr。另請參閱pkt-dstaddr。 **Parquet 資料類型：**STRING  | 2 | 
|  srcport  |  流量的來源連接埠。 **Parquet 資料類型：**INT\$132  | 2 | 
|  dstport  |  流量的目標連接埠。 **Parquet 資料類型：**INT\$132  | 2 | 
|  protocol  |  流量的 IANA 通訊協定號碼。如需詳細資訊，請參閱[指派的網際網路通訊協定號碼](http://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml)。 **Parquet 資料類型：**INT\$132  | 2 | 
|  packets  |  在流量期間傳輸的封包數。 **Parquet 資料類型：**INT\$164  | 2 | 
|  bytes  |  在流量期間傳輸的位元組數。 **Parquet 資料類型：**INT\$164  | 2 | 
|  start  |  彙總時間間隔內接收到第一個流量封包的時間 (以 Unix 秒為單位)。這個時間最長可能是在網路介面上傳送或接收封包之後 60 秒。 **Parquet 資料類型：**INT\$164  | 2 | 
|  end  |  彙總時間間隔內接收到最後一個流量封包的時間 (以 Unix 秒為單位)。這個時間最長可能是在網路介面上傳送或接收封包之後 60 秒。 **Parquet 資料類型：**INT\$164  | 2 | 
|  action  |  與流量相關聯的動作： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/vpc/latest/userguide/flow-log-records.html) **Parquet 資料類型：**STRING  | 2 | 
|  log-status  |  流量日誌的記錄狀態： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/vpc/latest/userguide/flow-log-records.html) **Parquet 資料類型：**STRING  | 2 | 
|  vpc-id  |  包含要記錄流量之網路介面的 VPC ID。 **Parquet 資料類型：**STRING  | 3 | 
|  subnet-id  |  包含要記錄流量之網路介面的子網 ID。傳回與區域 NAT 閘道相關聯之流程的 '-' 符號。 **Parquet 資料類型：**STRING  | 3 | 
|  instance-id  |  如果您擁有執行個體，則為與要記錄流量之網路介面相關聯的執行個體 ID。傳回[請求者管理網路介面](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/requester-managed-eni.html)的 '-' 符號，例如 NAT 閘道的網路介面。 **Parquet 資料類型：**STRING  | 3 | 
|  tcp-flags  | 下列 TCP 標記的位元遮罩值：[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/vpc/latest/userguide/flow-log-records.html)如果沒有記錄支援的旗標，TCP 旗標值則為 0。例如，由於 tcp-flags 不支援記錄 ACK 或 PSH 旗標，具有這些不支援旗標的流量紀錄會導致 tcp-flags 值 0。但是，如果不支援的旗標附帶支援的旗標，我們將報告支援旗標的值。例如，如果 ACK 是 SYN-ACK 的一部分，則會報告 18。如果有 SYN\$1ECE 等紀錄，由於 SYN 是支援的旗標，而 ECE 不是，TCP 旗標值是 2。如果由於某種原因旗標組合無效且無法計算值，則值為 '-'。如果沒有傳送旗標，則 TCP 旗標值為 0。彙總時間間隔內的 TCP 標記可用 OR 運算彙總。針對短暫連線，標記可能和流量日誌記錄設在同一行，例如，SYN-ACK 和 FIN 為 19，而 SYN 和 FIN 為 3。如需範例，請參閱[TCP 標記序列](flow-logs-records-examples.md#flow-log-example-tcp-flag)。如需有關 TCP 標記的一般資訊 (如 FIN、SYN 和 ACK 等標記的含義)，請參閱 Wikipedia 上的 [TCP segment structure](https://en.wikipedia.org/wiki/Transmission_Control_Protocol#TCP_segment_structure) (TCP 區段結構)。**Parquet 資料類型：**INT\$132 | 3 | 
|  type  |  流量類型。可能的值為：IPv4 \$1 IPv6 \$1 EFA。如需詳細資訊，請參閱 [Elastic Fabric Adapter](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/efa.html)。 **Parquet 資料類型：**STRING  | 3 | 
|  pkt-srcaddr  |  流量的封包層級 (原始) 來源 IP 地址。使用此欄位搭配 srcaddr 欄位來分辨流量流經之中繼 layer 的 IP 地址，以及流量的原始來源 IP 地址。例如，當流量流經 [NAT 閘道的網路介面](flow-logs-records-examples.md#flow-log-example-nat)時，或 Amazon EKS 的 Pod IP 地址和 Pod 執行 (用於 VPC 內部通訊) 所在執行個體節點的網路介面 IP 地址不同時。 **Parquet 資料類型：**STRING  | 3 | 
|  pkt-dstaddr  |  流量的封包層級 (原始) 目標 IP 地址。使用此欄位搭配 dstaddr 欄位來分辨流量流經之中繼 layer 的 IP 地址，以及流量的最終目標 IP 地址。例如，當流量流經 [NAT 閘道的網路介面](flow-logs-records-examples.md#flow-log-example-nat)時，或 Amazon EKS 的 Pod IP 地址和 Pod 執行 (用於 VPC 內部通訊) 所在執行個體節點的網路介面 IP 地址不同時。 **Parquet 資料類型：**STRING  | 3 | 
|  region  |  包含記錄流量之網路介面的區域。 **Parquet 資料類型：**STRING  |  4  | 
|  az-id  |  可用區域的 ID，其中包含記錄流量的網路介面。如果流量來自子位置，記錄會顯示此欄位的 '-' 符號。 **Parquet 資料類型：**STRING  |  4  | 
|  sublocation-type  |  在 sublocation-id 欄位中傳回的子位置類型。可能的值為：[波長](https://aws.amazon.com/wavelength/) \$1 [outpost](https://docs.aws.amazon.com/outposts/latest/userguide/) \$1 [本機區域](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-regions-availability-zones.html#concepts-local-zones)。如果流量不是來自子位置，則記錄會在此欄位顯示 '-' 符號。 **Parquet 資料類型：**STRING  |  4  | 
|  sublocation-id  |  包含要記錄流量之網路介面的子位置 ID。如果流量不是來自子位置，則記錄會在此欄位顯示 '-' 符號。 **Parquet 資料類型：**STRING  |  4  | 
|  pkt-src-aws-service  |  如果來源 IP 地址適用於 AWS 服務，pkt-srcaddr 欄位的 [IP 地址範圍](aws-ip-ranges.md)的子集名稱。如果來源 IP 地址屬於[重疊的範圍](aws-ip-syntax.md#aws-ip-range-overlaps)，則 只會pkt-src-aws-service顯示其中一個 AWS 服務代碼。可能的值為：`AMAZON` \$1 `AMAZON_APPFLOW` \$1 `AMAZON_CONNECT` \$1 `API_GATEWAY` \$1 `AURORA_DSQL` \$1 `CHIME_MEETINGS` \$1 `CHIME_VOICECONNECTOR` \$1 `CLOUD9` \$1 `CLOUDFRONT` \$1 `CLOUDFRONT_ORIGIN_FACING` \$1 `CODEBUILD` \$1 `DYNAMODB` \$1 `EBS` \$1 `EC2` \$1 `EC2_INSTANCE_CONNECT` \$1 `GLOBALACCELERATOR` \$1 `IVS_LOW_LATENCY` \$1 `IVS_REALTIME` \$1 `KINESIS_VIDEO_STREAMS` \$1 `MEDIA_PACKAGE_V2` \$1 `ROUTE53` \$1 `ROUTE53_HEALTHCHECKS` \$1 `ROUTE53_HEALTHCHECKS_PUBLISHING` \$1 `ROUTE53_RESOLVER` \$1 `S3` \$1 `WORKSPACES_GATEWAYS`。 **Parquet 資料類型：**STRING  |  5  | 
|  pkt-dst-aws-service  |  如果目的地 IP 地址是用於 AWS 服務，則pkt-dstaddr欄位的 IP 地址範圍子集名稱。如需可能值的清單，請參閱 pkt-src-aws-service 欄位。 **Parquet 資料類型：**STRING  |  5  | 
|  flow-direction  |  關於擷取流量的介面的流程方向。可能的值為：ingress \$1 egress。 **Parquet 資料類型：**STRING  |  5  | 
|  traffic-path  |  出口流量前往目的地的路徑。若要判斷流量是否為出口流量，請查看 flow-direction 欄位。可能的值如下。如果沒有任何值套用，則欄位會設定為 -。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/vpc/latest/userguide/flow-log-records.html) **Parquet 資料類型：**INT\$132  |  5  | 
|  ecs-cluster-arn  | AWS 如果流量來自執行中的 ECS 任務，ECS 叢集的資源名稱 (ARN)。若要在訂閱中包含此欄位，您需要呼叫 ecs:ListClusters 的許可。Parquet 資料類型：STRING |  7  | 
|  ecs-cluster-name  | 如果流量來自正在執行的 ECS 任務，則此欄位表示 ECS 叢集的名稱。若要在訂閱中包含此欄位，您需要呼叫 ecs:ListClusters 的許可。Parquet 資料類型：STRING |  7  | 
|  ecs-container-instance-arn  | 如果流量來自 EC2 執行個體上正在執行的 ECS 任務，則此欄位表示 ECS 容器執行個體的 ARN。如果容量提供者為 AWS Fargate，則此欄位將為 '-'。若要在訂閱中包含此欄位，您需要呼叫 ecs:ListClusters 和 ecs:ListContainerInstances 的許可。Parquet 資料類型：STRING |  7  | 
|  ecs-container-instance-id  | 如果流量來自 EC2 執行個體上正在執行的 ECS 任務，則此欄位表示 ECS 容器執行個體的 ID。如果容量提供者為 AWS Fargate，則此欄位將為 '-'。若要在訂閱中包含此欄位，您需要呼叫 ecs:ListClusters 和 ecs:ListContainerInstances 的許可。Parquet 資料類型：STRING |  7  | 
|  ecs-container-id  | 如果流量來自正在執行的 ECS 任務，則此欄位表示容器的 Docker 執行時期 ID。如果 ECS 任務中有一個或多個容器，則此欄位將顯示第一個容器的 Docker 執行時期 ID。若要在訂閱中包含此欄位，您需要呼叫 ecs:ListClusters 的許可。Parquet 資料類型：STRING |  7  | 
|  ecs-second-container-id  | 如果流量來自正在執行的 ECS 任務，則此欄位表示容器的 Docker 執行時期 ID。如果 ECS 任務中有多個容器，則此欄位將顯示第二個容器的 Docker 執行時期 ID。若要在訂閱中包含此欄位，您需要呼叫 ecs:ListClusters 的許可。Parquet 資料類型：STRING |  7  | 
|  ecs-service-name  | 如果流量來自正在執行的 ECS 任務，且 ECS 任務由 ECS 服務啟動，則此欄位表示 ECS 服務的名稱。如果 ECS 服務未啟動 ECS 任務，此欄位將為 '-'。若要在訂閱中包含此欄位，您需要呼叫 ecs:ListClusters 和 ecs:ListServices 的許可。Parquet 資料類型：STRING |  7  | 
|  ecs-task-definition-arn  | 如果流量來自正在執行的 ECS 任務，則此欄位表示 ECS 任務定義的 ARN。若要在訂閱中包含此欄位，您需要呼叫 ecs:ListClusters 和 ecs:ListTaskDefinitions 的許可。Parquet 資料類型：STRING |  7  | 
|  ecs-task-arn  | 如果流量來自正在執行的 ECS 任務，則此欄位表示 ECS 任務的 ARN。若要在訂閱中包含此欄位，您需要擁有呼叫 ecs:ListClusters 和 ecs:ListTasks 的許可。Parquet 資料類型：STRING |  7  | 
|  ecs-task-id  | 如果流量來自正在執行的 ECS 任務，則此欄位表示 ECS 任務的 ID。若要在訂閱中包含此欄位，您需要呼叫 ecs:ListClusters 和 ecs:ListTasks 的許可。Parquet 資料類型：STRING |  7  | 
|  reject-reason  |  流量遭拒的原因。可能的值：BPA、EC。對於其他任何拒絕原因，傳回 '-'。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/vpc/latest/userguide/flow-log-records.html) **Parquet 資料類型：**STRING  |  8  | 
|  resource-id  | 區域 NAT 閘道的 ID，其中包含記錄流量的網路界面。對於與區域 NAT 閘道無關的流量，傳回 '-' 符號。如需區域 NAT 閘道的詳細資訊，請參閱 [用於自動多可用區域擴展的區域 NAT 閘道](nat-gateways-regional.md)。 **Parquet 資料類型：**STRING  |  9  | 
|  encryption-status  |  流程的加密狀態。如需 VPC 加密控制的詳細資訊，請參閱 [強制執行傳輸中的 VPC 加密](vpc-encryption-controls.md)。可能值如下： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/vpc/latest/userguide/flow-log-records.html) 如果未啟用 VPC 加密控制，或 FlowLog 無法取得狀態，則值為 '-'。  \$1 對於介面和閘道端點， AWS 不會查看封包資料來判斷加密狀態，而是依賴用來取得加密狀態的連接埠。 \$1\$1 對於指定的 AWS 受管端點， 會根據服務組態中的 TLS 需求來 AWS 確定加密狀態。  **Parquet 資料類型：**INT\$132  |  10  | 

# 流量日誌記錄範例
<a name="flow-logs-records-examples"></a>

以下是擷取特定流量的流量日誌記錄範例。

如需流量日誌記錄格式的資訊，請參閱 [流量日誌記錄](flow-log-records.md)。如需如何建立流程記錄的相關資訊，請參閱[使用流量日誌工作](working-with-flow-logs.md)。

**Topics**
+ [已接受和已拒絕的流量](#flow-log-example-accepted-rejected)
+ [無任何資料及略過的記錄](#flow-log-example-no-data)
+ [安全群組及網路 ACL 規則](#flow-log-example-security-groups)
+ [IPv6 流量](#flow-log-example-ipv6)
+ [TCP 標記序列](#flow-log-example-tcp-flag)
+ [透過區域 NAT 閘道的流量](#flow-log-example-nat)
+ [透過區域 NAT 閘道的流量](#flow-log-example-regional-nat)
+ [通過傳輸閘道的流量](#flow-log-example-tgw)
+ [服務名稱、流量路徑和流向](#flow-log-example-traffic-path)

## 已接受和已拒絕的流量
<a name="flow-log-example-accepted-rejected"></a>

以下是預設流量日誌記錄的範例。

在此範例中，允許從 IP 位址 172.31.16.139 到私有 IP 位址為 172.31.16.21，ID 為 eni-1235b8ca123456789 且屬於帳戶 123456789010 之網路介面的 SSH 流量 (目的地連接埠 22、TCP 通訊協定)。

```
2 123456789010 eni-1235b8ca123456789 172.31.16.139 172.31.16.21 20641 22 6 20 4249 1418530010 1418530070 ACCEPT OK
```

在本範例中，拒絕帳戶 123456789010 中網路介面 eni-1235b8ca123456789 的 RDP 流量（目標連接埠 3389，TCP 通訊協定）。

```
2 123456789010 eni-1235b8ca123456789 172.31.9.69 172.31.9.12 49761 3389 6 20 4249 1418530010 1418530070 REJECT OK
```

## 無任何資料及略過的記錄
<a name="flow-log-example-no-data"></a>

以下是預設流量日誌記錄的範例。

在此範例中，彙總時間間隔內沒有記錄任何資料。

```
2 123456789010 eni-1235b8ca123456789 - - - - - - - 1431280876 1431280934 - NODATA
```

VPC Flow Logs 在無法在彙總間隔期間擷取流量日誌資料時，會跳過記錄，因為超過內部容量。跳過的單個記錄可代表在彙總間隔期間內未對網路介面擷取的多個流程。

```
2 123456789010 eni-11111111aaaaaaaaa - - - - - - - 1431280876 1431280934 - SKIPDATA
```

**注意**  
在彙總時間間隔內可能跳過一部分流量日誌記錄 (請參閱[可用的欄位](flow-log-records.md#flow-logs-fields)中的 *log-status*)。這可能是由於內部 AWS 容量限制或內部錯誤所造成。如果您使用 AWS Cost Explorer 來檢視 VPC 流程日誌費用，且在流程日誌彙總間隔期間略過某些流程日誌，則 中報告的流程日誌數目 AWS Cost Explorer 會高於 Amazon VPC 發佈的流程日誌數目。

## 安全群組及網路 ACL 規則
<a name="flow-log-example-security-groups"></a>

如使用流量日誌診斷過於嚴苛或寬鬆的安全群組規則或網路 ACL 規則，請注意這些資源的狀態性。安全群組具有狀態，這表示針對允許流量的回應也會獲得允許，即使您安全群組中的規則不允許。相反的，網路 ACL 無狀態，因此針對允許流量的回應仍會受制於網路 ACL 規則。

例如，您從您的家用電腦（IP 地址為 203.0.113.12）對您的執行個體（網路介面的私有 IP 地址為 172.31.16.139）使用 **ping** 命令。您的安全群組傳入規則允許 ICMP 流量，但傳出規則不允許 ICMP 流量。因為安全群組有狀態，所以允許來自您執行個體的回應 ping。您的網路 ACL 允許傳入 ICMP 流量，但不允許傳出 ICMP 流量。因為網路 ACL 無狀態，回應 ping 會遭到卸除，因而不會觸達您的家用電腦。在預設的流量日誌中，這會顯示為兩筆流量日誌記錄：
+ 同時獲得網路 ACL 及安全群組允許，因此可觸達您執行個體之原始 ping 的 ACCEPT 記錄。
+ 網路 ACL 拒絕之回應 ping 的 REJECT 記錄。

```
2 123456789010 eni-1235b8ca123456789 203.0.113.12 172.31.16.139 0 0 1 4 336 1432917027 1432917142 ACCEPT OK
```

```
2 123456789010 eni-1235b8ca123456789 172.31.16.139 203.0.113.12 0 0 1 4 336 1432917094 1432917142 REJECT OK
```

若您的網路 ACL 允許傳出 ICMP 流量，則流量日誌會顯示兩個 ACCEPT 記錄 (其中一個為原始 ping，另一個則為回應 ping)。若您的安全群組拒絕傳入 ICMP 流量，則流量日誌會顯示單一 REJECT 記錄，因為流量未獲准能觸達您的執行個體。

## IPv6 流量
<a name="flow-log-example-ipv6"></a>

以下是預設流量日誌記錄的範例。在此範例中，允許使用帳戶 123456789010 內從 IPv6 地址 2001:db8:1234:a100:8d6e:3477:df66:f105 至網路介面 eni-1235b8ca123456789 的 SSH 流量（連接埠 22）。

```
2 123456789010 eni-1235b8ca123456789 2001:db8:1234:a100:8d6e:3477:df66:f105 2001:db8:1234:a102:3304:8879:34cf:4071 34892 22 6 54 8855 1477913708 1477913820 ACCEPT OK
```

## TCP 標記序列
<a name="flow-log-example-tcp-flag"></a>

本節所述的自訂流量日誌範例，可依以下順序擷取下列欄位。

```
version vpc-id subnet-id instance-id interface-id account-id type srcaddr dstaddr srcport dstport pkt-srcaddr pkt-dstaddr protocol bytes packets start end action tcp-flags log-status
```

本節範例中的 tcp-flags 欄位以流量日誌中的倒數第二個值表示。TCP 標記可協助您識別流量方向，例如哪部伺服器啟動了連線。

**注意**  
如需有關 tcp-flags 選項的詳細資訊和每個 TCP 標記的說明，請參閱 [可用的欄位](flow-log-records.md#flow-logs-fields)。

在下列記錄中 (下午 7:47:55 開始，下午 7:48:53 結束)，用戶端向在連接埠 5001 執行的伺服器啟動了兩條連線。用戶端伺服器收到來自用戶端不同來源連接埠（43416 和 43418）的兩個 SYN 標記 (2)。對每個 SYN 而言，SYN-ACK 是從伺服器傳送至對應連接埠的用戶端 (18)。

```
3 vpc-abcdefab012345678 subnet-aaaaaaaa012345678 i-01234567890123456 eni-1235b8ca123456789 123456789010 IPv4 52.213.180.42 10.0.0.62 43416 5001 52.213.180.42 10.0.0.62 6 568 8 1566848875 1566848933 ACCEPT 2 OK
3 vpc-abcdefab012345678 subnet-aaaaaaaa012345678 i-01234567890123456 eni-1235b8ca123456789 123456789010 IPv4 10.0.0.62 52.213.180.42 5001 43416 10.0.0.62 52.213.180.42 6 376 7 1566848875 1566848933 ACCEPT 18 OK
3 vpc-abcdefab012345678 subnet-aaaaaaaa012345678 i-01234567890123456 eni-1235b8ca123456789 123456789010 IPv4 52.213.180.42 10.0.0.62 43418 5001 52.213.180.42 10.0.0.62 6 100701 70 1566848875 1566848933 ACCEPT 2 OK
3 vpc-abcdefab012345678 subnet-aaaaaaaa012345678 i-01234567890123456 eni-1235b8ca123456789 123456789010 IPv4 10.0.0.62 52.213.180.42 5001 43418 10.0.0.62 52.213.180.42 6 632 12 1566848875 1566848933 ACCEPT 18 OK
```

在第二個彙總時間間隔內，上個流程期間建立的其中一條連線現已關閉。伺服器針對 43418 連接埠的連線，向用戶端傳送了 FIN 旗標 (1)。用戶端隨後經由 43418 連接埠向伺服器回應了 FIN。

```
3 vpc-abcdefab012345678 subnet-aaaaaaaa012345678 i-01234567890123456 eni-1235b8ca123456789 123456789010 IPv4 10.0.0.62 52.213.180.42 5001 43418 10.0.0.62 52.213.180.42 6 63388 1219 1566848933 1566849113 ACCEPT 1 OK
3 vpc-abcdefab012345678 subnet-aaaaaaaa012345678 i-01234567890123456 eni-1235b8ca123456789 123456789010 IPv4 52.213.180.42 10.0.0.62 43418 5001 52.213.180.42 10.0.0.62 6 23294588 15774 1566848933 1566849113 ACCEPT 1 OK
```

針對在單一彙總時間間隔內開啟關閉的短暫連線 (例如數秒)，標記可能設在同方向流量之流量日誌記錄的同一行中。在以下範例中，連線在同一彙總時間間隔內建立及結束。在第一行中，TCP 標記值是 3，指出曾有 SYN 和 FIN 訊息自用戶端傳送至伺服器。在第二行中，TCP 標記值是 19，指出曾有 SYN-ACK 和 FIN 訊息自伺服器傳送至用戶端。

```
3 vpc-abcdefab012345678 subnet-aaaaaaaa012345678 i-01234567890123456 eni-1235b8ca123456789 123456789010 IPv4 52.213.180.42 10.0.0.62 43638 5001 52.213.180.42 10.0.0.62 6 1260 17 1566933133 1566933193 ACCEPT 3 OK
3 vpc-abcdefab012345678 subnet-aaaaaaaa012345678 i-01234567890123456 eni-1235b8ca123456789 123456789010 IPv4 10.0.0.62 52.213.180.42 5001 43638  10.0.0.62 52.213.180.42 6 967 14 1566933133 1566933193 ACCEPT 19 OK
```

## 透過區域 NAT 閘道的流量
<a name="flow-log-example-nat"></a>

在此範例中，私有子網路中的執行個體會透過公有子網路中的區域 NAT 閘道存取網際網路。

![\[透過區域 NAT 閘道存取網際網路\]](http://docs.aws.amazon.com/zh_tw/vpc/latest/userguide/images/flow-log-nat-gateway.png)


下列區域 NAT 閘道網路介面的自訂流程日誌會依下列順序擷取下列欄位。

```
instance-id interface-id srcaddr dstaddr pkt-srcaddr pkt-dstaddr
```

流程日誌顯示流量從執行個體 IP 地址 (10.0.1.5) 透過區域 NAT 閘道網路界面流向網際網路上的主機 (203.0.113.5)。區域 NAT 閘道網路介面是申請者管理的網路介面，因此流程日誌記錄會顯示 instance-id 欄位的「-」符號。下行顯示從來源執行個體到區域 NAT 閘道網路介面的流量。dstaddr 和 pkt-dstaddr 欄位的值不一樣。dstaddr 欄位會顯示區域 NAT 閘道網路界面的私有 IP 地址，而 pkt-dstaddr 欄位會顯示網際網路上主機的最終目的地 IP 地址。

```
- eni-1235b8ca123456789 10.0.1.5 10.0.0.220 10.0.1.5 203.0.113.5
```

下兩行顯示從區域 NAT 閘道網路介面到網際網路上目標主機的流量，以及從主機到 NAT 閘道網路介面的回應流量。

```
- eni-1235b8ca123456789 10.0.0.220 203.0.113.5 10.0.0.220 203.0.113.5
- eni-1235b8ca123456789 203.0.113.5 10.0.0.220 203.0.113.5 10.0.0.220
```

下行顯示從區域 NAT 閘道網路界面到來源執行個體的回應流量。srcaddr 和 pkt-srcaddr 欄位的值不一樣。srcaddr 欄位會顯示區域 NAT 閘道網路界面的私有 IP 地址，而 pkt-srcaddr 欄位會顯示網際網路上主機的 IP 地址。

```
- eni-1235b8ca123456789 10.0.0.220 10.0.1.5 203.0.113.5 10.0.1.5
```

您使用上文中的同一欄位集，建立另一個自訂流量日誌。您為私有子網中的執行個體建立網路介面的流量日誌。在本案例中，instance-id 欄位會傳回與網路介面相關聯的執行個體 ID，而 dstaddr 和 pkt-dstaddr 欄位以及 srcaddr 和 pkt-srcaddr 欄位之間沒有任何差異。與區域 NAT 閘道的網路界面不同，此網路界面不是流量的中繼網路界面。

```
i-01234567890123456 eni-1111aaaa2222bbbb3 10.0.1.5 203.0.113.5 10.0.1.5 203.0.113.5 #Traffic from the source instance to host on the internet
i-01234567890123456 eni-1111aaaa2222bbbb3 203.0.113.5 10.0.1.5 203.0.113.5 10.0.1.5 #Response traffic from host on the internet to the source instance
```

## 透過區域 NAT 閘道的流量
<a name="flow-log-example-regional-nat"></a>

區域 NAT 閘道可以連接到不同可用區域的多個子網路。在此範例中，來自兩個不同可用區域的兩個私有子網路執行個體會透過相同的區域 NAT 閘道存取網際網路。下列流程日誌顯示透過區域 NAT 閘道從其中一個執行個體流向網際網路的流量。

![\[透過區域 NAT 閘道存取網際網路\]](http://docs.aws.amazon.com/zh_tw/vpc/latest/userguide/images/flow-log-regional-nat-gateway.png)


下列區域 NAT 閘道的自訂流程日誌會依下列順序擷取下列欄位。

```
resource-id instance-id interface-id subnet-id srcaddr dstaddr pkt-srcaddr pkt-dstaddr
```

流程日誌顯示從執行個體 IP 地址 (10.0.1.5) 透過區域 NAT 閘道流向網際網路上主機 (203.0.113.5) 的流量。interface-id、 instance-id和 subnet-id 不適用於區域 NAT 閘道。因此，流程日誌記錄會顯示這些欄位的 '-' 符號。反之， resource-id 欄位會顯示區域 NAT 閘道的 ID。dstaddr 和 pkt-dstaddr 欄位會顯示網際網路上主機的最終目的地 IP 地址。

```
nat-1234567890abcdef - - - 10.0.1.5 203.0.113.5 10.0.1.5 203.0.113.5
```

下兩行顯示從區域 NAT 閘道 （公有 IP 地址 107.22.182.139) 到網際網路上目標主機的流量，以及從主機到區域 NAT 閘道的回應流量。

```
nat-1234567890abcdef - - - 107.22.182.139 203.0.113.5 107.22.182.139 203.0.113.5
nat-1234567890abcdef - - - 203.0.113.5 107.22.182.139 203.0.113.5 107.22.182.139
```

下行顯示從區域 NAT 閘道到來源執行個體的回應流量。srcaddr 和 pkt-srcaddr 欄位會顯示網際網路上主機的 IP 地址。

```
nat-1234567890abcdef - - - 203.0.113.5 10.0.1.5 203.0.113.5 10.0.1.5
```

您使用上文中的同一欄位集，建立另一個自訂流量日誌。您為私有子網中的執行個體建立網路介面的流量日誌。在此情況下， instance-id 欄位會傳回與網路界面相關聯的執行個體 ID，且 resource-id為 '-'。dstaddr 和 pkt-dstaddr 欄位與 srcaddr和 pkt-srcaddr 欄位之間沒有差異。

```
- i-01234567890123456 eni-1111aaaa2222bbbb3 subnet-aaaaaaaa012345678 10.0.1.5 203.0.113.5 10.0.1.5 203.0.113.5 #Traffic from the source instance to host on the internet
- i-01234567890123456 eni-1111aaaa2222bbbb3 subnet-aaaaaaaa012345678 203.0.113.5 10.0.1.5 203.0.113.5 10.0.1.5 #Response traffic from host on the internet to the source instance
```

## 通過傳輸閘道的流量
<a name="flow-log-example-tgw"></a>

在本範例中，VPC A 中的用戶端透過傳輸閘道連線至 VPC B 的 Web 伺服器。用戶端和伺服器位於不同的可用區域。流量使用一個彈性網路介面 ID (在此範例中，假設 ID 為 eni-11111111111111111) 到達 VPC B 中的伺服器，並使用另一個 (例如 eni-22222222222222222) 離開 VPC B。

![\[通過傳輸閘道的流量\]](http://docs.aws.amazon.com/zh_tw/vpc/latest/userguide/images/flow-log-tgw.png)


您使用以下格式建立 VPC B 的自訂流量日誌。

```
version interface-id account-id vpc-id subnet-id instance-id srcaddr dstaddr srcport dstport protocol tcp-flags type pkt-srcaddr pkt-dstaddr action log-status
```

下列數行流量日誌記錄示範 Web 伺服器網路介面上的流量。第一行是來自用戶端的請求流量，而最後一行是來自 Web 伺服器的回應流量。

```
3 eni-33333333333333333 123456789010 vpc-abcdefab012345678 subnet-22222222bbbbbbbbb i-01234567890123456 10.20.33.164 10.40.2.236 39812 80 6 3 IPv4 10.20.33.164 10.40.2.236 ACCEPT OK
...
3 eni-33333333333333333 123456789010 vpc-abcdefab012345678 subnet-22222222bbbbbbbbb i-01234567890123456 10.40.2.236 10.20.33.164 80 39812 6 19 IPv4 10.40.2.236 10.20.33.164 ACCEPT OK
```

下行是子網 subnet-11111111aaaaaaaaa 中，傳輸閘道申請者管理網路介面在 eni-11111111111111111 上的請求流量。因此，流量日誌記錄在 instance-id 欄位會顯示 '-' 符號。srcaddr 欄位顯示傳輸閘道網路介面的私有 IP 地址，而 pkt-srcaddr 欄位則顯示 VPC A 中用戶端的 IP 地址。

```
3 eni-11111111111111111 123456789010 vpc-abcdefab012345678 subnet-11111111aaaaaaaaa - 10.40.1.175 10.40.2.236 39812 80 6 3 IPv4 10.20.33.164 10.40.2.236 ACCEPT OK
```

下行是子網 subnet-22222222bbbbbbbbb 中，傳輸閘道申請者管理網路介面在 eni-22222222222222222 上的回應流量。dstaddr 欄位顯示傳輸閘道網路介面的私有 IP 地址，而 pkt-dstaddr 欄位則顯示 VPC A 中用戶端的 IP 地址。

```
3 eni-22222222222222222 123456789010 vpc-abcdefab012345678 subnet-22222222bbbbbbbbb - 10.40.2.236 10.40.2.31 80 39812 6 19 IPv4 10.40.2.236 10.20.33.164 ACCEPT OK
```

## 服務名稱、流量路徑和流向
<a name="flow-log-example-traffic-path"></a>

以下是自訂流量日誌記錄的欄位範例。

```
version srcaddr dstaddr srcport dstport protocol start end type packets bytes account-id vpc-id subnet-id instance-id interface-id region az-id sublocation-type sublocation-id action tcp-flags pkt-srcaddr pkt-dstaddr pkt-src-aws-service pkt-dst-aws-service traffic-path flow-direction log-status
```

在下列範例中，版本為 5，因為記錄包含版本 5 欄位。一個 EC2 執行個體呼叫 Amazon S3 服務。會在執行個體的網路介面上擷取流量日誌。第一筆記錄的流動方向為 ingress，第二個記錄的流動方向為 egress。對於 egress 記錄，traffic-path 為 8，表示流量通過網際網路閘道。此 traffic-path 欄位不支援 ingress 流量。當 pkt-srcaddr 或 pkt-dstaddr 是公用 IP 地址時，會顯示服務名稱。

```
5 52.95.128.179 10.0.0.71 80 34210 6 1616729292 1616729349 IPv4 14 15044 123456789012 vpc-abcdefab012345678 subnet-aaaaaaaa012345678 i-0c50d5961bcb2d47b eni-1235b8ca123456789 ap-southeast-2 apse2-az3 - - ACCEPT 19 52.95.128.179 10.0.0.71 S3 - - ingress OK
5 10.0.0.71 52.95.128.179 34210 80 6 1616729292 1616729349 IPv4 7 471 123456789012 vpc-abcdefab012345678 subnet-aaaaaaaa012345678 i-0c50d5961bcb2d47b eni-1235b8ca123456789 ap-southeast-2 apse2-az3 - - ACCEPT 3 10.0.0.71 52.95.128.179 - S3 8 egress OK
```

# 流量日誌限制
<a name="flow-logs-limitations"></a>

若要使用流量日誌，您必須注意下列限制：
+ 建立流量日誌之後，除非您選擇的網路介面、子網路或 VPC 有作用中流量，否則您不會看到流量日誌資料。
+ 您無法為已和您 VPC 互連之 VPC 啟用流量日誌，除非對等 VPC 位於您的帳戶中。
+ 建立流量日誌之後，您即無法變更其組態或流量日誌記錄格式。例如，您無法建立不同 IAM 角色與流量日誌的關聯，或新增或移除流量日誌記錄的欄位。但是您可以刪除流量日誌，並使用需要的組態建立新的流量日誌。
+ 您的網路介面如有多個 IPv4 地址，且流量會傳送到輔助私有 IPv4 地址，則流量日誌會在 `dstaddr` 欄位中顯示主要私有 IPv4 地址。若要擷取原始目標 IP 地址，請建立具有 `pkt-dstaddr` 欄位的流量日誌。
+ 如果流量要傳送到網路介面，但目標不是任一網路介面的 IP 地址，則流量日誌會在 `dstaddr` 欄位中顯示主要私有 IPv4 地址。若要擷取原始目標 IP 地址，請建立具有 `pkt-dstaddr` 欄位的流量日誌。
+  如果流量來自網路介面，且來源不是任一網路介面的 IP 位址，則當日誌記錄對應輸出流量時，流量日誌會在 `srcaddr` 欄位中顯示主要私有 IPv4 位址。若要擷取原始來源 IP 地址，請建立具有 `pkt-srcaddr` 欄位的流量日誌。如果日誌記錄對應進入網路介面的輸入流量，則 `srcaddr` 欄位不會顯示網路介面的主要私有 IP。
+ 當您的網路介面連線至 [Nitro 型執行個體](https://docs.aws.amazon.com/ec2/latest/instancetypes/ec2-nitro-instances.html)時，無論指定的最大彙總時間間隔為何，彙總時間間隔一律為 1 分鐘或更短。
+ 對於 `pkt-srcaddr` 和 `pkt-dstaddr` 欄位，如果中繼層啟用了用戶端 IP 位址保留，則此欄位可能會顯示保留的用戶端 IP，而不是中繼層的 IP 位址。
+ 對於 `traffic-path` 欄位，流經同一 VPC 中資源的流量與流經 Outpost 本機閘道的流量，其欄位值相同。
+ 在彙總時間間隔內可能跳過一部分流量日誌記錄 (請參閱[可用的欄位](flow-log-records.md#flow-logs-fields)中的 *log-status*)。這可能是由於內部 AWS 容量限制或內部錯誤所造成。如果您使用 AWS Cost Explorer 來檢視 VPC 流程日誌費用，且在流程日誌彙總間隔期間略過某些流程日誌，則 中報告的流程日誌數目 AWS Cost Explorer 會高於 Amazon VPC 發佈的流程日誌數目。
+ 如果您使用 [VPC 封鎖公開存取 (BPA)](security-vpc-bpa-assess-impact-main.md#security-vpc-bpa-fl)：
  + VPC BPA 的流量日誌不包含[跳過的記錄](flow-logs-records-examples.md#flow-log-example-no-data)。
  + 即使您在流量日誌中包含 `bytes` 欄位，VPC BPA 的流量日誌也不會包含 [`bytes`](flow-log-records.md#flow-logs-fields)。
+ VPC 流程日誌支援每個帳戶每個資源最多 250 個訂閱。若要在已達到此限制的資源上建立其他訂閱，您必須先刪除現有的訂閱。

流量日誌不會擷取所有 IP 流量。以下流量類型的日誌不會記錄：
+ 由執行個體在與 Amazon DNS 伺服器聯絡時產生的流量。若您使用您自己的 DNS 伺服器，則會記錄所有流向該 DNS 伺服器的流量。
+ 由 Windows 執行個體針對 Amazon Windows 授權啟用所產生的流量。
+ 針對執行個體中繼資料，流入及流出 `169.254.169.254` 的流量。
+ 針對 Amazon Time Sync Service，流入及流出 `169.254.169.123` 的流量。
+ DHCP 流量。
+ [鏡映流量](https://docs.aws.amazon.com/vpc/latest/mirroring/traffic-mirroring-how-it-works.html)的來源流量。您只會看到鏡映流量的目標流量。
+ 流入預設 VPC 路由器預留 IP 地址的流量。
+ 端點網路介面和 Network Load Balancer 網路介面之間的流量。
+ 位址解析通訊協定 (ARP) 流量。
+ 短期區域 NAT 閘道上的流量會在建立幾分鐘後刪除。

特定於第 7 版中可用 ECS 欄位的限制：
+ 如果流量日誌訂閱的擁有者未擁有基礎 ECS 任務，則不會計算 ECS 欄位。例如，若您與其他帳戶 (`AccountB`) 共用子網路 (`SubnetA`)，然後為 `SubnetA` 建立流量日誌訂閱；或者，若 `AccountB` 在共用子網路中啟動 ECS 任務，則您的訂閱將會收到由 `AccountB` 啟動的 ECS 任務的流量日誌，但由於安全疑慮，將不會計算這些日誌的 ECS 欄位。
+ 如果您在 VPC/子網路資源層級建立包含 ECS 欄位的流量日誌訂閱，則系統會為訂閱傳送針對非 ECS 網路介面所產生的任何流量。非 ECS IP 流量的 ECS 欄位值將為 '-'。例如，您擁有子網路 (`subnet-000000`)，且為此子網路建立了包含 ECS 欄位 (`fl-00000000`) 的流量日誌訂閱。在 `subnet-000000` 中，您啟動了連線至網際網路且主動產生 IP 流量的 EC2 執行個體 (`i-0000000`)。您還在同一個子網路中啟動了正在執行的 ECS 任務 (`ECS-Task-1`)。由於 `i-0000000` 和 `ECS-Task-1` 都產生 IP 流量，您的流量日誌訂閱 `fl-00000000` 將傳送這兩個實體的流量日誌。不過，只有 `ECS-Task-1` 才會擁有您在 logFormat 中所包含的 ECS 欄位的實際 ECS 中繼資料。對於 `i-0000000` 相關的流量，這些欄位的值為 '-'。
+ 根據 VPC 流量日誌服務從 ECS 事件串流中接收到的順序對 `ecs-container-id` 和 `ecs-second-container-id` 進行排列。不保證它們與您在 ECS 主控台或 DescribeTask API 呼叫中看到的順序相同。如果容器在任務仍在執行時進入「已停止」狀態，它可能會繼續出現在您的日誌中。
+ ECS 中繼資料和 IP 流量日誌來自兩個不同的來源。我們從上游相依項取得所有必要資訊後，即會開始計算您的 ECS 流量。在您啟動新任務後，我們會在 1) 收到基礎網路介面的 IP 流量，以及 2) 收到包含 ECS 任務中繼資料的 ECS 事件 (表示任務現在正在執行) 時開始計算您的 ECS 欄位。當您停止任務後，我們會在 1) 不再接收基礎網路介面的 IP 流量，或收到延遲超過一天的 IP 流量，以及 2) 收到包含 ECS 任務中繼資料的 ECS 事件 (表示任務不再執行) 時停止計算您的 ECS 欄位。
+ 僅支援以 `awsvpc` [網路模式](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-networking.html)啟動的 ECS 任務。

`encryption-status` 欄位特定的限制：
+ 由於某些網路設備報告加密狀態的限制，某些流程中的加密狀態可能是 '-'（無法使用）。使用者可以在分析中忽略這些流程。
+ 在監控模式下顯示為加密，並不表示在強制執行模式下將允許流程。反之亦然。
  + 如果流程在監控模式下加密，在強制執行模式下可能不合規：
    + 如果流程涉及 AWS 服務建立的 ENI，則服務需要支援加密控制。
    + 如果流程通過 VPC 對等互連，對等 VPC 可能不會強制加密控制。
  + 如果流程未在監控模式下加密，則由於與流程相關的服務已新增為排除，因此在強制執行模式下可能仍然合規。

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

當您發佈流程日誌時，會套用付費日誌的資料擷取和存檔費用。如需發佈付費記錄時的定價詳細資訊，請開啟 [Amazon CloudWatch 定價](https://aws.amazon.com/cloudwatch/pricing/)，選取**日誌**並尋找**付費記錄**。

若要追蹤發佈流程日誌的費用，您可以將成本分配標籤套用至目的地資源。之後，您的 AWS 成本分配報告會包含這些標籤彙總的用量和成本。您可以套用代表業務類別 (例如成本中心、應用程式名稱或擁有者) 的標籤，來整理多個服務中的成本。如需詳細資訊，請參閱下列內容：
+ *AWS Billing User Guide* 中的 [Using Cost Allocation Tags](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html)
+ *Amazon CloudWatch Logs User Guide* 中的 [Tag log groups in Amazon CloudWatch Logs](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/Working-with-log-groups-and-streams.html#log-group-tagging)
+ *Amazon Simple Storage Service User Guide* 中的 [Using cost allocation S3 bucket tags](https://docs.aws.amazon.com/AmazonS3/latest/userguide/CostAllocTagging.html)
+ *Amazon Data Firehose Developer Guide* 中的 [Tagging Your Delivery Streams](https://docs.aws.amazon.com/firehose/latest/dev/firehose-tagging.html)

# 使用流量日誌工作
<a name="working-with-flow-logs"></a>

您可以使用 Amazon EC2 和 Amazon VPC 的主控台來處理流程日誌。

**Topics**
+ [1. 使用 IAM 控制流量日誌的使用方式](#controlling-use-of-flow-logs)
+ [2. 建立流量日誌](#create-flow-log)
+ [3. 標記流程日誌](#modify-tags-flow-logs)
+ [4. 刪除流量日誌](#delete-flow-log)
+ [命令列概觀](#flow-logs-api-cli)

## 1. 使用 IAM 控制流量日誌的使用方式
<a name="controlling-use-of-flow-logs"></a>

根據預設， 使用者沒有使用流程日誌的許可。您可以建立 IAM 角色，確保其連接的政策會將建立、描述和刪除流量日誌的許可授予使用者。

以下是授予使用者建立、描述、刪除流量日誌等完整許可的範例政策。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ec2:DeleteFlowLogs",
        "ec2:CreateFlowLogs",
        "ec2:DescribeFlowLogs"
      ],
      "Resource": "*"
    }
  ]
}
```

------

 如需詳細資訊，請參閱[Amazon VPC 如何與 IAM 搭配運作](security_iam_service-with-iam.md)。

## 2. 建立流量日誌
<a name="create-flow-log"></a>

您可以建立 VPC、子網或網路介面的流量日誌。建立流程日誌時，您必須指定流程日誌的目的地。如需詳細資訊，請參閱下列內容：
+ [建立發佈至 CloudWatch Logs 的流量日誌](flow-logs-cwl-create-flow-log.md)
+ [建立發佈到 Amazon S3 的流量日誌](flow-logs-s3-create-flow-log.md)
+ [建立發布至 Amazon Data Firehose 的流量日誌](flow-logs-firehose-create-flow-log.md)

## 3. 標記流程日誌
<a name="modify-tags-flow-logs"></a>

您可以隨時新增或移除流程日誌的標籤。

**管理流程日誌的標籤**

1. 執行以下任意一項：
   + 前往 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) 開啟 Amazon EC2 主控台。在導覽窗格中，選擇 **Network Interfaces (網路介面)**。選取網路介面的核取方塊。
   + 在 [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/) 開啟 Amazon VPC 主控台。在導覽窗格中，選擇 **Your VPCs** (您的 VPC)。選取 VPC 的核取方塊。
   + 在 [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/) 開啟 Amazon VPC 主控台。在導覽窗格中，選擇 **Subnets** (子網)。選取子網路的核取方塊。

1. 選擇 **Flow Logs** (流程日誌)。

1. 選擇 **Actions (動作)**、**Manage tags (管理標籤)**。

1. 若要新增標籤，請選擇 **Add new tag** (新增標籤)，然後輸入金鑰和值。若要移除標籤，請選擇 **Remove** (移除)。

1. 當您完成新增或移除標籤時，請選擇 **Save** (儲存)。

## 4. 刪除流量日誌
<a name="delete-flow-log"></a>

您可以隨時刪除流程日誌。在您刪除流程日誌之後，它可能需要數分鐘的時間，才會停止收集資料。

刪除流程日誌並不會刪除目的地中的日誌資料或修改目的地資源。您必須使用目的地服務的主控台直接從目的地刪除現有流程日誌資料，並清理目的地資源。

**刪除流程日誌**

1. 執行以下任意一項：
   + 前往 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) 開啟 Amazon EC2 主控台。在導覽窗格中，選擇 **Network Interfaces (網路介面)**。選取網路介面的核取方塊。
   + 在 [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/) 開啟 Amazon VPC 主控台。在導覽窗格中，選擇 **Your VPCs** (您的 VPC)。選取 VPC 的核取方塊。
   + 在 [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/) 開啟 Amazon VPC 主控台。在導覽窗格中，選擇 **Subnets** (子網)。選取子網路的核取方塊。

1. 選擇 **Flow Logs** (流程日誌)。

1. 選擇 **Actions** (動作) 和 **Delete flow logs** (刪除流程日誌)。

1. 出現確認提示時，請輸入 **delete**，然後選擇 **Delete** (刪除)。

## 命令列概觀
<a name="flow-logs-api-cli"></a>

您可以使用命令列執行此頁面所述的任務。

**建立流量日誌**
+ [create-flow-logs](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-flow-logs.html) (AWS CLI)
+ [新的 EC2 流量日誌](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2FlowLog.html) (AWS Tools for Windows PowerShell)

**描述流程日誌**
+ [describe-flow-logs](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-flow-logs.html) (AWS CLI)
+ [獲得 EC2 流量日誌](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2FlowLog.html) (AWS Tools for Windows PowerShell)

**標記流程日誌**
+ [create-tags](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-tags.html) 和 [delete-tags](https://docs.aws.amazon.com/cli/latest/reference/ec2/delete-tags.html) (AWS CLI)
+ [New-EC2Tag](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2Tag.html) 和 [Remove-EC2Tag](https://docs.aws.amazon.com/powershell/latest/reference/items/Remove-EC2Tag.html) (AWS Tools for Windows PowerShell)

**刪除流量日誌**
+ [delete-flow-logs](https://docs.aws.amazon.com/cli/latest/reference/ec2/delete-flow-logs.html) (AWS CLI)
+ [移除 EC2 流量日誌](https://docs.aws.amazon.com/powershell/latest/reference/items/Remove-EC2FlowLog.html) (AWS Tools for Windows PowerShell)

# 將流量日誌發佈至 CloudWatch Logs
<a name="flow-logs-cwl"></a>

流量日誌可以將流量日誌資料直接發佈到 Amazon CloudWatch。Amazon CloudWatch 是全方位的監控和可觀測性服務。它從各種 AWS 資源以及您自己的應用程式和服務收集和追蹤指標、日誌和事件資料。CloudWatch 提供對資源使用率、應用程式效能和運作狀態的可見性，幫助您偵測和回應整個系統的效能變更和潛在問題。使用 CloudWatch，您可以設定警示、視覺化日誌和指標，並自動做出反應以收集和最佳化您的雲端資源。它是確保雲端基礎設施和應用程式的可靠性、可用性和效能的重要工具。

發佈至 CloudWatch Logs 時，流量日誌資料會發佈至日誌群組，以及該日誌群組中每個具有唯一日誌串流的網路介面。日誌串流包含流量日誌記錄。您可以建立多個流量日誌，將資料發佈至相同的日誌群組。若相同日誌群組中的一或多個流量日誌內存在相同的網路介面，它便會擁有一個合併日誌串流。若您指定其中一個流程日誌應擷取拒絕流量，並且指定其他流程日誌應擷取接受流量，則合併日誌串流便會擷取所有流量。

在 CloudWatch Logs 中，**timestamp** 欄位對應到流程日誌記錄中擷取的開始時間。**ingestionTime** 欄位指出 CloudWatch Logs 收到流量日誌記錄的日期和時間。這個時間戳記晚於流量日誌記錄中擷取的結束時間。

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

**定價**  
當您將流量日誌發佈到 CloudWatch Logs 時，會套用付費日誌的資料擷取和存檔費用。如需詳細資訊，請開啟 [Amazon CloudWatch 定價](https://aws.amazon.com/cloudwatch/pricing/)，選取 **Logs** (日誌)，然後尋找 **Vended Logs** (付費日誌)。

**Topics**
+ [用於將流程日誌發佈至 CloudWatch Logs 的 IAM 角色](flow-logs-iam-role.md)
+ [建立發佈至 CloudWatch Logs 的流量日誌](flow-logs-cwl-create-flow-log.md)
+ [檢視 CloudWatch Logs 中的流量日誌記錄](view-flow-log-records-cwl.md)
+ [搜尋流量日誌記錄](search-flow-log-records-cwl.md)
+ [處理 CloudWatch Logs 中的流量日誌記錄](process-records-cwl.md)

# 用於將流程日誌發佈至 CloudWatch Logs 的 IAM 角色
<a name="flow-logs-iam-role"></a>

與您流量日誌關聯的 IAM 角色必須具有足夠的許可，將流量日誌發佈到 CloudWatch Logs 中指定的日誌群組。IAM 角色必須屬於 AWS 您的帳戶。

與您 IAM 角色連線的 IAM 政策必須包含至少下列任一許可：

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "logs:CreateLogGroup",
        "logs:CreateLogStream",
        "logs:PutLogEvents",
        "logs:DescribeLogGroups",
        "logs:DescribeLogStreams"
      ],
      "Resource": "*"
    }
  ]
}
```

------

確保您的角色具有下列信任政策，以允許流程日誌服務擔任角色。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "vpc-flow-logs.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
```

------

建議您使用 `aws:SourceAccount` 和 `aws:SourceArn` 條件金鑰，保護自己免受[混淆代理人問題](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html)的困擾。例如，您可以將下列條件區塊新增至先前的信任政策。來源帳戶是流量日誌的擁有者，且來源 ARN 是流量日誌 ARN。如果您不清楚流量日誌 ID，您可以使用萬用字元 (\$1) 取代該部分的 ARN，然後在建立流量日誌之後更新政策。

```
"Condition": {
    "StringEquals": {
        "aws:SourceAccount": "account_id"
    },
    "ArnLike": {
        "aws:SourceArn": "arn:aws:ec2:region:account_id:vpc-flow-log/flow-log-id"
    }
}
```

## 建立流程日誌的 IAM 角色
<a name="create-flow-logs-role"></a>

您可以如上所述更新現有的角色。或者，您可以使用下列程序建立新的角色以搭配流程日誌使用。您將在建立流程日誌時指定此角色。

**建立流量日誌的 IAM 角色**

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

1. 在導覽窗格中，選擇**政策**。

1. 選擇 **Create policy** (建立政策)。

1. 在 **Create policy (建立政策)** 頁面上，執行下列動作：

   1. 選擇 **JSON**。

   1. 將此視窗的內容取代為本節開頭的許可政策。

   1. 選擇**下一步**。

   1. 輸入您的政策的名稱，以及可選的描述和標籤，然後選擇 **建立政策**。

1. 在導覽窗格中，選擇 **Roles** (角色)。

1. 選擇 **Create Role** (建立角色)。

1. 對於 **Trusted entity type** (信任的實體類型)，選擇 **Custom trust policy** (自訂信任政策)。對於 **Custom trust policy** (自訂信任政策)，將 `"Principal": {},` 取代為下列內容，然後選擇 **Next** (下一步)。

   ```
   "Principal": {
      "Service": "vpc-flow-logs.amazonaws.com"
   },
   ```

1. 在 **Add permissions** (新增許可) 頁面上，選取您先前在此程序中建立的政策的核取方塊，然後選擇 **Next** (下一步)。

1. 輸入您角色的名稱，然後選擇性提供描述。

1. 選擇 **Create Role** (建立角色)。

# 建立發佈至 CloudWatch Logs 的流量日誌
<a name="flow-logs-cwl-create-flow-log"></a>

您可以建立 VPC、子網或網路介面的流量日誌。如果您以使用者身分使用特定 IAM 角色執行這些步驟，請確定此角色擁有使用 `iam:PassRole` 動作的許可。

**先決條件**  
確認您用來發出請求的 IAM 主體擁有呼叫 `iam:PassRole` 動作的許可。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iam:PassRole"
            ],
            "Resource": "arn:aws:iam::111122223333:role/flow-log-role-name"
        }
    ]
}
```

------

**使用主控台建立流程日誌**

1. 執行以下任意一項：
   + 前往 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) 開啟 Amazon EC2 主控台。在導覽窗格中，選擇 **Network Interfaces (網路介面)**。選取網路介面的核取方塊。
   + 在 [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/) 開啟 Amazon VPC 主控台。在導覽窗格中，選擇 **Your VPCs** (您的 VPC)。選取 VPC 的核取方塊。
   + 在 [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/) 開啟 Amazon VPC 主控台。在導覽窗格中，選擇 **Subnets** (子網)。選取子網路的核取方塊。

1. 選擇 **Actions** (動作)、**Create flow log** (建立流量日誌)。

1. 對於 **Filter** (篩選條件)，請指定要記錄的流量類型。選擇 **All** (全部) 以記錄已接受和已拒絕的流量，選擇 **Reject** (拒絕) 以記錄僅拒絕的流量，或選擇 **Accept** (接受) 以記錄僅接受的流量。

1. 針對 **Maximum aggregation interval** (最大彙總時間間隔)，選擇擷取流量並彙總至一個流量日誌記錄的最長期間。

1. 針對 **Destination** (目標)，選擇 **Send to CloudWatch Logs** (傳送至 CloudWatch Logs)。

1. 對於 **目的地日誌群組**，請選擇現有日誌群組的名稱，或輸入新日誌群組名稱。如果您輸入名稱，我們會在需要記錄流量時建立日誌群組。

1. 在**服務存取**欄位中，選擇一個具備將日誌發布至 CloudWatch Logs 之許可的現有 [IAM 服務角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/access.html)，或選擇建立一個新的服務角色。

1. 對於 **Log record format** (日誌記錄格式)，請選取流量日誌記錄的格式。
   + 若要使用預設格式，請選擇 **AWS default format** ( 預設格式)。
   + 若要使用自訂格式，請選擇 **Custom format** (自訂格式)，然後從 **Log format** (日誌格式) 選取欄位。

1. 如果您想要包含 Amazon ECS 的日誌格式中繼資料，請選取**其他中繼資料**。

1. (選用) 選擇 **Add new tag** (新增標籤) 將標籤套用至流量日誌。

1. 選擇 **Create flow log** (建立流量日誌)。

**使用命令列建立流量日誌**

請使用下列其中一個命令。
+ [create-flow-logs](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-flow-logs.html) (AWS CLI)
+ [新的 EC2 流量日誌](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2FlowLog.html) (AWS Tools for Windows PowerShell)

下列 AWS CLI 範例會建立流程日誌，擷取指定子網路的所有已接受流量。流程日誌會交付至指定的日誌群組。`--deliver-logs-permission-arn` 參數指定發佈至 CloudWatch Logs 所需的 IAM 角色。

```
aws ec2 create-flow-logs --resource-type Subnet --resource-ids subnet-1a2b3c4d --traffic-type ACCEPT --log-group-name my-flow-logs --deliver-logs-permission-arn arn:aws:iam::123456789101:role/publishFlowLogs
```

# 檢視 CloudWatch Logs 中的流量日誌記錄
<a name="view-flow-log-records-cwl"></a>

您可以使用 CloudWatch Logs 主控台檢視流程日誌記錄。在您建立流程日誌之後，可能需要數分鐘的時間，才能在主控台中看到它。

**使用主控台檢視發佈至 CloudWatch Logs 的流程日誌記錄**

1. 透過 [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/) 開啟 CloudWatch 主控台。

1. 在導覽窗格中依序選擇 **Logs** (日誌)、**Log groups** (日誌群組)。

1. 選取包含您流程日誌的日誌群組的名稱，以開啟其詳細資訊頁面。

1. 選取包含流程日誌記錄的日誌串流的名稱。如需詳細資訊，請參閱[流量日誌記錄](flow-log-records.md)。

**使用命令列檢視發佈至 CloudWatch Logs 的流程日誌記錄**
+ [get-log-events](https://docs.aws.amazon.com/cli/latest/reference/logs/get-log-events.html) (AWS CLI)
+ [獲得 CWL 日誌事件](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-CWLLogEvent.html) (AWS Tools for Windows PowerShell)

# 搜尋流量日誌記錄
<a name="search-flow-log-records-cwl"></a>

您可以使用 CloudWatch Logs 主控台，搜尋發佈至 CloudWatch Logs 的流程日誌記錄。您可以使用[指標篩選條件](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/FilterAndPatternSyntax.html)來篩選流量日誌記錄。流量日誌記錄是以空格分隔。

**使用 CloudWatch Logs 主控台搜尋流量日誌記錄**

1. 在 [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/) 開啟 CloudWatch 主控台。

1. 在導覽窗格中依序選擇 **Logs** (日誌)、**Log groups** (日誌群組)。

1. 如果您知道要搜尋的網路介面，請選取包含您流程日誌的日誌群組，然後選取日誌串流。或者，選擇 **Search log group** (搜尋日誌群組)。如果您的日誌群組中有許多網路介面，這可能需要一些時間，視您選取的時間範圍而定。

1. 在**篩選事件**下，輸入下面的字串。這會假設流量日誌記錄使用[預設格式](flow-log-records.md#flow-logs-default)。

   ```
   [version, accountid, interfaceid, srcaddr, dstaddr, srcport, dstport, protocol, packets, bytes, start, end, action, logstatus]
   ```

1. 根據需要透過指定欄位值來修改篩選條件。下列範例會依特定來源 IP 地址進行篩選。

   ```
   [version, accountid, interfaceid, srcaddr = 10.0.0.1, dstaddr, srcport, dstport, protocol, packets, bytes, start, end, action, logstatus]
   [version, accountid, interfaceid, srcaddr = 10.0.2.*, dstaddr, srcport, dstport, protocol, packets, bytes, start, end, action, logstatus]
   ```

   下列範例會依目標連接埠、位元組數目，以及是否拒絕流量進行篩選。

   ```
   [version, accountid, interfaceid, srcaddr, dstaddr, srcport, dstport = 80 || dstport = 8080, protocol, packets, bytes, start, end, action, logstatus]
   [version, accountid, interfaceid, srcaddr, dstaddr, srcport, dstport = 80 || dstport = 8080, protocol, packets, bytes >= 400, start, end, action = REJECT, logstatus]
   ```

# 處理 CloudWatch Logs 中的流量日誌記錄
<a name="process-records-cwl"></a>

在處理流量日誌記錄時，您可以您使用其他由 CloudWatch Logs 收集之日誌事件的相同方式。如需有關監控日誌資料與指標篩選條件的詳細資訊，請參閱《Amazon CloudWatch Logs 使用者指南》**中的[使用篩選條件根據日誌事件建立指標](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/MonitoringLogData.html)。

## 範例：建立流量日誌的 CloudWatch 指標篩選條件和警報
<a name="flow-logs-cw-alarm-example"></a>

在此範例中，您有一個 `eni-1a2b3c4d` 的流量日誌。您希望建立警示，在 1 個小時期間內嘗試透過 TCP 連接埠 22 (SSH) 連線到您的執行個體，其中有 10 次或超過 10 次嘗試遭到拒絕時提醒您。首先，您必須建立符合要建立警示之流量模式的指標篩選條件。然後，您可以建立指標篩選條件的警示。

**建立拒絕 SSH 流量的指標篩選條件，及建立篩選條件的警示**

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

1. 在導覽窗格中依序選擇 **Logs** (日誌)、**Log groups** (日誌群組)。

1. 選取日誌群組的核取方塊，然後選擇 **Actions** (動作)、**Create metric filter** (建立指標篩選條件)。

1. 針對 **Filter Pattern** (篩選條件模式)，請輸入下列字串。

   ```
   [version, account, eni, source, destination, srcport, destport="22", protocol="6", packets, bytes, windowstart, windowend, action="REJECT", flowlogstatus]
   ```

1. 對於 **Select Log Data to Test** (選取要測試的日誌資料)，選取網路介面的日誌串流。(選用) 若要檢視符合篩選條件模式的日誌資料行，請選擇 **Test Pattern** (測試模式)。

1. 就緒後，請選擇 **Next** (下一步)。

1. 輸入篩選條件名稱、指標命名空間和指標名稱。將指標值設定為 1。完成後，請選擇 **Next** (下一步)，然後選擇 **Create metric filter** (建立指標篩選條件)。

1. 在導覽窗格中，選擇 **Alarms** (警示)、**All alarms** (所有警示)。

1. 選擇 **Create alarm** (建立警示)。

1. 選取您建立的指標名稱，然後選擇 **選取指標**。

1. 如下設定警示，然後選擇 **Next** (下一步)。
   + 在 **Statistic (統計資料)** 中選擇 **Sum (總和)**。這可確保您擷取的是指定時間段的資料點總數。
   + 在 **Period** (時段) 中選擇 **1 hour** (1 小時)。
   + 在 **只要 TimeSinceLastActive 為…** 中，選擇 **大於/等於**，然後輸入 10 作為閾值。
   + 對於 **Additional configuration** (其他組態)、**Datapoints to alarm** (要警示的資料點)，保留預設值 1。

1. 選擇**下一步**。

1. 對於 **Notification** (通知)，請選取現有的 SNS 主題，或選擇 **Create new topic** (建立新主題) 來建立新主題。選擇**下一步**。

1. 輸入警示的名稱和說明，然後選擇 **Next** (下一步)。

1. 完成預覽警示之後，請選擇 **建立警示**。

# 將流量日誌發佈到 Amazon S3
<a name="flow-logs-s3"></a>

流量日誌現在可將流量日誌資料發佈至 Amazon S3。Amazon S3 (Simple Storage Service) 是一項高度可擴展且持久的物件儲存服務。它旨在從 Web 上的任意位置儲存和擷取任何數量的資料。S3 提供業界領先的持久性和可用性，並內建資料版本控制、加密以及存取控制等功能。

當發佈至 Amazon S3 時，流程日誌資料將發佈至您指定的現有 Amazon S3 儲存貯體。所有受監控之網路介面的流量日誌記錄，都將發佈至存放在該儲存貯體的一系列日誌檔案物件。如果流量日誌擷取 VPC 的資料，該流量日誌將發佈所選擇之 VPC 中所有網路介面的流量日誌記錄。

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

如需了解有關簡化 VPC 流量日誌擷取、流量日誌處理和流量日誌視覺化的詳細資訊，請參閱 AWS 解決方案程式庫中的[使用 OpenSearch 的集中式日誌](https://aws.amazon.com/solutions/implementations/centralized-logging-with-opensearch/)。

如需 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)。

**定價**  
當您將流量日誌發佈到 Amazon S3 時，會套用付費日誌的資料擷取和存檔費用。如需詳細資訊，請開啟 [Amazon CloudWatch 定價](https://aws.amazon.com/cloudwatch/pricing/)，選取 **Logs** (日誌)，然後尋找 **Vended Logs** (付費日誌)。

**Topics**
+ [流量日誌檔](flow-logs-s3-path.md)
+ [流量日誌的 Amazon S3 儲存貯體許可](flow-logs-s3-permissions.md)
+ [搭配 SSE-KMS 使用的必要金鑰政策](flow-logs-s3-cmk-policy.md)
+ [Amazon S3 日誌檔案許可](flow-logs-file-permissions.md)
+ [建立發佈到 Amazon S3 的流量日誌](flow-logs-s3-create-flow-log.md)
+ [使用 Amazon S3 檢視流量日誌記錄](view-flow-log-records-s3.md)

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

 VPC 流量日誌會將進出您 VPC 的 IP 流量資料收集到日誌記錄，然後將這些記錄彙整成日誌檔案，並每隔 5 分鐘將日誌檔案發布至 Amazon S3 儲存貯體。可能會發布多個檔案，每個日誌檔案可能包含先前 5 分鐘內記錄之 IP 流量的部分或全部流量日誌記錄。

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

**日誌檔案格式**

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

**注意**  
如果每個彙總期間採用 Gzip 壓縮的 Parquet 格式之資料小於 100 KB，由於採用 Parquet 檔案記憶體的要求，採用 Parquet 格式儲存的資料可能會比 Gzip 壓縮的純文字檔案佔用更多的空間。

**日誌檔案選項**

您可以選擇指定下列項目。
+ **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/aws-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/aws-service=vpcflowlogs/aws-region=region/year=year/month=month/day=day/hour=hour/
```

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

```
aws_account_id_vpcflowlogs_region_flow_log_id_YYYYMMDDTHHmmZ_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 儲存貯體許可
<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:::amzn-s3-demo-bucket/*",
            "Condition": {
                "StringEquals": {
                    "aws:SourceAccount": "123456789012",
                    "s3:x-amz-acl": "bucket-owner-full-control"
                },
                "ArnLike": {
                    "aws:SourceArn": "arn:aws:logs:us-east-1:123456789012:*"
                }
            }
        },
        {
            "Sid": "AWSLogDeliveryAclCheck",
            "Effect": "Allow",
            "Principal": {
                "Service": "delivery.logs.amazonaws.com"
            },
            "Action": "s3:GetBucketAcl",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket",
            "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 是日誌服務的萬用字元 (\$1) ARN。

請注意，日誌交付服務會呼叫 `HeadBucket` Amazon S3 API 動作，驗證 S3 儲存貯體的存續狀態與位置。您無需授予日誌交付服務呼叫此動作的許可；即使服務無法確認 S3 儲存貯體的存續狀態與位置，仍會持續交付 VPC 流量日誌。不過，CloudTrail 日誌中會針對該次 `HeadBucket` 呼叫，記錄一項 `AccessDenied` 錯誤。

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

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

如果您選擇 SSE-S3，則不需要其他組態。Amazon S3 會處理加密金鑰。

若您選擇 SSE-KMS，則必須使用客戶受管金鑰 ARN。如果您使用金鑰 ID，您可能會在建立流程日誌時遇到 [LogDestination 無法傳遞](flow-logs-troubleshooting.md#flow-logs-troubleshooting-kms-id) 錯誤。此外，您必須更新客戶受管金鑰的金鑰政策，以讓日誌傳遞帳戶能夠寫入您的 S3 儲存貯體。如需有關 SSE-KMS 所需金鑰政策的詳細資訊，請參閱《Amazon CloudWatch Logs 使用者指南》**中的 [Amazon S3 儲存貯體伺服器端加密](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AWS-logs-and-resource-policy.html#AWS-logs-SSE-KMS-S3)。

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

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

# 建立發佈到 Amazon S3 的流量日誌
<a name="flow-logs-s3-create-flow-log"></a>

建立並設定您的 Amazon S3 儲存貯體後，您可以建立網路介面、子網以及 VPC 的流量日誌。

**必要條件**

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

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

****  

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

------

**使用主控台建立流程日誌**

1. 執行以下任意一項：
   + 前往 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) 開啟 Amazon EC2 主控台。在導覽窗格中，選擇 **Network Interfaces (網路介面)**。選取網路介面的核取方塊。
   + 在 [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/) 開啟 Amazon VPC 主控台。在導覽窗格中，選擇 **Your VPCs** (您的 VPC)。選取 VPC 的核取方塊。
   + 在 [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/) 開啟 Amazon VPC 主控台。在導覽窗格中，選擇 **Subnets** (子網)。選取子網路的核取方塊。

1. 選擇 **Actions** (動作)、**Create flow log** (建立流量日誌)。

1. 在 **Filter (篩選條件)** 中指定要記錄的 IP 流量資料類型。
   + **接受** – 僅記錄接受的流量
   + **拒絕** – 僅記錄拒絕的流量
   + **全部** – 記錄已接受和已拒絕的流量。

1. 針對 **Maximum aggregation interval** (最大彙總時間間隔)，選擇擷取流程並彙總至一個流程日誌記錄的最長期間。

1. 針對**目的地**，選擇**傳送至 Amazon S3 儲存貯體**。

1. 針對 **S3 儲存貯體 ARN**，指定現有 Amazon S3 儲存貯體的 Amazon Resource Name (ARN)。您可以選擇包含子資料夾。例如，若要指定名為 `my-logs` 之儲存貯體中的 `my-bucket` 子資料夾，請使用以下 ARN 格式：

   `arn:aws:s3:::my-bucket/my-logs/`

   儲存貯體不可使用 `AWSLogs` 做為子資料夾名稱，因為這是保留項目。

   若您擁有儲存貯體，我們會自動建立資源政策並將它連接至儲存貯體。如需詳細資訊，請參閱[流量日誌的 Amazon S3 儲存貯體許可](flow-logs-s3-permissions.md)。

1. 對於 **Log record format** (日誌記錄格式)，請指定流量日誌記錄的格式。
   + 若要使用預設的流量日誌紀錄格式，請選擇 **AWS default format ( 預設格式)**。
   + 若要建立自訂格式，請選擇 **Custom format** (自訂格式)。針對 **Log format** (日誌格式)，請選擇要包含在流量日誌記錄中的欄位。

1. 如果您想要包含 Amazon ECS 的日誌格式中繼資料，請選取**其他中繼資料**。

1. 對於 **Log file format** (日誌檔案格式)，指定日誌檔案的格式。
   + **Text** – 純文字。此為預設格式。
   + **Parquet** – Apache Parquet 是一種單欄資料格式。與純文字的資料查詢相比，Parquet 格式的資料查詢速度快 10 到 100 倍。採用 Gzip 壓縮的 Parquet 格式的資料佔用的儲存空間比使用 Gzip 壓縮的純文字要少 20％。

1. (選用) 若要使用 Hive 相容的 S3 字首，請選擇 **Hive-compatible S3 prefix** (Hive 相容的 S3 字首)、**Enable** (啟用)。

1. (選用) 若要每小時分割流量日誌，請選擇 **Every 1 hour (60 mins)** (每 1 小時 (60 分鐘))。

1. (選用) 若要新增標籤至流量日誌，請選擇 **Add new tag** (新增新標籤)，並指定標籤金鑰和值。

1. 選擇 **Create flow log** (建立流程日誌)。

**透過命令列建立可發布至 Amazon S3 的流量日誌**

請使用以下其中一個命令：
+ [create-flow-logs](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-flow-logs.html) (AWS CLI)
+ [新的 EC2 流量日誌](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2FlowLog.html) (AWS Tools for Windows PowerShell)

下列 AWS CLI 範例會建立流程日誌，擷取指定 VPC 的所有流量，並將流程日誌交付至指定的 Amazon S3 儲存貯體。`--log-format` 參數會指定流量日誌記錄的自訂格式。

```
aws ec2 create-flow-logs --resource-type VPC --resource-ids vpc-00112233344556677 --traffic-type ALL --log-destination-type s3 --log-destination arn:aws:s3:::flow-log-bucket/custom-flow-logs/ --log-format '${version} ${vpc-id} ${subnet-id} ${instance-id} ${srcaddr} ${dstaddr} ${srcport} ${dstport} ${protocol} ${tcp-flags} ${type} ${pkt-srcaddr} ${pkt-dstaddr}'
```

# 使用 Amazon S3 檢視流量日誌記錄
<a name="view-flow-log-records-s3"></a>

您可以使用 Amazon S3 主控台檢視您的流程日誌記錄。在您建立流程日誌之後，可能需要數分鐘的時間，才能在主控台中看到它。

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

**檢視發佈至 Amazon S3 的流量日誌記錄**

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

1. 選取儲存貯體的名稱，開啟其詳細資訊頁面。

1. 導覽至包含日誌檔的資料夾。例如，*prefix*/AWSLogs/*account\$1id*/vpcflowlogs/*region*/*year*/*month*/*day*/。

1. 選取檔案名稱旁邊的核取方塊，然後選擇 **Download** (下載)。

您也可以使用 Amazon Athena 查詢日誌檔案中的流量日誌記錄。Amazon Athena 是一種互動式查詢服務，可讓您使用標準 SQL 輕鬆分析 Amazon S3 中的資料。如需詳細資訊，請參閱《*Amazon Athena 使用者指南*》中的[查詢 Amazon VPC 流量日誌](https://docs.aws.amazon.com/athena/latest/ug/vpc-flow-logs.html)。

# 將流量日誌發布至 Amazon Data Firehose
<a name="flow-logs-firehose"></a>

流量日誌可以將流量日誌資料直接發佈至 Amazon Data Firehose。Amazon Data Firehose 是一項全受管服務，可收集、轉換並交付即時資料串流至各種 AWS 資料存放區和分析服務。它還能代表您處理資料擷取。

當涉及 VPC 流量日誌時，Firehose 是非常實用的工具。VPC 流量日誌可擷取您 VPC 中傳入和傳出網路界面之 IP 流量資訊。這些資料對於安全監控、效能分析以及遵循法規要求至關重要。然而，管理這種連續的日誌資料流的儲存和處理可能是一項複雜且佔用資源的任務。

透過將 Firehose 與 VPC 流量日誌整合起來，您可以將這些資料交付至偏好的目的地，例如 Amazon S3 或 Amazon Redshift。Firehose 能夠擴展以處理 VPC 流量日誌的擷取、轉換和交付工作，減輕您的營運負擔。這讓您可以專注於分析日誌和取得洞察，而不用擔心基礎設施。

此外，Firehose 提供資料轉換、壓縮和加密等功能，可提升 VPC 流量日誌處理管道的效率和安全性。使用 Firehose 來處理 VPC 流量日誌，可以簡化資料管理，幫助您從網路流量資料中取得洞察。

發布至 Amazon Data Firehose 時，流程日誌資料會以純文字格式發佈至 Amazon Data Firehose 交付串流。

**定價**  
需支付標準擷取和交付費用。如需詳細資訊，請開啟 [Amazon CloudWatch 定價](https://aws.amazon.com/cloudwatch/pricing/)，選取 **Logs** (日誌)，然後尋找 **Vended Logs** (付費日誌)。

**Topics**
+ [跨帳戶交付的 IAM 角色](firehose-cross-account-delivery.md)
+ [建立發布至 Amazon Data Firehose 的流量日誌](flow-logs-firehose-create-flow-log.md)

# 跨帳戶交付的 IAM 角色
<a name="firehose-cross-account-delivery"></a>

發佈至 Amazon Data Firehose 時，您可以選擇與要監控的資源位於同一帳戶 (來源帳戶) 或不同帳戶 (目的地帳戶) 中的交付串流。若要啟用跨帳戶將流程日誌交付至 Amazon Data Firehose，必須在來源帳戶中建立 IAM 角色，並在目的地帳戶中建立 IAM 角色。

**Topics**
+ [來源帳戶角色](#firehose-source-account-role)
+ [目的地帳戶角色](#firehose-destination-account-role)

## 來源帳戶角色
<a name="firehose-source-account-role"></a>

在來源帳戶中，建立授予下列許可的角色。在此範例中，角色的名稱是 `mySourceRole`，但您可以為此角色選擇其他名稱。最後一個陳述式允許目的地帳戶中的角色擔任此角色。條件陳述式可確保此角色僅傳遞至日誌交付服務，而且只有在監控指定的資源時才會傳遞。建立政策時，請使用條件金鑰 `iam:AssociatedResourceARN` 指定要監控的 VPC、網路介面或子網路。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "iam:PassRole",
            "Resource": "arn:aws:iam::123456789012:role/mySourceRole",
            "Condition": {
                "StringEquals": {
                    "iam:PassedToService": "delivery.logs.amazonaws.com"
                },
                "StringLike": {
                    "iam:AssociatedResourceARN": [
                        "arn:aws:ec2:us-east-1:123456789012:vpc/vpc-00112233344556677"
                    ]
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": [
                "logs:CreateLogDelivery",
                "logs:DeleteLogDelivery",
                "logs:ListLogDeliveries",
                "logs:GetLogDelivery"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": "sts:AssumeRole",
            "Resource": "arn:aws:iam::111122223333:role/AWSLogDeliveryFirehoseCrossAccountRole"
        }
    ]
}
```

------

確保此角色具有下列信任政策，以允許日誌交付服務擔任角色。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "delivery.logs.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
```

------

在來源帳戶，使用下列程序建立角色。

**建立來源帳戶角色**

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

1. 在導覽窗格中，選擇**政策**。

1. 選擇 **Create policy** (建立政策)。

1. 在 **Create policy (建立政策)** 頁面上，執行下列動作：

   1. 選擇 **JSON**。

   1. 將此視窗的內容取代為本節開頭的許可政策。

   1. 選擇**下一步**。

   1. 輸入您的政策的名稱，以及可選的描述和標籤，然後選擇 **建立政策**。

1. 在導覽窗格中，選擇 **Roles** (角色)。

1. 選擇 **Create Role** (建立角色)。

1. 對於 **Trusted entity type** (信任的實體類型)，選擇 **Custom trust policy** (自訂信任政策)。對於 **Custom trust policy** (自訂信任政策)，將 `"Principal": {},` 取代為下列內容，以指定日誌交付服務。選擇**下一步**。

   ```
   "Principal": {
      "Service": "delivery.logs.amazonaws.com"
   },
   ```

1. 在 **Add permissions** (新增許可) 頁面上，選取您先前在此程序中建立的政策的核取方塊，然後選擇 **Next** (下一步)。

1. 輸入您角色的名稱，然後選擇性提供描述。

1. 選擇 **Create Role** (建立角色)。

## 目的地帳戶角色
<a name="firehose-destination-account-role"></a>

在目的地帳戶中，建立名稱開頭為 **AWSLogDeliveryFirehoseCrossAccountRole** 的角色。此角色必須授予下列許可。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
          "iam:CreateServiceLinkedRole",
          "firehose:TagDeliveryStream"
      ],
      "Resource": "*"
    }
  ]
}
```

------

請確保此角色具有下列信任政策，可讓您在來源帳戶中建立的角色擔任此角色。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:role/mySourceRole"
            },
            "Action": "sts:AssumeRole"
        }
    ]
}
```

------

透過目的地帳戶，使用下列程序建立角色。

**建立目的地帳戶角色**

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

1. 在導覽窗格中，選擇**政策**。

1. 選擇 **Create policy** (建立政策)。

1. 在 **Create policy (建立政策)** 頁面上，執行下列動作：

   1. 選擇 **JSON**。

   1. 將此視窗的內容取代為本節開頭的許可政策。

   1. 選擇**下一步**。

   1. 輸入您政策的名稱 (開頭為 **AWSLogDeliveryFirehoseCrossAccountRole**)，然後選擇 **Create policy** (建立政策)。

1. 在導覽窗格中，選擇 **Roles** (角色)。

1. 選擇 **Create Role** (建立角色)。

1. 對於 **Trusted entity type** (信任的實體類型)，選擇 **Custom trust policy** (自訂信任政策)。對於 **Custom trust policy** (自訂信任政策)，將 `"Principal": {},` 取代為下列內容，以指定來源帳戶角色。選擇**下一步**。

   ```
   "Principal": {
      "AWS": "arn:aws:iam::source-account:role/mySourceRole"
   },
   ```

1. 在 **Add permissions** (新增許可) 頁面上，選取您先前在此程序中建立的政策的核取方塊，然後選擇 **Next** (下一步)。

1. 輸入您角色的名稱，然後選擇性提供描述。

1. 選擇 **Create Role** (建立角色)。

# 建立發布至 Amazon Data Firehose 的流量日誌
<a name="flow-logs-firehose-create-flow-log"></a>

您可以建立 VPC、子網或網路介面的流量日誌。

**先決條件**
+ 建立目的地 Amazon Data Firehose 交付串流。使用 **Direct Put** 作為來源。如需詳細資訊，請參閱[建立 Amazon Data Firehose 交付串流](https://docs.aws.amazon.com/firehose/latest/dev/basic-create.html)。
+ 建立流程日誌的帳戶必須使用授予下列許可的 IAM 角色，才能將流程日誌發佈至 Amazon Data Firehose。

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

****  

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

------
+ 如果您要將流程日誌發佈至其他帳戶，請如 [跨帳戶交付的 IAM 角色](firehose-cross-account-delivery.md) 所述建立所需的 IAM 角色。

**建立發佈至 Amazon Data Firehose 的流量日誌**

1. 執行以下任意一項：
   + 前往 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) 開啟 Amazon EC2 主控台。在導覽窗格中，選擇 **Network Interfaces (網路介面)**。選取網路介面的核取方塊。
   + 在 [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/) 開啟 Amazon VPC 主控台。在導覽窗格中，選擇 **Your VPCs** (您的 VPC)。選取 VPC 的核取方塊。
   + 在 [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/) 開啟 Amazon VPC 主控台。在導覽窗格中，選擇 **Subnets** (子網)。選取子網路的核取方塊。

1. 選擇 **Actions** (動作)、**Create flow log** (建立流量日誌)。

1. 對於 **Filter** (篩選條件)，請指定要記錄的流量類型。
   + **Accept** (接受) – 僅記錄接受的流量
   + **Reject** (拒絕) – 僅記錄拒絕的流量
   + **All** (全部) – 記錄已接受和已拒絕的流量

1. 針對 **Maximum aggregation interval** (最大彙總時間間隔)，選擇擷取流量並彙總至一個流量日誌記錄的最長期間。

1. 針對 **Destination** (目的地)，選擇下列其中一個選項：
   + **在同一帳戶中傳送至 Amazon Data Firehose** – 交付串流和要監控的資源在同一帳戶中。
   + **在不同帳戶中傳送至 Amazon Data Firehose** – 交付串流和要監控的資源在不同帳戶中。

1. 在 **Amazon Data Firehose** 串流名稱中，選擇您建立的交付串流。

1. [僅限跨帳戶交付] 在**服務存取**欄位中，選擇現有的 [IAM 服務角色進行跨帳戶交付](firehose-cross-account-delivery.md)，該角色需具備發布日誌的許可；也可以選擇**設定許可**，開啟 IAM 主控台來建立服務角色。

1. 對於 **Log record format** (日誌記錄格式)，請指定流量日誌記錄的格式。
   + 若要使用預設的流量日誌紀錄格式，請選擇 **AWS default format ( 預設格式)**。
   + 若要建立自訂格式，請選擇 **Custom format** (自訂格式)。針對 **Log format** (日誌格式)，請選擇要包含在流量日誌記錄中的欄位。

1. 如果您想要包含 Amazon ECS 的日誌格式中繼資料，請選取**其他中繼資料**。

1. (可選) 選擇 **標籤** 將標籤套用至流量日誌。

1. 選擇 **Create flow log** (建立流量日誌)。

**透過命令列建立可發布至 Amazon Data Firehose 的流量日誌**

請使用以下其中一個命令：
+ [create-flow-logs](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-flow-logs.html) (AWS CLI)
+ [新的 EC2 流量日誌](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2FlowLog.html) (AWS Tools for Windows PowerShell)

下列 AWS CLI 範例會建立流程日誌，擷取指定 VPC 的所有流量，並將流程日誌交付至相同帳戶中指定的 Amazon Data Firehose 交付串流。

```
aws ec2 create-flow-logs --traffic-type ALL \
  --resource-type VPC \
  --resource-ids vpc-00112233344556677 \
  --log-destination-type kinesis-data-firehose \
  --log-destination arn:aws:firehose:us-east-1:123456789012:deliverystream/flowlogs_stream
```

下列 AWS CLI 範例會建立流程日誌，擷取指定 VPC 的所有流量，並將流程日誌交付至不同帳戶中指定的 Amazon Data Firehose 交付串流。

```
aws ec2 create-flow-logs --traffic-type ALL \
  --resource-type VPC \
  --resource-ids vpc-00112233344556677 \
  --log-destination-type kinesis-data-firehose \
  --log-destination arn:aws:firehose:us-east-1:123456789012:deliverystream/flowlogs_stream \
  --deliver-logs-permission-arn arn:aws:iam::source-account:role/mySourceRole \ 
  --deliver-cross-account-role arn:aws:iam::destination-account:role/AWSLogDeliveryFirehoseCrossAccountRole
```

由於您已建立流量日至，您可以從為交付串流設定的目的地取得流量日誌資料。

# 使用 Amazon Athena 查詢流量日誌
<a name="flow-logs-athena"></a>

Amazon Athena 是一種互動式查詢服務，可讓您使用標準 SQL 分析 Amazon S3 中的資料，例如流量日誌。您可以將 Athena 與 VPC 流量日誌搭配使用，以快速取得關於流經 VPC 流量的可行見解。例如，您可以識別 Virtual Private Cloud (VPC) 中的哪些資源是最受歡迎者，或識別具有最多拒絕 TCP 連線的 IP 地址。

**選項**
+ 您可以透過產生 CloudFormation 範本來建立可執行的必要 AWS 資源和預先定義查詢，以取得流經 VPC 之流量的洞見，以簡化和自動化 VPC 流程日誌與 Athena 的整合。
+ 您可以使用 Athena 建立自己的查詢。如需詳細資訊，請參閱《*Amazon Athena 使用者指南*》中的「[使用 Amazon Athena 查詢流量日誌](https://docs.aws.amazon.com/athena/latest/ug/vpc-flow-logs.html)」。

**定價**  
您需要針對執行查詢產生標準的 [Amazon Athena 費用](https://aws.amazon.com/athena/pricing/)。Lambda 函數會產生標準的 [AWS Lambda 費用](https://aws.amazon.com/lambda/pricing/)，該函數會按照週期性排程載入新的分割區（當您指定分割區載入頻率，但未指定開始和結束日期時）。

**Topics**
+ [使用主控台產生 CloudFormation 範本](flow-logs-generate-template-console.md)
+ [使用 產生 CloudFormation 範本 AWS CLI](flow-logs-generate-template-cli.md)
+ [執行預先定義的查詢](flow-logs-run-athena-query.md)

# 使用主控台產生 CloudFormation 範本
<a name="flow-logs-generate-template-console"></a>

在第一個流程記錄傳遞至 S3 儲存貯體後，您可以產生 CloudFormation 範本並使用範本建立堆疊，與 Athena 整合。

**要求**
+ 選取的區域必須支援 AWS Lambda 和 Amazon Athena。
+ Amazon S3 儲存貯體必須位於選取的區域。
+ 流量日誌的日誌記錄格式必須包含您想要執行的特定預先定義查詢所用的欄位。

**使用主控台產生範本**

1. 請執行下列其中一項：
   + 開啟 Amazon VPC 主控台。在導覽窗格中，選擇 **Your VPCs** (您的 VPC)，然後選擇您的 VPC。
   + 開啟 Amazon VPC 主控台。在導覽窗格中，選擇 **Subnets** (子網)，然後選取您的子網。
   + 開啟 Amazon EC2 主控台。在導覽窗格中，選擇 **Network Interfaces** (網路介面)，然後選取網路介面。

1. 在 **Flow logs** (流量日誌)索引標籤上，選取發佈至 Amazon S3 的流量日誌，然後選擇 **Actions** (動作)、**Generate Athena integration** (產生 Athena 整合)。

1. 指定分割區載入頻率。如果您選擇 **None** (無)，則必須使用過去的日期來指定分割區的開始日期和結束日期。如果您選擇 **Daily** (每日)、**Weekly** (每週) 或 **Monthly** (每月)，分割區的開始日期和結束日期是選擇性的。如果您沒有指定開始和結束日期，CloudFormation 範本會建立 Lambda 函式，在週期性排程載入新的分割區。

1. 為產生的範本選取或建立 S3 儲存貯體，並為查詢結果選取或建立 S3 儲存貯體。

1. 選擇 **Generate Athena integration** (產生 Athena 整合)。

1. （選擇性）在成功訊息中，選擇連結以瀏覽至您為 CloudFormation 範本指定的儲存貯體，然後自訂範本。

1. 在成功訊息中，選擇**建立 CloudFormation 堆疊**以在 CloudFormation 主控台中開啟**建立堆疊**精靈。產生的 CloudFormation 範本的 URL 會在 **Template (範本)** 區段中指定。完成精靈以建立範本中指定的資源。

**由 CloudFormation 範本建立的資源**
+ Athena 資料庫。資料庫名為 vpcflowlogsathenadatabase<*flow-logs-subscription-id*>。
+ Athena 工作群組。工作群組名稱為 <*flow-log-subscription-id*><*partition-load-frequency*><*start-date*><*end-date*>workgroup
+ 分割的 Athena 資料表，對應至您的流量日誌記錄。資料表名稱為 <*flow-log-subscription-id*><*partition-load-frequency*><*start-date*><*end-date*>。
+ 一組以 Athena 命名的查詢。如需更多詳細資訊，請參閱 [預先定義的查詢](flow-logs-run-athena-query.md#predefined-queries)。
+ Lambda 函數，可將新的磁碟分割載入至表格，依照指定的排程（每日、每週或每月）。
+ 授與執行 Lambda 函數的許可的 IAM 角色。

# 使用 產生 CloudFormation 範本 AWS CLI
<a name="flow-logs-generate-template-cli"></a>

在第一個流量日誌傳遞至 S3 儲存貯體後，您可以產生並使用 CloudFormation 範本來與 Athena 整合。

使用下列 [get-flow-logs-integration-template](https://docs.aws.amazon.com/cli/latest/reference/ec2/get-flow-logs-integration-template.html) 命令產生 CloudFormation 範本。

```
aws ec2 get-flow-logs-integration-template --cli-input-json file://config.json
```

以下是 `config.json` 檔案的範例。

```
{
    "FlowLogId": "fl-12345678901234567",
    "ConfigDeliveryS3DestinationArn": "arn:aws:s3:::my-flow-logs-athena-integration/templates/",
    "IntegrateServices": {
        "AthenaIntegrations": [
            {
                "IntegrationResultS3DestinationArn": "arn:aws:s3:::my-flow-logs-analysis/athena-query-results/",
                "PartitionLoadFrequency": "monthly",
                "PartitionStartDate": "2021-01-01T00:00:00",
                "PartitionEndDate": "2021-12-31T00:00:00"
            }
        ]
    }
}
```

使用下列 [create-stack](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/create-stack.html) 命令，使用產生的 CloudFormation 範本建立一個堆疊。

```
aws cloudformation create-stack --stack-name my-vpc-flow-logs --template-body file://my-cloudformation-template.json
```

# 執行預先定義的查詢
<a name="flow-logs-run-athena-query"></a>

產生的 CloudFormation 範本提供一組預先定義的查詢，您可以執行這些查詢，以便快速取得關於 AWS 網路中流量的有意義洞見分析。建立堆疊並確認已正確建立所有資源之後，您可以執行其中一個預先定義的查詢。

**使用主控台執行預先定義的查詢**

1. 開啟 Athena 主控台。

1. 在左邊導覽中，選擇 **Query Editor (查詢編輯器)**。在 **Workgroups** (工作群組) 下，選取由 CloudFormation 範本建立的工作群組。

1. 選取**已儲存的查詢**，選取一個查詢，視需要修改參數，然後執行查詢。如需可用的預先定義查詢清單，請參閱[預先定義的查詢](#predefined-queries)。

1. 在**查詢結果**下，檢視查詢結果。

## 預先定義的查詢
<a name="predefined-queries"></a>

以下是 Athena 命名查詢的完整清單。產生範本時提供的預先定義查詢，視流量日誌記錄格式中的一部分欄位而定。因此，範本可能未包含所有這些預先定義的查詢。
+ **VpcFlowLogsAcceptedTraffic** - 根據您的安全群組和網路 ACL 所允許的 TCP 連線。
+ **VpcFlowLogsAdminPortTraffic** – 在管理連接埠上服務請求的應用程式所記錄之流量最多的前 10 個 IP 地址。
+ **VpcFlowLogsIPv4Traffic** - 所記錄的 IPv4 流量總位元組數。
+ **VpcFlowLogsIPv6Traffic** - 記錄 IPv6 流量的總位元組數。
+ **VpcFlowLogsRejectedTCPTraffic** - 根據您的安全群組或網路 ACL 拒絕的 TCP 連線。
+ **VpcFlowLogsRejectedTraffic** - 根據您的安全群組或網路 ACL 拒絕的流量。
+ **VpcFlowLogsSshRdpTraffic** - SSH 和 RDP 流量。
+ **VpcFlowLogsTopTalkers** - 記錄流量最多的 50 個 IP 地址。
+ **VpcFlowLogsTopTalkersPacketLevel** - 50 個封包層級的 IP 地址，其記錄的流量最多。
+ **VpcFlowLogsTopTalkingInstances** - 擁有記錄最多流量的 50 個執行個體的 ID。
+ **VpcFlowLogsTopTalkingSubnets** - 擁有記錄最多流量的 50 個子網的 ID。
+ **VpcFlowLogsTopTCPTraffic** - 針對來源 IP 地址所記錄的所有 TCP 流量。
+ **VpcFlowLogsTotalBytesTransferred** - 已記錄最多位元組數的 50 組來源和目的地 IP 地址。
+ **VpcFlowLogsTotalBytesTransferredPacketLevel** - 50 對的封包層級來源和目的地 IP 地址，其中記錄了最多位元組數。
+ **VpcFlowLogsTrafficFrmSrcAddr** - 針對特定來源 IP 地址所記錄的流量。
+ **VpcFlowLogsTrafficToDstAddr** - 針對特定目的地 IP 地址所記錄的流量。

# 疑難排解 VPC 流量日誌
<a name="flow-logs-troubleshooting"></a>

以下是使用流量日誌時可能會遇到的問題。

**Topics**
+ [不完整的流量日誌記錄](#flow-logs-troubleshooting-incomplete-records)
+ [流量日誌作用中，但沒有任何流量日誌記錄或日誌群組](#flow-logs-troubleshooting-no-log-group)
+ ['LogDestinationNotFoundException' 或 'Access Denied for LogDestination' 錯誤](#flow-logs-troubleshooting-not-found)
+ [超過 Amazon S3 儲存貯體原則限制](#flow-logs-troubleshooting-policy-limit)
+ [LogDestination 無法傳遞](#flow-logs-troubleshooting-kms-id)
+ [流量日誌資料大小與帳單資料不相符](#flow-logs-data-size-mismatch)

## 不完整的流量日誌記錄
<a name="flow-logs-troubleshooting-incomplete-records"></a>

**問題**  
您的流量日誌記錄不完整，或已不再發布。

**原因**  
流量日誌可能存在無法交付至 CloudWatch Logs 日誌群組的問題，或日誌中[可能存在 SkipData 項目](flow-logs-records-examples.md#flow-log-example-no-data)。

**解決方案**  
檢查 VPC、子網路或網路介面的**流量日誌**索引標籤。請注意，您無法描述與自己共用的 VPC 或子網路的流量日誌，但可以描述您在共用 VPC 或子網路中自行建立的網路介面的流量日誌。若存在任何錯誤，即會出現在**狀態**欄位中。或者，使用 [describe-flow-logs](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-flow-logs.html) 命令，然後檢查在 `DeliverLogsErrorMessage` 欄位中傳回的值。

以下是狀態可能出現的錯誤值：
+ `Rate limited`：此錯誤可能會在套用 CloudWatch Logs 調節時發生 — 即網路介面的流量日誌記錄數大於可在特定時間範圍內發佈的最大記錄數時。在您到達您可以建立的 CloudWatch Logs 日誌群組數配額時，也可能會發生此錯誤。如需詳細資訊，請參閱《Amazon CloudWatch 使用者指南》**中的 [CloudWatch 服務配額](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_limits.html)。
+ `Access error`：此錯誤可能的發生原因如下：
  + 您流量日誌的 IAM 角色沒有足夠的許可將流量日誌記錄發佈到 CloudWatch 日誌群組。
  + IAM 角色與流量日誌服務沒有信任關係
  + 信任關係不指定流量日誌服務為委託人

  如需詳細資訊，請參閱[用於將流程日誌發佈至 CloudWatch Logs 的 IAM 角色](flow-logs-iam-role.md)。
+ `Unknown error`：流量日誌服務發生內部錯誤。

## 流量日誌作用中，但沒有任何流量日誌記錄或日誌群組
<a name="flow-logs-troubleshooting-no-log-group"></a>

**問題**  
您已建立流量日誌，且 Amazon VPC 或 Amazon EC2 主控台顯示流量日誌狀態為 `Active`。但是，您無法在 Amazon S3 儲存貯體中看到 CloudWatch Logs 或日誌檔案中的任何日誌串流。

**可能原因**
+ 系統仍在建立流量日誌。在某些情況下，在您建立流量日誌之後，可能需要十分鐘以上，才會建立日誌群組及顯示資料。
+ 尚未記錄到任何網路介面的流量。只有在記錄流量時，才會建立 CloudWatch Logs 中的日誌群組。

**解決方案**  
等待幾分鐘建立日誌群組或記錄流量。

## 'LogDestinationNotFoundException' 或 'Access Denied for LogDestination' 錯誤
<a name="flow-logs-troubleshooting-not-found"></a>

**問題**  
當您建立流量記錄檔時，會收到 `Access Denied for LogDestination` 或 `LogDestinationNotFoundException` 錯誤。

**可能原因**
+ 建立可將資料發佈至 Amazon S3 儲存貯體的流量記錄檔時若出現此錯誤，表示找不到指定的 S3 儲存貯體，或儲存貯體政策不允許將記錄檔傳送至該儲存貯體。
+ 建立將資料發佈到 Amazon CloudWatch Logs 的流量記錄檔時若發生此錯誤，表示 IAM 角色不允許將記錄檔傳送到記錄檔群組。

**解決方案**
+ 將資料發佈到 Amazon S3 儲存貯體時，請確保現有的 S3 儲存貯體已有指定的 ARN，而且該 ARN 的格式正確。如果您未擁有 S3 儲存貯體，則請確認[儲存貯體政策](flow-logs-s3-permissions.md)具有所需的許可，並在 ARN 中使用正確的帳戶 ID 和儲存貯體名稱。
+ 發佈至 CloudWatch Logs 時，請確認 [IAM 角色](flow-logs-iam-role.md)具有所需的許可。

## 超過 Amazon S3 儲存貯體原則限制
<a name="flow-logs-troubleshooting-policy-limit"></a>

**問題**  
當您嘗試建立流量日誌時，得到下列錯誤：`LogDestinationPermissionIssueException`。

**可能原因**  
此外，Amazon S3 儲存貯體原則的大小限制為 20 KB。

每次您建立流量日誌發布到 Amazon S3 儲存貯體時，我們都會自動將包括資料夾路徑的指定儲存貯體 ARN 新增到儲存貯體原則的 `Resource` 元素中。

建立多個發布到相同儲存貯體的流量日誌可能造成您超過儲存貯體政策限制。

**解決方案**
+ 移除不再需要的流量記錄檔項目以清除儲存貯體的政策。
+ 以下列內容取代個別的流量日誌項目，將許可授予整個儲存貯體。

  ```
  arn:aws:s3:::bucket_name/*
  ```

  若您授予許可給整個儲存貯體，新的流量日誌訂閱不會將新的許可加入到儲存貯體政策。

## LogDestination 無法傳遞
<a name="flow-logs-troubleshooting-kms-id"></a>

**問題**  
當您嘗試建立流量日誌時，得到下列錯誤：`LogDestination <bucket name> is undeliverable`。

**可能原因**  
使用伺服器端加密搭配 AWS KMS (SSE-KMS) 加密目標 Amazon S3 儲存貯體，儲存貯體的預設加密是 KMS 金鑰 ID。

**解決方案**  
此值必須為 KMS 金鑰 ARN。將預設 S3 加密類型從 KMS 金鑰 ID 變更為 KMS 金鑰 ARN。如需詳細資訊，請參閱*《Amazon Simple Storage Service 使用者指南》*中的[設定預設加密](https://docs.aws.amazon.com/AmazonS3/latest/userguide/default-bucket-encryption.html)。

## 流量日誌資料大小與帳單資料不相符
<a name="flow-logs-data-size-mismatch"></a>

**問題**  
流量日誌的總資料大小與帳單資料報告的大小不相符。

**可能原因**  
流量日誌中可能存在 SKIPDATA 項目。如需 SKIPDATA 項目的說明，請參閱[無任何資料及略過的記錄](flow-logs-records-examples.md#flow-log-example-no-data)。

**解決方案**  
透過查詢日誌中 log-status 欄位的不同取值，確認日誌項目中是否存在 SKIPDATA 項目。

用於檢查 SKIPDATA 的查詢範例：

CW Insights：

```
fields @timestamp, @message, @logStream, @log
| filter interfaceId = 'eni-123'
| stats count(*) by interfaceId, logStatus
| sort by interfaceId, logStatus
```

Athena：

```
SELECT log_status, interface_id, count(1)
FROM vpc_flow_logs
WHERE interface_id IN ('eni-1', 'eni-2', 'eni-3')
GROUP BY log_status, interface_id
```

# VPC 的 CloudWatch 指標
<a name="vpc-cloudwatch"></a>

Amazon VPC 將有關 VPC 的資料發佈至 Amazon CloudWatch。您可以擷取有關您的 VPC 的統計資料，作為一組按順序排列的時間序列資料，亦即*指標*。您可以將指標視為要監控的變數，且資料是該變數在不同時間的值。如需詳細資訊，請參閱 [Amazon CloudWatch 使用者指南](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/)。

**Topics**
+ [NAU 指標與維度](#nau-cloudwatch)
+ [啟用或停用 NAU 監控](#nau-monitoring-enable)
+ [NAU CloudWatch 警示範例](#nau-cloudwatch-alarm-example)

## NAU 指標與維度
<a name="nau-cloudwatch"></a>

[網路地址使用](network-address-usage.md) (NAU) 是套用至虛擬網路中資源的指標，可協助您規劃和監控 VPC 大小。監控 NAU 無需支付任何費用。監控 NAU 很有幫助，因為如果您用盡 VPC 的 NAU 或對等 NAU 配額，則無法啟動新的 EC2 執行個體或佈建新資源，例如 Network Load Balancer、VPC 端點、Lambda 函數、傳輸閘道連接和 NAT 閘道。

如果您已針對 VPC 啟用網路地址使用監控，Amazon VPC 會將與 NAU 相關的指標傳送至 Amazon CloudWatch。VPC 的大小根據 VPC 包含的網路地址使用 (NAU) 單位數量來衡量。

您可以使用這些指標來了解 VPC 成長率、預測 VPC 何時會達到大小限制，或在超過大小閾值時建立警示。

`AWS/EC2` 命名空間包含下列用於監控 NAU 的指標。


| 指標 | 說明 | 
| --- | --- | 
|  NetworkAddressUsage  |  每個 VPC 的 NAU 計數。 **報告準則** [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/vpc/latest/userguide/vpc-cloudwatch.html) **維度**：、 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/vpc/latest/userguide/vpc-cloudwatch.html)  | 
|  NetworkAddressUsagePeered  | VPC 和與之對等的所有 VPC 的 NAU 計數。**報告準則**[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/vpc/latest/userguide/vpc-cloudwatch.html)**維度**：、[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/vpc/latest/userguide/vpc-cloudwatch.html) | 

`AWS/Usage` 命名空間包含下列用於監控 NAU 的指標。


| 指標 | 說明 | 
| --- | --- | 
|  ResourceCount  |  每個 VPC 的 NAU 計數。 **報告準則** [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/vpc/latest/userguide/vpc-cloudwatch.html) **維度**：、 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/vpc/latest/userguide/vpc-cloudwatch.html)  | 
|  ResourceCount  |  VPC 和與之對等的所有 VPC 的 NAU 計數。 **報告準則** [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/vpc/latest/userguide/vpc-cloudwatch.html) **維度**：、 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/vpc/latest/userguide/vpc-cloudwatch.html)  | 
|  ResourceCount  |  VPC 之間 NAU 使用的組合視圖。 **報告準則** [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/vpc/latest/userguide/vpc-cloudwatch.html) **維度**：、 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/vpc/latest/userguide/vpc-cloudwatch.html)  | 
|  ResourceCount  |  對等 VPC 之間 NAU 使用的組合視圖。 **報告準則** [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/vpc/latest/userguide/vpc-cloudwatch.html) **維度**：、 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/vpc/latest/userguide/vpc-cloudwatch.html)  | 

## 啟用或停用 NAU 監控
<a name="nau-monitoring-enable"></a>

若要在 CloudWatch 中檢視 NAU 指標，您必須先啟用要監控的每個 VPC 上的監控功能。

**啟用或停用監控 NAU**

1. 在 [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/) 開啟 Amazon VPC 主控台。

1. 在導覽窗格中，選擇 **Your VPCs** (您的 VPC)。

1. 選取 VPC 的核取方塊。

1. 選取 **Actions** (動作) 和 **Edit VPC settings** (編輯 VPC 設定)。

1. 執行以下任意一項：
   + 若要啟用監控，請選取 **Network mapping units metrics settings** (網路映射單元指標設定) 和 **Enable network address usage metrics** (啟用網路地址使用指標)。
   + 若要停用監控，請清除 **Network mapping units metrics settings** (網路映射單元指標設定) 和 **Enable network address usage metrics** (啟用網路地址使用指標)。

**使用命令列啟用或停用監控**
+ [modify-vpc-attribute](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-vpc-attribute.html) (AWS CLI)
+ [Edit-EC2VpcAttribute](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2VpcAttribute.html) (AWS Tools for Windows PowerShell)

## NAU CloudWatch 警示範例
<a name="nau-cloudwatch-alarm-example"></a>

您可以使用下列 AWS CLI 命令和範例 `.json` 來建立 Amazon CloudWatch 警示和 SNS 通知，以追蹤 VPC 的 NAU 使用率，並以 50,000 個 NAU 作為閾值。此範例要求您先建立 Amazon SNS 主題。如需詳細資訊，請參閱《Amazon Simple Notification Service 開發人員指南》**中的 [Amazon SNS 入門](https://docs.aws.amazon.com/sns/latest/dg/sns-getting-started.html)。

```
aws cloudwatch put-metric-alarm --cli-input-json file://nau-alarm.json
```

以下是 `nau-alarm.json` 的範例。

```
{
    "Namespace": "AWS/EC2",
    "MetricName": "NetworkAddressUsage",
    "Dimensions": [{
        "Name": "Per-VPC Metrics",
        "Value": "vpc-0123456798"
    }],
    "AlarmActions": ["arn:aws:sns:us-west-1:123456789012:my_sns_topic"],
    "ComparisonOperator": "GreaterThanThreshold",
    "Period": 86400,
    "EvaluationPeriods": 1,
    "Threshold": 50000,
    "AlarmDescription": "Tracks NAU utilization of the VPC with 50k NAUs as the threshold",
    "AlarmName": "VPC NAU Utilization",
    "Statistic": "Maximum"
}
```

# 了解帳單和用量報告中的 Amazon VPC 代碼
<a name="vpc-billing-usage-reports"></a>

當您使用 Amazon VPC 時，我們會在您的 AWS 帳單和用量報告中包含相關代碼。檢閱這些代碼有助於了解 Amazon VPC 的成本和使用模式。追蹤和管理您的支出費用對於成本的最佳化至關重要。

下表說明在帳單和用量報告中顯示的 Amazon VPC 代碼。如需帳單和用量報告中使用的區域代碼清單，請參閱 [AWS Region billing codes](https://docs.aws.amazon.com/global-infrastructure/latest/regions/aws-region-billing-codes.html)。

**Topics**
+ [IP 位址管理](#ip-billing-usage-reports)
+ [VPC 端點](#vpce-billing-usage-reports)
+ [傳輸閘道](#tgw-billing-usage-reports)
+ [網路分析](#analysis-billing-usage-reports)
+ [流量鏡射](#mirroring-billing-usage-reports)
+ [VPC Lattice](#lattice-billing-usage-reports)
+ [跨帳戶/區域資源數量](#cross-billing-usage-reports)

**相關資源**
+ [Amazon VPC 定價](https://aws.amazon.com/vpc/pricing/)
+ [AWS PrivateLink 定價](https://aws.amazon.com/privatelink/pricing/)
+ [AWS Transit Gateway 定價](https://aws.amazon.com/transit-gateway/pricing/)
+ [Amazon VPC Lattice 定價](https://aws.amazon.com/vpc/lattice/pricing/)

## IP 位址管理
<a name="ip-billing-usage-reports"></a>


| 代碼 | 說明 | 個單位 | 精細程度 | 
| --- | --- | --- | --- | 
| region-PublicIPv4:InUseAddress | 資源使用公有 IPv4 位址的時間長度。 | 小時 | 每秒 | 
| region-PublicIPv4:IdleAddress | 資源未使用公有 IPv4 位址的時間長度。 | 小時 | 每秒 | 
| region-PublicIPv4:ContiguousBlock | 在 Amazon 提供的連續 IPv4 區塊中使用公有 IPv4 位址的時間長度。 | 小時 | 每小時 | 
| region-IPAddressManager-IP-Hours | IPAM 進階方案管理 IP 位址的時間長度。 | 小時 | 每小時 | 



## VPC 端點
<a name="vpce-billing-usage-reports"></a>


| 代碼 | 說明 | 個單位 | 精細程度 | 
| --- | --- | --- | --- | 
| region-VpcEndpoint-Hours | 介面 VPC 端點的佈建時間長度。 | 小時 | 每小時 | 
| region-VpcEndpoint-Bytes | 介面 VPC 端點處理的資料量。 | GB | 每小時 | 
| region-VpcEndpoint-GWLBE-Hours | Gateway Load Balancer 端點的佈建時間長度。 | 小時 | 每小時 | 
| region-VpcEndpoint-GWLBE-Bytes | Gateway Load Balancer 端點處理的資料量。 | GB | 每小時 | 



## 傳輸閘道
<a name="tgw-billing-usage-reports"></a>


| 代碼 | 說明 | 個單位 | 精細程度 | 
| --- | --- | --- | --- | 
| region-TransitGateway-Hours | 傳輸閘道連接的使用時間。 | 小時 | 每小時 | 
| region-TransitGateway-Bytes | 傳輸閘道處理的資料量。 | GB | 每小時 | 
| region-TGW-Multicast-Consumer-Bytes | 多播接收者執行個體處理的資料量。 | GB | 每小時 | 



## 網路分析
<a name="analysis-billing-usage-reports"></a>


| 代碼 | 說明 | 個單位 | 精細程度 | 
| --- | --- | --- | --- | 
| region-Analysis-Runs | Reachability Analyzer 分析的網路路徑數量。 | 計數 | 每次分析 | 
| region-NetworkInterface-Assessment | 網路存取分析器分析的網路介面數量。 | 計數 | 每次評估 | 



## 流量鏡射
<a name="mirroring-billing-usage-reports"></a>


| 代碼 | 說明 | 個單位 | 精細程度 | 
| --- | --- | --- | --- | 
| region-ENI-Mirror | 為 Traffic Mirroring 設定的網路介面的時間長度。 | 小時 | 每小時 | 



## VPC Lattice
<a name="lattice-billing-usage-reports"></a>


| 代碼 | 說明 | 個單位 | 精細程度 | 
| --- | --- | --- | --- | 
| region-VPCLattice-Service-Hourly | VPC Lattice 服務的執行時間長度。 | 小時 | 每小時 | 
| region-VPCLattice-DataProcessing-Bytes | VPC Lattice 服務處理的資料量。 | GB | 每小時 | 
| region-VPCLattice-RequestCount-Free | 免費的 HTTP 請求與 TCP 連線數量。 | 計數 | 每小時 | 
| region-VpcLattice-Service-Network-Resource-Hours | VPC Lattice 服務網路的執行時間長度。 | 小時 | 每小時 | 



## 跨帳戶/區域資源數量
<a name="cross-billing-usage-reports"></a>


| 代碼 | 說明 | 個單位 | 精細程度 | 
| --- | --- | --- | --- | 
| region-VpcResource-Provider-Bytes | 跨帳戶或區域的提供者資源傳輸的資料量。 | GB | 每小時 | 
| region-VpcResource-Consumer-Bytes | 跨帳戶或區域的取用者資源傳輸的資料量。 | GB | 每小時 | 



# 描述 VPC 網路架構
<a name="vpc-network-inventory"></a>

Amazon VPC 可讓您在 AWS 雲端中定義邏輯隔離的虛擬網路，稱為虛擬私有雲端 (VPC)。建立單獨的 VPC，依工作負載或組織實體來隔離基礎結構。您可以選取 IP 位址範圍、設定路由以及新增網路閘道 (VPC 互連的網路閘道、VPC 與網際網路連線的網路閘道、VPC 與您自己的企業網路連線的網路閘道)，來設定 VPC。您可以在 VPCs 中啟動 AWS 資源，例如 EC2 執行個體或 RDS 執行個體。

下表描述了 VPC 網路的關鍵特性。網路管理員可依據此指引來描述 VPC 網路的架構與組態。掌握這些資訊，管理員便能在內部部署環境或透過其他雲端服務供應商，建立功能等效的網路。


| 特性 | Description | 
| --- | --- | 
| [地理位置](#vpc-network-geographic-location) | Amazon VPC 託管於全球所有 AWS 區域。您可以為您的 VPC 網路選取最接近您客戶的 AWS 資源區域。 | 
| [子網路](#vpc-network-subnets) | 您為 VPCs 定義的子網路會定義網路邊界，並判斷 AWS 資源的 IP 地址。您可以在多個可用區域中新增子網路，提高資源的可用性。 | 
| [網路連線](#vpc-network-connectivity) | 您連接至 VPC 或子網路的閘道，可提供 VPC 網路與其他網路 (例如其他 VPC 或子網路、網際網路或內部部署網路) 之間的連線能力。 | 
| [安全控制項](#vpc-network-security-controls) | 您為 VPC 建立的安全群組會控管進出相關聯資源 (例如運算資源、資料庫資源與負載平衡器) 的流量。每個子網路皆具備網路 ACL，可控管進出子網路的流量。 | 
| [流量管理](#vpc-network-traffic-management) | 路由規則可控管子網路、VPC 與外部位置之間的流量傳輸。Elastic Load Balancing 提供的負載平衡器會將傳入流量分配至多個目標，例如 EC2 執行個體、容器與 Lambda 函式。 | 

## 地理位置
<a name="vpc-network-geographic-location"></a>

Amazon VPC 適用於全球每個 AWS 區域。各個 區域為獨立的地理區域。當您在接近大多數使用者的區域中為資源建立 VPC 時，可降低網路延遲。

您可以使用 Amazon EC2 全域檢視功能，透過圖形化使用者介面列出所有區域中的 VPC (目前沒有等效的程式設計介面)。使用 Amazon VPC 主控台、 AWS API 和 AWS 命令列界面，您必須個別列出每個區域的 VPCs 和 VPC 資源。

**為什麼這很重要**  
確認 VPC 的部署位置後，您可根據需求決定是否在相同或不同位置設定功能等效的網路環境。

**跨所有區域取得 VPC 的摘要資訊**

1. 前往 [https://console.aws.amazon.com/ec2globalview/home](https://console.aws.amazon.com/ec2globalview/home) 開啟 Amazon EC2 全域檢視主控台。

1. 在**區域總管**索引標籤的**摘要**下，查看 **VPC** 的資源數量，其中包括 VPC 數量與區域數量。這包括代表您 AWS 建立的預設 VPCs，以及您建立的非預設 VPCs。點選帶有底線文字，即可查看 VPC 數量在各區域的分佈情況。如果某個區域只有一個 VPC，該 VPC 很可能是該區域的預設 VPC。

1. 在**全域搜尋**索引標籤上，選取用戶端篩選條件**資源類型 = Vpc**。您可以透過指定區域或標籤進一步篩選結果。

**使用 取得區域中VPCs AWS CLI**  
使用如下 [describe-vpcs](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-vpcs.html) 命令。您必須在每個您有 VPC 的區域中執行此命令。`--query` 參數僅包含輸出中的 VPC ID。您可以視需要包含其他欄位。

```
aws ec2 describe-vpcs \
    --region us-east-2 \
    --query "Vpcs[*].VpcId"
```

每個區域均附帶預設 VPC。如果不使用預設 VPC，可新增如下篩選條件，將這些 VPC 從結果中排除。

```
--filters Name=is-default,Values=false
```

## 子網路
<a name="vpc-network-subnets"></a>

子網路是 VPC 中的邏輯網路邊界。建立子網路時，需指派 IP 位址區塊。在子網路中啟動的資源，將被指派該子網路 IP 位址區塊中的 IP 位址。IP 位址使資源能夠透過區域網路或網際網路相互通訊。

Amazon VPC 主控台中的資源地圖會以視覺化方式呈現 VPC 內子網路的分佈情況。

**重要性說明**  
子網路可使網路管理員實作安全邊界，並控管不同應用程式層之間的流量。記錄子網路的 IP 位址有助確保功能等效網路中的資源，能與 VPC 網路中相同外部用戶端或應用程式維持通訊。

**透過資源地圖檢視 VPC 的子網路**

1. 在 [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/) 開啟 Amazon VPC 主控台。

1. 在導覽窗格中，選擇 **VPCs** (VPC)。

1. 選取 VPC 的核取方塊。

1. 選擇**資源地圖**索引標籤。

1. 在 VPC 窗格中，選擇**顯示詳細資訊**。**子網路**窗格會列出 VPC 中的所有子網路，也會顯示各子網路的 IP 位址範圍。將滑鼠游標暫留在子網路上，可反白顯示其相關聯的路由表與網路連線。如需詳細資訊，請按一下連結以開啟子網路詳細資訊頁面。

**使用 描述 VPC 的子網路 AWS CLI**  
使用如下 [describe-subnets](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-subnets.html) 命令。`--filters` 參數會將搜尋範圍限定於描述指定 VPC 的子網路。`--query` 參數僅包含輸出中的指定欄位。您可以視需要包含其他欄位。

```
aws ec2 describe-subnets \
    --filters Name=vpc-id,Values=vpc-1234567890abcdef0 \
    --query Subnets[*].[SubnetId,AvailabilityZoneId,CidrBlock,Ipv6CidrBlockAssociationSet[0].Ipv6CidrBlock] \
    --output table
```

以下為範例輸出。這些欄位分別是子網路 ID、可用區域 ID、IPv4 位址範圍，以及首個 IPv6 位址範圍 (如有)。

```
---------------------------------------------------------------------------------------
|                                   DescribeSubnets                                   |
+---------------------------+-----------+----------------+----------------------------+
|  subnet-0d2d1b81e0bc9c6d4 |  usw2-az1 |  10.0.144.0/20 |  2600:1f14:1e6e:a003::/64  |
|  subnet-0e01d500780bb7468 |  usw2-az1 |  10.0.16.0/20  |  2600:1f14:1e6e:a001::/64  |
|  subnet-0eb17d85f5dfd33b1 |  usw2-az2 |  10.0.128.0/20 |  2600:1f14:1e6e:a002::/64  |
|  subnet-0e990c67809773b19 |  usw2-az2 |  10.0.0.0/20   |  2600:1f14:1e6e:a000::/64  |
+---------------------------+-----------+----------------+----------------------------+
```

## 網路連線
<a name="vpc-network-connectivity"></a>

Amazon VPC 提供的連線選項，能讓您建立囊括多個帳戶、多個區域與遠端網路中 VPC 的網路。

您可以透過 Amazon VPC 主控台中的資源地圖，探索 VPC 是否使用網際網路閘道、僅限輸出網際網路閘道、NAT 閘道或閘道 VPC 端點。資源地圖不會顯示任何正在使用的傳輸閘道、對等互連、虛擬私有閘道或其他類型 VPC 端點。若要取得某個 VPC 的所有閘道與對等互連的完整清單，您可以使用主控台、API 或命令列介面逐一描述。

**重要性說明**  
了解 VPC 網路提供的連線能力後，您可確保功能等效網路中的資源，能與相同的本機及遠端資源維持通訊。

**透過資源地圖檢視 VPC 的網路連線**

1. 在 [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/) 開啟 Amazon VPC 主控台。

1. 在導覽窗格中，選擇 **VPCs** (VPC)。

1. 選取 VPC 的核取方塊。

1. 選擇**資源地圖**索引標籤。

1. 在 VPC 窗格中，選擇**顯示詳細資訊**。**網路連線**窗格會列出所有網際網路閘道、僅限輸出網際網路閘道、NAT 閘道與閘道 VPC 端點。如果資源類型不明確，將滑鼠游標暫留在網路連線的連結圖示上，即可檢視對應的 URL。此 URL 是該資源在主控台中的連結，包含資源類型與資源 ID (例如 internetGatewayId=igw-0123456780abcdef)。

**使用 取得 VPCs的網路連線 AWS CLI**

1. 使用如下 [describe-internet-gateways](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-internet-gateways.html) 命令，取得指定區域的網際網路閘道。`--query` 參數僅包含輸出中的指定欄位。您可以視需要包含其他欄位。

   ```
   aws ec2 describe-internet-gateways \
       --region us-east-2 \
       --query InternetGateways[*].[Attachments[0].VpcId,InternetGatewayId] \
       --output table
   ```

   以下為範例輸出。這些欄位顯示 VPC ID 與網際網路閘道 ID。

   ```
   ----------------------------------------------------
   |             DescribeInternetGateways             |
   +------------------------+-------------------------+
   |  None                  |  igw-04c61dba10EXAMPLE  |
   |  vpc-0bf4c2739bEXAMPLE |  igw-09737a4029EXAMPLE  |
   |  vpc-060415a18fEXAMPLE |  igw-0c562bd22aEXAMPLE  |
   |  vpc-0ea9d41094EXAMPLE |  igw-0e06f7033dEXAMPLE  |
   |  vpc-03b86de356EXAMPLE |  igw-0a9ff72d05EXAMPLE  |
   +------------------------+-------------------------+
   ```

1. 使用如下 [describe-egress-only-internet-gateways](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-egress-only-internet-gateways.html) 命令，取得指定區域的僅限輸出網際網路閘道。`--query` 參數僅包含輸出中的指定欄位。您可以視需要包含其他欄位。

   ```
   aws ec2 describe-egress-only-internet-gateways \
       --region us-east-2 \
       --query EgressOnlyInternetGateways[*].[Attachments[0].VpcId,EgressOnlyInternetGatewayId] \
       --output table
   ```

   以下為範例輸出。這些欄顯示 VPC ID 與僅限輸出網際網路閘道 ID。

   ```
   -----------------------------------------------------
   |        DescribeEgressOnlyInternetGateways         |
   +------------------------+--------------------------+
   |  vpc-060415a18fEXAMPLE |  eigw-0b8ca558acEXAMPLE  |
   +------------------------+--------------------------+
   ```

1. 使用如下 [describe-nat-gateways](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-nat-gateways.html) 命令，取得指定區域的 NAT 閘道。`--query` 參數僅包含輸出中的指定欄位。您可以視需要包含其他欄位。

   ```
   aws ec2 describe-nat-gateways \
       --region us-east-2 \
       --query NatGateways[*].[VpcId,NatGatewayId,SubnetId] \
       --output table
   ```

   以下為範例輸出。這些欄位顯示 VPC ID、NAT 閘道 ID 與子網路 ID。

   ```
   ---------------------------------------------------------------------------------
   |                              DescribeNatGateways                              |
   +------------------------+-------------------------+----------------------------+
   |  vpc-060415a18fEXAMPLE |  nat-026316334aEXAMPLE  |  subnet-0eb17d85f5EXAMPLE  |
   |  vpc-060415a18fEXAMPLE |  nat-0f08bc5f52EXAMPLE  |  subnet-0d2d1b81e0EXAMPLE  |
   +------------------------+-------------------------+----------------------------+
   ```

1. 使用如下 [describe-transit-gateway-vpc-attachments](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-transit-gateway-vpc-attachments.html) 命令，取得指定區域的傳輸閘道 VPC 連接項目。`--query` 參數僅包含輸出中的指定欄位。您可以視需要包含其他欄位。

   ```
   aws ec2 describe-transit-gateway-vpc-attachments \
       --region us-east-2 \
       --query TransitGatewayVpcAttachments[*].[VpcId,TransitGatewayId,length(SubnetIds[])] \
       --output table
   ```

   以下為範例輸出。這些欄位顯示 VPC ID、傳輸閘道 ID 與子網路數量。

   ```
   ---------------------------------------------------------
   |         DescribeTransitGatewayVpcAttachments          |
   +------------------------+-------------------------+----+
   |  vpc-0bf4c2739bEXAMPLE |  tgw-055dc4e47bEXAMPLE  |  4 |
   |  vpc-0ea9d41094EXAMPLE |  tgw-055dc4e47bEXAMPLE  |  2 |
   +------------------------+-------------------------+----+
   ```

1. 使用如下 [describe-vpc-peering-connections](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-vpc-peering-connections.html) 命令，取得指定區域中 VPC 的對等連線。`--query` 參數僅包含輸出中的指定欄位。您可以視需要包含其他欄位。

   ```
   aws ec2 describe-vpc-peering-connections \
       --region us-east-2 \
       --query VpcPeeringConnections[*].[AccepterVpcInfo.VpcId,RequesterVpcInfo.VpcId] \
       --output table
   ```

   以下為範例輸出。這些欄位顯示接受者 VPC ID、接受者 VPC 擁有者、申請者 VPC ID 與申請者 VPC 擁有者。

   ```
   ------------------------------------------------------------------------------------
   |                          DescribeVpcPeeringConnections                           |
   +------------------------+---------------+------------------------+----------------+
   |  vpc-0ea9d41094EXAMPLE |  123456789012 |  vpc-03b86de356EXAMPLE |  123456789012  |
   +------------------------+---------------+------------------------+----------------+
   ```

1. 使用如下 [describe-vpn-gateways](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-vpn-gateways.html) 命令，取得指定區域的虛擬私有閘道。`--query` 參數僅包含輸出中的指定欄位。您可以視需要包含其他欄位。

   ```
   aws ec2 describe-vpn-gateways \
       --region us-east-2 \
       --query VpnGateways[*].[VpcAttachments[0].VpcId,VpnGatewayId] \
       --output table
   ```

   以下為範例輸出。這些欄位顯示 VPC ID 與虛擬私有閘道 ID。

   ```
   ----------------------------------------------------
   |                DescribeVpnGateways               |
   +------------------------+-------------------------+
   |  vpc-0bf4c2739bEXAMPLE |  vgw-0cb3226c4aEXAMPLE  |
   +------------------------+-------------------------+
   ```

1. 使用如下 [describe-vpc-endpoints](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-vpc-endpoints.html) 命令，取得指定區域的 VPC 端點。`--query` 參數僅包含輸出中的指定欄位。您可以視需要包含其他欄位。

   ```
   aws ec2 describe-vpc-endpoints \
       --region us-east-2 \
       --query 'VpcEndpoints[*].[VpcId,VpcEndpointType,ServiceName||ServiceNetworkArn||ResourceConfigurationArn]' \
       --output table
   ```

   以下為範例輸出。第一個欄位顯示 VPC ID，第二個欄位顯示 VPC 端點類型。第三個欄位取決於端點類型，顯示的內容可能是服務名稱、資源組態 ARN 或服務網路 ARN。

   ```
   ----------------------------------------------------------------------------------------------------------------------------------------
   |                                                         DescribeVpcEndpoints                                                         |
   +------------------------+-----------------+-------------------------------------------------------------------------------------------+
   |  vpc-060415a18fcc9afde |  Interface      |  com.amazonaws.vpce.us-west-2.vpce-svc-007832a03d60fc387                                  |
   |  vpc-060415a18fcc9afde |  Interface      |  com.amazonaws.vpce.us-west-2.vpce-svc-007832a03d60fc387                                  |
   |  vpc-0bf4c2739bc05a694 |  Gateway        |  com.amazonaws.us-west-2.s3                                                               |
   |  vpc-0ea9d410947d27b7d |  Interface      |  com.amazonaws.us-west-2.logs                                                             |
   |  vpc-0bf4c2739bc05a694 |  Resource       |  arn:aws:vpc-lattice:us-east-2:123456789012:resourceconfiguration/rcfg-07129f3acded87625  |
   |  vpc-0bf4c2739bc05a694 |  ServiceNetwork |  arn:aws:vpc-lattice:us-east-2:123456789012:servicenetwork/sn-0808d1748faee0c1e           |
   |  vpc-0bf4c2739bc05a694 |  ServiceNetwork |  arn:aws:vpc-lattice:us-east-2:123456789012:servicenetwork/sn-0808d1748faee0c1e           |
   +------------------------+-----------------+-------------------------------------------------------------------------------------------+
   ```

## 安全控制項
<a name="vpc-network-security-controls"></a>

Amazon VPC 提供的安全控制項會決定對 VPC 的網路存取，以及 VPC 中部署的資源。

**重要性說明**  
確定允許抵達子網路與資源的傳入流量，以及允許離開子網路與資源的傳出流量後，即可規劃功能等效網路所需的防火牆規則。

**Topics**
+ [Security groups (安全群組)](#vpc-network-security-groups)
+ [網路 ACL](#vpc-network-acls-subnet)

### Security groups (安全群組)
<a name="vpc-network-security-groups"></a>

安全群組允許在資源層級控管特定的傳入與傳出流量。安全群組是控制存取 VPC 內資源的主要機制。

**取得 VPC 的安全群組**  
使用如下 [describe-security-groups](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-security-groups.html) 命令，顯示指定 VPC 的安全群組。

```
aws ec2 describe-security-groups \
    --filters Name=vpc-id,Values=vpc-1234567890abcdef0 \
    --query SecurityGroups[*].GroupId
```

**取得安全群組的傳入規則**  
使用如下 [describe-security-group-rules](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-security-group-rules.html) 命令，顯示指定安全群組的規則，其中 `IsEgress` 為 `false`。

```
aws ec2 describe-security-group-rules \
    --filters Name=group-id,Values=sg-0abcdef1234567890 \
    --query 'SecurityGroupRules[?IsEgress==`false`]'
```

**取得安全群組的傳出規則**  
使用如下 [describe-security-group-rules](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-security-group-rules.html) 命令，顯示指定安全群組的規則，其中 `IsEgress` 為 `true`。

```
aws ec2 describe-security-group-rules \
    --filters Name=group-id,Values=sg-0abcdef1234567890 \
    --query 'SecurityGroupRules[?IsEgress==`true`]'
```

### 網路 ACL
<a name="vpc-network-acls-subnet"></a>

網路存取控制清單 (ACL) 會允許或拒絕子網路層級的特定傳入與傳出流量。您可以將網路 ACL 用作深度防禦措施，因應資源部署時未設定正確安全群組的情況。

**取得子網路的網路 ACL**  
使用如下 [describe-network-acls](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-network-acls.html) 命令，顯示指定 VPC 的網路 ACL 及其子網路關聯。

```
aws ec2 describe-network-acls \
    --filters Name=vpc-id,Values=vpc-1234567890abcdef0 \
    --query "NetworkAcls[*].{ID:NetworkAclId,Subnets:Associations[].SubnetId}"
```

**取得網路 ACL 的傳入規則**  
使用如下 [describe-network-acls](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-network-acls.html) 命令，顯示指定網路 ACL 的規則，其中 `Egress` 為 `false`。

```
aws ec2 describe-network-acls \
    --network-acl-ids acl-0abcdef1234567890 \
    --query 'NetworkAcls[*].Entries[?Egress==`false`]'
```

**取得網路 ACL 的傳出規則**  
使用如下 [describe-network-acls](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-network-acls.html) 命令，顯示指定網路 ACL 的規則，其中 `Egress` 為 `true`。

```
aws ec2 describe-network-acls \
    --network-acl-ids acl-0abcdef1234567890 \
    --query 'NetworkAcls[*].Entries[?Egress==`true`]'
```

## 流量管理
<a name="vpc-network-traffic-management"></a>

有效的流量管理需結合路由表提供的網路層級路由決策，以及負載平衡機制提供的應用程序層級分配策略。

**重要性說明**  
網路管理員必須設計子網路、路由、DNS 解析與負載平衡機制，在維持安全邊界與效能需求的同時，實現流量傳輸最佳化。記錄 VPC 網路中這些元件的組態有助確保功能等效網路中的資源，能與 VPC 網路中相同外部用戶端或裝置維持通訊。

**Topics**
+ [路由表](#vpc-network-traffic-routing)
+ [DHCP 選項集](#vpc-network-dhcp-options)
+ [負載平衡器](#vpc-network-traffic-elb)

### 路由表
<a name="vpc-network-traffic-routing"></a>

路由表會決定網路流量如何跨子網路、VPC、內部部署網路與網際網路等網路邊界傳輸。

Amazon VPC 主控台中的資源地圖提供 VPC 路由表的視覺化呈現。

**透過資源地圖檢視 VPC 的路由表**

1. 在 [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/) 開啟 Amazon VPC 主控台。

1. 在導覽窗格中，選擇 **VPCs** (VPC)。

1. 選取 VPC 的核取方塊。

1. 選擇**資源地圖**索引標籤。

1. **路由表**窗格會列出 VPC 的所有路由表。將滑鼠游標暫留在路由表上，可反白顯示其相關聯的子網路與網路連線。如需詳細資訊，請按一下連結以開啟路由表詳細資訊頁面。

**描述路由表**  
使用 [describe-route-tables](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-route-tables.html) 命令，描述指定 VPC 的路由表及其子網路關聯。

```
aws ec2 describe-route-tables \
    --filters Name=vpc-id,Values=vpc-1234567890abcdef0 \
    --query "RouteTables[*].{ID:RouteTableId,Subnets:Associations[].SubnetId}"
```

**取得路由表的路由**  
使用 [describe-route-tables](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-route-tables.html) 命令，描述指定路由表的路由。

```
aws ec2 describe-route-tables \
    --route-table-ids rtb-02ec01715bEXAMPLE \
    --query RouteTables[*].Routes
```

### DHCP 選項集
<a name="vpc-network-dhcp-options"></a>

您的 VPC 具備 DHCP 選項集，可用於設定各種網路。例如，您可以設定自訂 DNS 伺服器，讓 EC2 執行個體可以透過現有的 DNS 基礎結構解析內部主機名稱。如需詳細資訊，請參閱[DHCP 選項集概念](DHCPOptionSetConcepts.md)。

**描述 VPC 的 DHCP 選項**  
使用 [describe-dhcp-options](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-dhcp-options.html) 命令，描述指定的 DHCP 選項。此範例也可使用 [describe-vpcs](https://docs.aws.amazon.com/cli/latest/reference//ec2/describe-vpcs.html) 命令，取得指定 VPC 的 DHCP 選項 ID。

```
aws ec2 describe-dhcp-options \
    --dhcp-options-id "$(aws ec2 describe-vpcs \
        --vpc-id vpc-1234567890abcdef0 \   
        --query Vpcs[].DhcpOptionsId --output text)"
```

以下是使用預設 DHCP 選項的 VPC 輸出範例。

```
{
    "DhcpOptions": [
        {
            "OwnerId": "415546850671",
            "Tags": [],
            "DhcpOptionsId": "dopt-1234567890abcdef0",
            "DhcpConfigurations": [
                {
                    "Key": "domain-name",
                    "Values": [
                        {
                            "Value": "us-west-2.compute.internal"
                        }
                    ]
                },
                {
                    "Key": "domain-name-servers",
                    "Values": [
                        {
                            "Value": "AmazonProvidedDNS"
                        }
                    ]
                }
            ]
        }
    ]
}
```

### 負載平衡器
<a name="vpc-network-traffic-elb"></a>

負載平衡機制會將來自用戶端的傳入流量分配至多個目標。負載平衡器會監控目標的運作狀態，也會自動從流量分配中移除運作狀態不良的目標，確保僅使用運作狀態良好的目標。這有助於提高應用程式的可用性與效能，最佳化資源使用率。如需詳細資訊，請參閱《[Elastic Load Balancing 使用者指南](https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/)》。

**描述負載平衡器**  
使用 [describe-load-balancers](https://docs.aws.amazon.com/cli/latest/reference/elbv2/describe-load-balancers.html) 命令，顯示指定 VPC 的負載平衡器。

```
aws elbv2 describe-load-balancers \
    --query 'LoadBalancers[?VpcId==`vpc-1234567890abcdef0`].LoadBalancerArn'
```

## 相關資源
<a name="vpc-network-related-resources"></a>

以下是 VPC 網路中可能正在使用的選用服務或功能：
+ [Direct Connect](https://docs.aws.amazon.com/directconnect/latest/UserGuide/)
+ [AWS Network Firewall](https://docs.aws.amazon.com/network-firewall/latest/developerguide/)
+ [IPAM](https://docs.aws.amazon.com/vpc/latest/ipam/)
+ [流量鏡射](https://docs.aws.amazon.com/vpc/latest/mirroring/)
+ [VPC 流程日誌](https://docs.aws.amazon.com/vpc/latest/userguide/flow-logs.html)