

# AWS Global Accelerator フローログをクエリする
<a name="querying-global-accelerator-flow-logs"></a>

AWS Global Accelerator を使用して、ネットワークトラフィックを AWS グローバルネットワーク経由で最適なエンドポイントに転送するアクセラレーターを作成できます。Global Accelerator の詳細については、「[AWS Global Accelerator とは?](https://docs.aws.amazon.com/global-accelerator/latest/dg/what-is-global-accelerator.html)」を参照してください。

Global Accelerator フローログは、アクセラレーター内のネットワークインターフェイス間で送受信される IP アドレストラフィックに関する情報の取得を可能にします。フローログデータは Amazon S3 にパブリッシュされ、そこでデータを取得して表示できます。詳細については、「[AWS Global Accelerator のフローログ](https://docs.aws.amazon.com/global-accelerator/latest/dg/monitoring-global-accelerator.flow-logs.html)」を参照してください。

Athena を使用して、Amazon S3 内の Global Accelerator フローログの場所を指定するテーブルを作成することによって、フローログをクエリすることができます。

**Global Accelerator フローログのテーブルを作成する**

1. 以下の DDL ステートメントをコピーして Athena コンソール内に貼り付けます。このクエリでは、*ROW FORMAT DELIMITED* を指定し、[SerDe](serde-reference.md) の指定は省略します。この場合、クエリでは [`LazySimpleSerDe`](lazy-simple-serde.md) が使用されます。このクエリでは、フィールドはスペースで終了します。

   ```
   CREATE EXTERNAL TABLE IF NOT EXISTS aga_flow_logs (
     version string,
     account string,
     acceleratorid string,
     clientip string,
     clientport int,
     gip string,
     gipport int,
     endpointip string,
     endpointport int,
     protocol string,
     ipaddresstype string,
     numpackets bigint,
     numbytes int,
     starttime int,
     endtime int,
     action string,
     logstatus string,
     agasourceip string,
     agasourceport int,
     endpointregion string,
     agaregion string,
     direction string,
     vpc_id string,
     reject_reason string
   )
   PARTITIONED BY (dt string)
   ROW FORMAT DELIMITED
   FIELDS TERMINATED BY ' '
   LOCATION 's3://amzn-s3-demo-bucket/prefix/AWSLogs/account_id/globalaccelerator/region/'
   TBLPROPERTIES ("skip.header.line.count"="1");
   ```

1. ログデータが含まれる Amazon S3 バケットをポイントするように `LOCATION` 値を変更します。

   ```
   's3://amzn-s3-demo-bucket/{{prefix}}/AWSLogs/{{account_id}}/globalaccelerator/{{region_code}}/'
   ```

1. Athena コンソールでクエリを実行します。クエリが完了すると、Athena が `aga_flow_logs` テーブルを登録し、そのデータをクエリに使用できるようにします。

1. 次のサンプルクエリのように、パーティションを作成してデータを読み取ります。このクエリは、指定日の 1 つのパーティションを作成します。日付と場所のプレースホルダーを置き換えます。

   ```
   ALTER TABLE aga_flow_logs
   ADD PARTITION (dt={{'YYYY-MM-dd}}')
   LOCATION 's3://amzn-s3-demo-bucket/{{prefix}}/AWSLogs/{{account_id}}/globalaccelerator/{{region_code}}/{{YYYY}}/{{MM}}/{{dd}}';
   ```

## AWS Global Accelerator フローログのクエリ例
<a name="querying-global-accelerator-flow-logs-examples"></a>

**Example – 特定のエッジロケーションを通過するリクエストをリストする**  
以下のクエリ例は、LHR エッジロケーションを通過するリクエストをリストします。`LIMIT` 演算子を使用すると、一度にクエリするログの数を制限できます。  

```
SELECT 
  clientip, 
  agaregion, 
  protocol, 
  action 
FROM 
  aga_flow_logs 
WHERE 
  agaregion LIKE 'LHR%' 
LIMIT 
  100;
```

**Example – HTTPS リクエストの大部分の受信するエンドポイント IP アドレスをリストする**  
最大数の HTTPS リクエストを受信しているエンドポイント IP アドレスを確認するには、次のクエリを使用します。このクエリは、HTTPS ポート 443 で受信したパケット数をカウントし、送信先 IP アドレス別にグループ分けして、上位 10 の IP アドレスを返します。  

```
SELECT 
  SUM(numpackets) AS packetcount, 
  endpointip 
FROM 
  aga_flow_logs 
WHERE 
  endpointport = 443 
GROUP BY 
  endpointip 
ORDER BY 
  packetcount DESC 
LIMIT 
  10;
```