1.概要
現在のシステムでは以下のように保存されている。
■格納例 [S3バケット]/[サーバホスト名] / [インスタンスID] / YYYY / MM / DD /[ログ種別] /ログファイル ※ログファイルは、5分ごとに1ファイルが作成される。
■パス例
s3://test-recochoku-jp/
api-ap/
api-ap00-i-0ed0250b86b11d3a6/
2017/02/17/
service_reco_dev.log/
service_reco_dev.log_2017-02-17-15_12.gz
上記のようなS3のディレクトリ構成のため、特定の日のログを探すのがかなり困難となります。 なので、サーバに一括でログファイルをダウンロードするコマンドを調査しましたので、共有します。
2.実行コマンド
aws s3 cp s3://test-recochoku-jp/api-ap/ . --recursive --exclude "*" --include "api-ap00*/2017/02/1*/service_reco_dev*.gz"
3.解説
各コマンドとオプションの解説は以下の通りです。
| コマンド/オプション | 解説 |
|---|---|
| aws s3 | CLIでS3サービスに関する手続き実行するコマンド |
| cp | ファイルを、ローカル→S3、S3→ローカル、S3→S3でコピー |
| s3://test-recochoku-jp | S3バケット名+ディレクトリ(S3Url) |
| . | ローカルディレクトリ |
| –recursive | 指定されたディレクトリ配下を再帰的に検索 |
| –exclude | 指定された文字列が存在するファイルを除外(パスも含む) |
| –include | 指定された文字列が存在するファイルを含める。※–excludeで除かれたものが対象となる。 |
| –dryrun ※おまけ | 指定した場合、ファイルコピーは実施せず、実行結果のみを表示 |
また、「–exclude」と「–include 」で使用が出来る正規表現は、以下の通りです。
*: Matches everything
?: Matches any single character
[sequence]: Matches any character in sequence
[!sequence]: Matches any character not in sequence
なので、「–recursive」オプションで再帰的にディレクトリを検索して 「–exclude」に”*”を指定して、いったんすべてを除外します。 除外したあと、「–include」に必要なファイルを正規表現を指定して取得します。 あとは、grepコマンドなどで調査を実施することが出来ます。
4.参考URL
山本 耕琢(コウタク)
レコチョクの楽曲情報の検索や、決済/会員情報、 レコメンド情報などを扱う、レコチョクAPIの運用と改善を担当しています。主にプロジェクト管理をやっています。技術力は低めですが、気づきがあったことなどを更新していきます。