AWS Global Accelerator 흐름 로그 쿼리 - Amazon Athena

AWS Global Accelerator 흐름 로그 쿼리

AWS Global Accelerator를 사용하면 AWS 글로벌 네트워크를 통해 네트워크 트래픽을 최적의 엔드포인트로 보내는 액셀러레이터를 생성할 수 있습니다. Global Accelerator에 대한 자세한 내용은 AWS Global Accelerator란 무엇인가요?를 참조하세요.

Global Accelerator 흐름 로그를 사용하면 액셀러레이터의 네트워크 인터페이스에서 송수신되는 IP 주소 트래픽에 대한 정보를 캡처할 수 있습니다. 데이터를 검색하고 확인할 수 있는 흐름 로그 데이터가 Amazon S3에 게시됩니다. 자세한 내용은 AWS Global Accelerator의 흐름 로그를 참조하세요.

Athena를 사용하여 Amazon S3에서 해당 위치를 지정하는 테이블을 만들어 Global Accelerator 흐름 로그를 쿼리할 수 있습니다.

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. 로그 데이터가 포함된 Amazon S3 버킷을 가리키도록 LOCATION 값을 수정합니다.

    '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 주소 나열

가장 많은 수의 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;