查询 AWS Global Accelerator 流日志 - Amazon Athena
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

查询 AWS Global Accelerator 流日志

可以使用 AWS Global Accelerator 创建加速器,从而将网络流量定向到 AWS 全局网络上的最佳终端节点。有关 Global Accelerator 的更多信息,请参阅什么是 AWS Global Accelerator。​

Global Accelerator 流日志允许您捕获有关进出加速器中的网络接口的 IP 地址流量的信息。流日志数据将发布到 Amazon S3,您可以在其中检索和查看您的数据。有关更多信息,请参阅 AWS Global Accelerator 中的流日志

可以使用 Athena 查询 Global Accelerator 流日志,方式是创建一个指定流日志在 Amazon S3 中的位置的表。

为 Global Accelerator 流日志创建表

  1. 将以下 DDL 语句复制并粘贴到 Athena 控制台中。此查询指定 ROW FORMAT DELIMITED 并且不再指定 SerDe,这意味着查询将使用 LazySimpleSerDe。在此查询中,字段由一个空格终止。

    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 ) PARTITIONED BY (dt string) ROW FORMAT DELIMITED FIELDS TERMINATED BY ' ' LOCATION 's3://your_log_bucket/prefix/AWSLogs/account_id/globalaccelerator/region/' TBLPROPERTIES ("skip.header.line.count"="1");
  2. 修改 LOCATION 值以指向包含您的日志数据的 Amazon S3 存储桶。

    's3://your_log_bucket/prefix/AWSLogs/account_id/globalaccelerator/region_code/'
  3. 在 Athena 控制台中运行查询。查询完成后,Athena 注册 aga_flow_logs 表,并使其中的数据可用于查询。

  4. 创建分区可读取数据,如以下示例查询中所示。此查询创建指定日期的单个分区。替换日期和位置的占位符。

    ALTER TABLE aga_flow_logs ADD PARTITION (dt='YYYY-MM-dd') LOCATION 's3://your_log_bucket/prefix/AWSLogs/account_id/globalaccelerator/region_code/YYYY/MM/dd';

AWS Global Accelerator 流日志的示例查询

例 – 列出通过特定边缘站点的请求

以下示例查询列出了已通过 LHR 边缘站点的请求。使用 LIMIT 运算符可限制一次查询的日志数目。

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

例 – 列出接收大多数 HTTPS 请求的终端节点 IP 地址

要查看哪些终端节点 IP 地址收到的 HTTPS 请求最多,请使用以下查询。此查询计算在 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;