Amazon S3 でアクセスロギング

アクセスログを取る

Amazon S3 では、あるBucket内のObjectへのアクセスログを取ることができます。ログ結果は指定したBucket内に保存することができます。

ロギング機能をEnableにする

ロギング機能を有効にするには、AWS Management Consoleで指定するだけです。BucketのプロパティからLoggingタブを選択して有効にします。また、ログを出力するBucketを指定することができます。ログの出力先は別フォルダが良いですね。

ログのフォーマット

ログのフォーマットは以下になります。

TargetPrefixYYYY-mm-DD-HH-MM-SS-UniqueString

たとえばこんな文字列です。

cmweb2011-07-06-18-16-00-508E0C2D4C9CFDE7

ログの中身を見てみましょう。以下のような形式になっています。

bbe5ccc98173132636eb1c839ef2a48e9047a873769d858a9b710bacd311cb20 classmethod-website [06/Jul/2011:17:28:25 +0000] 111.111.111.111 bbe5ccc98173132636eb1c839ef2a48e9047a873769d858a9b710bacd311cb20 BD06077F5A0AB31E REST.GET.BUCKET - "GET /?prefix=cmweb2011-&max-keys=1000 HTTP/1.1" 200 - 255 - 14 12 "-" "CloudBerryLab.Base.HttpUtil.Client 2.8.0 (http://www.cloudberrylab.com/)" -

使いどころ

S3をホームページとして公開設定にしている場合、アクセスログが大量に溜まってしまいます。あまり良い使い方ではないのかなと思います。どちらかというと、認証されたユーザしか使えない機密情報をいつ誰がどこからアクセスしたのかログを取るという使い方を想定しているのではと思います。

まとめ

ログもとれちゃいました。