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;