エンジニアブログ

[AWS]S3アクセスログでのプレフィックス指定

2019.03.25

こんにちは。middleです。

最近ようやくあったかくなってきて、寒がりには嬉しいかぎりです。

 

★今回のお題

S3サーバーアクセスのログ記録〜プレフィックス指定〜

みなさまS3バケットのアクセスログは有効にされてますか?

これのこと↓↓
Amazon S3 サーバーアクセスのログ記録 – Amazon Simple Storage Service

 

※実際S3はフォルダとかディレクトリとかないのですが、今回はあえてそういう表現をします。

※ちょっとつらすぎてキャプチャとかとってないので、また文字ばかりです。

 

アクセスログを有効にする際プレフィックス指定ができます。
なのでログ保管先バケット「LogBucket」内フォルダ「AccessLog」にログを保管したいと思っています。

 

↓↓↓

 

各ログ名は「YYYY-mm-DD-HH-MM-SS-ランダムな値」でして、指定することでここにプレフィックスをつけられます。
今回は「AccessLog/YYYY-mm-DD-HH-MM-SS-ランダムな値」というようにプレフィックスをつけたいわけですね。
ということでプレフィックスを「AccessLog」と指定してログを有効化しました。(CloudFormationのテンプレートにそう書きました)

 

↓↓↓

 

結果

ログ保管先バケット「LogBucket」直下にログが保管されてしまいました……。
………。
各ログ名は「AccessLogYYYY-mm-DD-HH-MM-SS-ランダムな値」となっています。

スラッシュがないよ〜/(^o^)\

 

↓↓↓

 

プレフィックスを「AccessLog/」と指定しなおすことで、想定通り、フォルダ「AccessLog」にログが格納されました。

 

こんな感じ(修正済み)↓↓↓

[ec2-user@Test01 ~]$ aws s3 ls s3://LogBucket/
            PRE AccessLog/
            PRE piyo/
            PRE piyopiyo/

 

今回アクセスログ有効化したS3バケットが、これがまたログが頻発するバケットだった&修正したのが3ヶ月以上たった後でして……。
バケット直下にログが大量にはかれ、listした時とんでもないことになりました。(Ctrl+C連打……)

 

★おまけ

とはいえ大量のログをそのままにしておくのは収まりが悪いので、フォルダ「AccessLog」に移動させます。

・マネジメントコンソール
→移動と言うか、「切り取り」→「貼り付け」をします。
画面に表示できる数(=一気に切り取りできる数)は300です。

今回対象ログが50万件くらいだったので、早々に挫折しました。

ちなみにもしGlacierに移行済みだった場合、復元しても切り取りや貼り付けができないです。
CLIを使わないでどうにかしようとするならば、一度ダウンロードして、それを正しいフォルダにアップロードする、という方式になります。
しかしマネジメントコンソールからは一括ダウンロードができないのですよね……。CLI使えない環境だとわりときついものがあります。

 

・CLI
→「aws s3 mv」を使います。
ワイルドカードは以下のように指定します。

↓↓↓

aws s3 mv 移動元 移動先 –recursive –exclude “*” –include “ファイル名の共通する部分*”

 

今回はこんな感じ↓↓↓

aws s3 ls s3://LogBucket/ s3://LogBucket/AccessLog–recursive –exclude “*” –include “AccessLog*”

 

いやしかしいろいろうっかりが多すぎて、ログ移動も一苦労でございました。
もう二度とスラッシュ様を忘れはしないと思います。

 

お疲れ様でした 🙂

関連キーワード

この記事をシェアする

Facebook Twitter LINE はてなブックマーク

この記事を読んだ方に
おすすめの記事