

# 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` フィールドの列見出しは、単なる `bytes` ではなく `event_netflow_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
```