すらいむがあらわれた

こまんど >  たたかう  にげる

S3,CloudFrontのアクセスログをとる

S3やCloud Frontにファイルを置いて閲覧させるようにしたならば、当然「アクセスログはどうなるの?!」と聞かれることでしょう。
もちろんアクセスログを取得することができます。


■S3
ログについてのドキュメントはこちら。
Amazon Simple Storage Service Developer Guide - Server Access Logging
http://docs.amazonwebservices.com/AmazonS3/latest/dev/ServerLogs.html
ログのフォーマットは一般的なWebサーバーのログとは違っています。
Amazon Simple Storage Service Developer Guide - Server Access Log Format
http://docs.amazonwebservices.com/AmazonS3/latest/dev/LogFormat.html

  • AWS Management ConsoleでS3 Bucketのログ取得設定をする方法

まず、Bucketのプロパティで「logging」を選択。
Enabledにチェック。
Target Bucket でログを出力するBucketを選択。
Target Prefix を指定。ここで指定するのはログの出力ファイルににつけるPrefixです。
例: Log/s3/hayashih-test1/
これでTarget bucket直下にこの階層のフォルダが作られて、その中ににログのファイルが入ります。
「/」で区切られるとそこがフォルダとして扱われます。「/」で区切っていない場合、文字列がそのままprefixとしてファイル名の先頭にくっつきます。
AWS-S3-Log
AWS-S3-Log posted by (C)kanpan
出力されるログファイルはテキストファイルです。1つのファイルではなく細かい複数のファイルに分かれます。


■CloudFront
Amazon CloudFront FAQ
http://aws.amazon.com/jp/cloudfront/faqs/#Can_I_get_access_to_request_logs_for_content_delivered_through_CloudFront

Q. Amazon CloudFront を経由して配信されたコンテンツのログを取得できますか?
はいCloudFront による配信を開始または修正する場合、アクセスのロギングを有効にすることができます。これが有効になっていると、本機能はW3C拡張フォーマットを用いて、自動的に詳細なログ情報を、指定された Amazon S3 バケット (bucket) に記述します。

ログについてのドキュメントはこちら。
Amazon CloudFront Developer Guide- Access Logs
http://docs.amazonwebservices.com/AmazonCloudFront/latest/DeveloperGuide/AccessLogs.html

  • AWS Management ConsoleでCloudFront Distributionのログ取得設定をする方法

対象にするDistributionを選ぶ。
右クリックで「Edit」を選択。
「Edit Distributon」ウィンドウが開くので、
LoggingをOnに。
Select Log Bucket - or - Specify Log Bucket でログの保存先のS3 Bucketを選択。
Log Prefixを指定。
例: Log/cf/d1x0w7v4ub8556/
私はDistributionを複数立ててそれぞれログをとる場合が多いので、Distributionのドメインネームをログの出力先フォルダ名に使うことが多いです。
AWS-CF-Log
AWS-CF-Log posted by (C)kanpan
出力されるログファイルはgz圧縮ファイルです。こちらも1つのファイルではなく細かい複数のファイルに分かれます。