こんにちは。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*”
いやしかしいろいろうっかりが多すぎて、ログ移動も一苦労でございました。
もう二度とスラッシュ様を忘れはしないと思います。
お疲れ様でした 🙂