~~NOCACHE~~
## S3サーバーアクセスログを分析する
S3アクセスログをAthenaで分析する際に必要な設定メモ
パーティションやらなんやらはまだ理解していない&S3アクセスログ以外も今後追加していこう。
図にするとこんな感じ、3つの領域に分けて記載します。赤点線、青点線、緑点線
{{:Aws:Athena:pasted:20220201-142241.png?direct 600x0}}
### S3サーバーアクセスログの記録(赤点線)
下記リンクの通りです。
https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/ServerLogs.html
--> S3バケットの作成#
手順は割愛します。
①ログ取得元S3バケットの作成
②ログ記録先S3バケットの作成
<--
--> ログ取得元S3バケットのサーバーアクセスのログ記録を有効化#
①ログ取得元S3バケットの[プロパティ]-[サーバーアクセスのログ記録]の[編集]をクリックします。
{{:Aws:Athena:pasted:20220201-160237.png?direct 600x0}}
②以下を設定し[変更の保存]をクリックします。
・サーバーアクセスのログ記録:有効
・ターゲットバケット:ターゲットバケットのS3 URIを指定(キープレフィックスの付与を推奨)
※複数のバケットが同じターゲットバケットにログを記録する場合に、ソースバケットを区別するためにも役立ちます。
{{:Aws:Athena:pasted:20220201-160641.png?direct 600x0}}
<--
### S3サーバーアクセスログのデーターベース、テーブル作成(青点線)
下記リンクの通りです。
https://aws.amazon.com/jp/premiumsupport/knowledge-center/analyze-logs-athena/
--> Athenaからデーターベース、テーブルの作成 #
①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/'
<--
### S3サーバーアクセスログの分析(緑点線)
クエリの例に習って、クエリを実行します。
--> クエリの例#
そのうち追加します、公式ページのもご参考に!
https://aws.amazon.com/jp/premiumsupport/knowledge-center/analyze-logs-athena/
・ライフサイクルルールによって実行されたログを抽出して、requestdatetimeで並び替え
SELECT *
FROM s3_access_logs_db.mybucket_logs
WHERE operation LIKE 'S3%'
ORDER BY requestdatetime ASC
<--
{{tag>AWS S3 Athena}}