元々、CloudFrontのアクセスログは、設定すればS3に出力する事が可能でしたが、4時間(最大24時間)程度遅れて保存される問題(特徴?)がありました。
後日のアクセス解析では問題ないのですが、リアルタイムで欲しい場合に簡単に行う方法がありませんでした。
(JavaScriptでKinesis Data Streamsに流そうと考えていましたが、それより楽そう)
CloudFrontの設定で、「Real-time Logs」の項目を見付けたのが先でしたが、下記でアナウンスされいます。
Amazon CloudFront がリアルタイムログを発表
今回は、Kinesis Data Streamsに流すまでを書きます。
実際は解析までしたいですが、Kinesis Data Analyticsは勉強中なので、また別の機会に書きます。
Kinesis Data Firehoseも難しくないけど、今回は不要(今までのログでOK)なので別の機会に。
Kinesis Data Streamsの設定
CloudFrontがグローバル(≒バージニア北部)の関係で、東京リージョンに作っても使えないので注意。
https://console.aws.amazon.com/kinesis/home?region=us-east-1#/home
(サービス -> Kinesis -> バージニア北部)
●Kinesis Data Streams [データストリームを作成] データストリームの設定 データストリーム名: (ドメイン名) ※何でも良さそう データストリームの容量 開いているシャード数: (秒間の書き込み数と量で算出) ※キャパになるので運用後に増えるようであれば見直し必要 [データストリームの作成]
CoundFrontの設定
今回は構築済みのDistributionに追加します。
https://console.aws.amazon.com/cloudfront/home?region=us-east-1
(サービス -> CoundFront)
Logs Real-time log configurations [Create configuration] Create real-time log configuration Configuration settings Name: (ドメイン名) ※何でも良さそう Fields: timestamp, c-ip, sc-status, cs-method, cs-uri-stem, cs-user-agent, cs-referer ※このぐらいで十分そう。必要に応じて変更 Endpoint: (上記で作成したKinesis Data Streamsのを選択) Distribution CloudFront distribution: (対象にするDistributionを選択) Cache behavior(s): Default (*) ※他にもbehavior作成している場合は必要に応じて選択 [Create configuration]
動作確認
Kinesis Data Streamsのモニタリングで確認します。
アクセスがないと出ないので、対象のURLにブラウザ等でアクセスします。
https://console.aws.amazon.com/kinesis/home?region=us-east-1#/streams/list
(サービス -> Kinesis -> バージニア北部 -> データストリーム)
データストリーム (対象にストリームを選択) モニタリング ※受信データやPutレコードのグラフが表示
“CloudFrontのリアルタイムログを試す” に対して3件のコメントがあります。