S3에 저장한 VPC Flow Logs Athena로 조회하기위한 쿼리를 작성해본다.

 TABLE 생성 -> 파티션 -> 조회 순으로 진행된다.

 VPC Flow Logs 설정 시, Default Format으로 저장한 VPC Flow Logs 를 대상으로 작성한 쿼리이다. 

 VPC Flow Logs 조회를 위한 Table을 Create 한다. ( 로그 조회를 위한 메타데이터를 생성 )

 

 CREATE EXTERNAL TABLE IF NOT EXISTS default.vpc_flow_log(

  'version' int,

  'account' string,

  'interfaceid' string,

  'sourceaddress' string,

  'destinationaddress' string,

  'sourceport' int,

  'destinationport' int,

  'protocol' int,

  'numpackets' int,

  'numbytes' bigint,

  'starttime' int,

  'endtime' int,

  'action' string,

  'logstatus' string

 )

 PARTITIONED BY (date date)

 ROW FORMAT DELIMITED

 FIELDS TERMINATED BY ' '

 LOCATION 's3://버킷이름/AWSLogs/어카운트아이디/vpcflowlogs/리전코드/'

 TBLPROPERTIES("skip.header.line.count"="1");

 

 위의 쿼리에서 S3 버킷 경로 중 한글로 된 부분은 로그 데이터가 포함된 버킷으로 수정한다.

 VPC Flow Logs 는 s3://버킷이름/AWSLogs/어카운트아이디/vpcflowlogs/리전코드/  이 경로 아래에 YYYY/MM/dd 와 같이 날짜별로 분류되어 저장되기 때문에

 조회하기 위해서는 YYYY/MM/dd로 Partition 해야한다.

 아래는 날짜별 partition 하기위한 예제 쿼리이다. 

 

 ALTER TABLE default.vpc_flow_log

 ADD PARTITION(date='2020-06-14')

 location 's3://버킷이름/AWSLogs/어카운트아이디/vpcflowlogs/리전코드/2020/06/14';

 

 이제 VPC Flow Logs를 아래의 쿼리로 조회할 수 있다.

 SELECT *

 FROM default.vpc_flow_log

 WHERE date = DATE('2020-06-14')

 LIMIT 100;