概要
外部から送信されてきたオリジナルデータやログファイルなどを溜めておくのはS3の使い方としてよくあると思います。
調査でその膨大な数から狙ったオブジェクトを見つけるために、CloudBerryやAWSマネジメントコンソール上で探して取ってくるのはかなり非効率だったため、下記のコマンドで効率化を図りました。
コマンド
AWS CLIで実行し、一旦フィルタにかかったファイルを全て落としてから、ローカルでgrepして見つける感じです(更に良い方法がありましたら教えて頂きたいです...)
CPコマンドを生成
↓ 15:31:00 - 15:31:59 までを全て取得する場合
aws s3 ls s3://{バケット名}/{ディレクトリパス}/20231124/ | awk '$2' | grep -E '15:31:([0-5][0-9])' | awk '{print "aws s3 cp s3://{バケット名}/{ディレクトリパス}/20231124/" $4 " ./"}' >> aws_command.txt
AWS CLIのlsコマンドの情報からawkコマンドで保存された時刻を取得し、grepで対象の時間帯を指定して絞り込み、ヒットしたオブジェクト名をAWS CLIのcpコマンドに指定してテキストファイルに書き込んでます。
生成したCPコマンドを確認し、問題無ければ実行
source aws_command.txt
S3からダウンロードされたあとは、ローカルで各ファイルに対して引っ掛けたい文字列が含まれているかチェック→ヒットすれば終了!