はじめに
AWS Management Console では、S3 内のフォルダを一括してダウンロードすることができません。
そのため、例えば S3 に日付毎にフォルダを作成して、システムログを保管していた場合は、1 つ 1 つフォルダを確認する必要があり、非常に手間がかかります。
一括ダウンロードするには、AWS CLI を使用する必要があります。
本記事では、Ubuntu 20.04 に AWS CLI を使用して、フォルダを一括ダウンロードする方法を紹介します。
前提条件
Ubuntu 20.0.4 に AWS CLI をインストールしておく必要があります。 Ubuntu Desktop 20.04 LTS に AWS CLI をインストールして、基本的な操作をするまでの手順です。 AWS CLI とは コマンドラインシェルのコマンドを使って AWS&n[…]
AWS CLI のインストール方法については、以下の記事をご参照ください。
AWS CLI による一括 DL
構文
aws s3 cp
コマンドを使用します。<source> はバケットの URI を指定、<target> は保存先を指定します。
aws s3 cp <source> <target> [--options]
実行例
S3 の example/logs フォルダを一括ダウンロードし、Ubuntu の ./tmp/awslogs に保存する例です。--recursive
オプションにより、example/logs フォルダ内の全てのファイルがダウンロード対象になります。
aws s3 cp s3://example/logs/ ./tmp/awslogs --recursive
<source> に指定する URI は、AWS Management Console(以下の赤枠の部分)でコピーすることができます。パスが長い場合に便利です。
DL した .gz ファイルの一括解凍
DL したファイルは、.gz ファイルになっています。
ディレクトリ内の .gz ファイルを全て解凍するには、Ubuntu で次のコマンドを実行します。
find . -name '*.gz' | xargs -n1 gunzip
解凍したファイルの結合
解凍した複数のファイルは、1 つに結合することが可能です。
例えば、解凍したログが以下だったとします。
$ ls /tmp/awslogs
examplelog01
examplelog02
examplelog03
上記を 1 つのファイルを結合し、examplelogs という名前で保存する場合は、Ubuntu で次のコマンドを実行します。
cat example* > examplelogs
また、各ファイルの中から特定の文字列(例えば https://exmaple.com)のみ抽出・結合して、examplelogs という名前で保存する場合は、Ubuntu で次のコマンドを実行します。
cat example* | grep https://example.com > examplelogs
aws s3 名前空間で高レベルの Amazon S3 コマンドを使用して、 AWS CLIでバケットとオブジェクトを管…
以上