

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

# 建立並查詢 Netflow 日誌的資料表
<a name="querying-network-firewall-logs-sample-netflow-logs-table"></a>

1. 修改下列範例 DDL 陳述式，以符合 Netflow 日誌的結構。您可能需要更新陳述式，以加入最新版本日誌的資料欄。如需詳細資訊，請參閱《AWS Network Firewall 開發人員指南》**中的[防火牆日誌內容](https://docs.aws.amazon.com/network-firewall/latest/developerguide/firewall-logging.html#firewall-logging-contents)。

   ```
   CREATE EXTERNAL TABLE network_firewall_netflow_logs (
     firewall_name string,
     availability_zone string,
     event_timestamp string,
     event struct<
       timestamp:string,
       flow_id:bigint,
       event_type:string,
       src_ip:string,
       src_port:int,
       dest_ip:string,
       dest_port:int,
       proto:string,
       app_proto:string,
       tls_inspected:boolean,
       netflow:struct<
         pkts:int,
         bytes:bigint,
         start:string,
         `end`:string,
         age:int,
         min_ttl:int,
         max_ttl:int,
         tcp_flags:struct<
           syn:boolean,
           fin:boolean,
           rst:boolean,
           psh:boolean,
           ack:boolean,
           urg:boolean
           >
         >
       >
   )
   ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe' 
   LOCATION 's3://amzn-s3-demo-bucket/path_to_netflow_logs_folder/';
   ```

1. 修改 `LOCATION` 子句，以在 Amazon S3 中指定日誌的資料夾。

1. 在 Athena 查詢編輯器中，執行 `CREATE TABLE` 查詢。查詢完成之後，Athena 會註冊 `network_firewall_netflow_logs` 資料表，讓其所指向的資料可供您查詢。

## 查詢範例
<a name="querying-network-firewall-logs-netflow-log-sample-query"></a>

本節中的範例 Netflow 日誌查詢會篩選執行 TLS 檢查的事件。

查詢會使用別名來建立輸出資料欄標題，以顯示資料欄所屬的 `struct`。例如，`event.netflow.bytes` 欄位的資料欄標題是 `event_netflow_bytes` 而不只是 `bytes`。若要進一步自訂資料欄名稱，您可以依照您的偏好設定修改別名。例如，您可以使用底線或其他分隔符號來分隔 `struct` 名稱和欄位名稱。

請記得根據您的資料表定義和查詢結果中要包含的欄位來修改資料欄名稱和 `struct` 參考。

```
SELECT
  event.src_ip AS event_src_ip,
  event.dest_ip AS event_dest_ip,
  event.proto AS event_proto,
  event.app_proto AS event_app_proto,
  event.tls_inspected AS event_tls_inspected,
  event.netflow.pkts AS event_netflow_pkts,
  event.netflow.bytes AS event_netflow_bytes,
  event.netflow.tcp_flags.syn AS event_netflow_tcp_flags_syn 
FROM network_firewall_netflow_logs 
WHERE event.tls_inspected = true
```