S3アクセスログをAthenaで分析する際に必要な設定メモ
パーティションやらなんやらはまだ理解していない&S3アクセスログ以外も今後追加していこう。
下記リンクの通りです。
https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/ServerLogs.html
下記リンクの通りです。
https://aws.amazon.com/jp/premiumsupport/knowledge-center/analyze-logs-athena/
create database s3_access_logs_db
③テーブルを作成します(1行目のテーブル名は変更可能です、35行目のバケットは自身の環境に合わせます)
CREATE EXTERNAL TABLE `s3_access_logs_db.mybucket_logs`( `bucketowner` STRING, `bucket_name` STRING, `requestdatetime` STRING, `remoteip` STRING, `requester` STRING, `requestid` STRING, `operation` STRING, `key` STRING, `request_uri` STRING, `httpstatus` STRING, `errorcode` STRING, `bytessent` BIGINT, `objectsize` BIGINT, `totaltime` STRING, `turnaroundtime` STRING, `referrer` STRING, `useragent` STRING, `versionid` STRING, `hostid` STRING, `sigv` STRING, `ciphersuite` STRING, `authtype` STRING, `endpoint` STRING, `tlsversion` STRING) ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.RegexSerDe' WITH SERDEPROPERTIES ( 'input.regex'='([^ ]*) ([^ ]*) \\[(.*?)\\] ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) (\"[^\"]*\"|-) (-|[0-9]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) (\"[^\"]*\"|-) ([^ ]*)(?: ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*))?.*$') STORED AS INPUTFORMAT 'org.apache.hadoop.mapred.TextInputFormat' OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat' LOCATION 's3://awsexamplebucket1-logs/prefix/'
クエリの例に習って、クエリを実行します。
SELECT * FROM s3_access_logs_db.mybucket_logs WHERE operation LIKE 'S3%' ORDER BY requestdatetime ASC