CloudFront에서 S3로 출력된 로그를 Athena에서 구문 분석

0. 소개



요전날, 이쪽의 기사의 대응을 실시했습니다만,
  • SSL화된 WordPress 사이트에 CloudFront 적용 - Qiita

  • S3 에 출력된 로그를 해석하는 좋은 방법이 없는가라고 조사했는데, Athena 로 해석하는 것이 좋은 것 같아서 시험해 보았습니다.

    기본적으로 다음 페이지의 단계에 따라 진행했습니다.
  • Amazon CloudFront 로그 쿼리 - Amazon Athena

  • 그 밖에 이쪽의 기사등도 참고로 했습니다.
  • Amazon Athena에서 Amazon CloudFront 액세스 로그 분석 - Qiita
  • Athena를 사용하여 S3 로그를 검색할 수 있게 되면 운영 비용이 개선된 이야기 - Qiita

  • 이런 분들이 노하우를 공유 할 수있는 것은 정말 고마워요 ♪

    감사!! 🙇‍♂️

    1. S3 로그 파일의 데이터를 Athena에서 테이블을 만들고 삽입합니다.


  • Athena 콘솔을 엽니다.
  • Athena

  • 다음 쿼리를 실행하여 테이블을 만들고 S3 로그 파일의 데이터를 넣습니다.
  • ※참고한 사이트에 기재되어 있는 쿼리 그대로입니다. S3 버킷을 바꾼 것뿐.

  • CREATE EXTERNAL TABLE IF NOT EXISTS default.cloudfront_logs (
             `date` DATE,
             time STRING,
             location STRING,
             bytes BIGINT,
             requestip STRING,
             method STRING,
             host STRING,
             uri STRING,
             status INT,
             referrer STRING,
             useragent STRING,
             querystring STRING,
             cookie STRING,
             resulttype STRING,
             requestid STRING,
             hostheader STRING,
             requestprotocol STRING,
             requestbytes BIGINT,
             timetaken FLOAT,
             xforwardedfor STRING,
             sslprotocol STRING,
             sslcipher STRING,
             responseresulttype STRING,
             httpversion STRING,
             filestatus STRING,
             encryptedfields INT 
    ) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' LOCATION 's3://[S3 のバケット名]/[CloudFront の Log Prefix]/' TBLPROPERTIES ( 'skip.header.line.count'='2' )
    

    2. 작성한 Athena 테이블에 쿼리를 실행하여 필요한 데이터를 추출합니다.


  • 다음과 같은 쿼리를 실행하여 테이블에서 필요한 데이터를 추출합니다.
  • 다음 쿼리는
  • [날짜 (YYYY-MM-DD)] 이후의 ※ 이미지에서는 2019-03-03
  • [URL 경로]에 액세스하면 ※ 이미지에서는/portal/index.html
  • IP 주소에서 액세스

  • 입니다.

  • SELECT * FROM default.cloudfront_logs
    WHERE date > date '[日付(YYYY-MM-DD)]'
    AND uri = '[URL パス]'
    AND requestip = '[IP アドレス]'
    

    99. 하마리 포인트


  • 거기까지 빠지는 것은 아니었지만…,

  • 쿼리의 WHERE 절에서 DATE 조건을 모르고 좀 곤란했습니다.

  • XX. 요약



    CloudFront의 도입으로 운영 및 관리 방식도 달라지기 때문에 정직한 불안도 있습니다만, 이러한 서비스가 제대로 준비되어 있는 것이 AWS의 강점이라고 생각합니다.

    사실, CloudWatch Logs에 출력되면 기쁜 생각도 들지만 ..., 데이터량이 너무 많으면 비용량 낫고, 이 방법이 좋은 떨어뜨릴 곳일지도 모르겠네요.

    뭔가 도움이되면 기쁩니다!

    그럼♪

    좋은 웹페이지 즐겨찾기