CloudFront 표준 로그용 테이블 생성 - Amazon Athena

CloudFront 표준 로그용 테이블 생성

참고

다음 절차는 CloudFront의 웹 배포 액세스 로그에 적용됩니다. RTMP 배포의 스트리밍 로그에는 적용되지 않습니다.

CloudFront 표준 로그 파일 필드의 테이블 생성
  1. 다음 예제 DDL 문을 복사하여 Athena 콘솔의 쿼리 편집기에 붙여 넣습니다. 예제 명령문은 Amazon CloudFront 개발자 안내서의 표준 로그 파일 필드 섹션에 설명된 로그 파일 필드를 사용합니다. 로그를 저장하는 Amazon S3 버킷의 LOCATION을 수정합니다. 쿼리 편집기 사용에 대한 자세한 내용은 시작 단원을 참조하세요.

    이 쿼리는 ROW FORMAT DELIMITEDFIELDS TERMINATED BY '\t'를 지정하여 필드가 탭 문자로 구분됨을 나타냅니다. ROW FORMAT DELIMITED의 경우 Athena는 기본적으로 LazySimpleSerDe를 사용합니다. date 열은 Athena에서 예약어이기 때문에 백틱(`) 키를 사용하여 이스케이프됩니다. 자세한 내용은 쿼리에서 예약어 이스케이프을 참조하세요.

    CREATE EXTERNAL TABLE IF NOT EXISTS cloudfront_standard_logs ( `date` DATE, time STRING, x_edge_location STRING, sc_bytes BIGINT, c_ip STRING, cs_method STRING, cs_host STRING, cs_uri_stem STRING, sc_status INT, cs_referrer STRING, cs_user_agent STRING, cs_uri_query STRING, cs_cookie STRING, x_edge_result_type STRING, x_edge_request_id STRING, x_host_header STRING, cs_protocol STRING, cs_bytes BIGINT, time_taken FLOAT, x_forwarded_for STRING, ssl_protocol STRING, ssl_cipher STRING, x_edge_response_result_type STRING, cs_protocol_version STRING, fle_status STRING, fle_encrypted_fields INT, c_port INT, time_to_first_byte FLOAT, x_edge_detailed_result_type STRING, sc_content_type STRING, sc_content_len BIGINT, sc_range_start BIGINT, sc_range_end BIGINT ) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' LOCATION 's3://amzn-s3-demo-bucket/' TBLPROPERTIES ( 'skip.header.line.count'='2' )
  2. Athena 콘솔에서 쿼리를 실행합니다. 쿼리가 완료된 후 Athena는 cloudfront_standard_logs 테이블을 등록하여 쿼리를 실행할 수 있도록 데이터를 준비합니다.

쿼리 예제

다음 쿼리는 2018년 6월 9일부터 6월 11일까지 CloudFront가 제공한 바이트 수를 합산합니다. 날짜 열 이름은 예약된 단어이므로 큰따옴표로 묶습니다.

SELECT SUM(bytes) AS total_bytes FROM cloudfront_standard_logs WHERE "date" BETWEEN DATE '2018-06-09' AND DATE '2018-06-11' LIMIT 100;

쿼리 결과에서 중복 행(예: 중복된 빈 행)을 제거하려면 다음 예제와 같이 SELECT DISTINCT 문을 사용할 수 있습니다.

SELECT DISTINCT * FROM cloudfront_standard_logs LIMIT 10;