0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【AWS S3】ログなど膨大な量のオブジェクト群から狙ったものだけ取得するコマンド

Last updated at Posted at 2023-11-24

概要

外部から送信されてきたオリジナルデータやログファイルなどを溜めておくのは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からダウンロードされたあとは、ローカルで各ファイルに対して引っ掛けたい文字列が含まれているかチェック→ヒットすれば終了!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?