S3のデータをフォルダごとダウンロードする【AWS】

AWSのS3のバケット内の、フォルダの中身を丸ごとをダウンロードします。
GUI(マネジメントコンソール)にフォルダごとダウンロードするアクションがなかったので(前はあったっぽい?)aws cliでやる手順の備忘録となります。
AWS CLI(AWS コマンドラインインターフェイス)のインストール
https://aws.amazon.com/jp/cli/ にアクセスします。
今回私の環境はWindowsなので右ペインからWindowsの欄からインストーラをダウンロードします。

ダウンロードしたらインストーラを起動してインストールします。

インストールが完了したら適当なターミナルを開き
aws --version
を実行し、aws-cli/...的な出力が返ってくればインストールされています。
※ インストールする前からターミナルを開いていた場合は、開き直してください。
S3のデータをフォルダごとダウンロードする
今回はmy-download-testというバケット内にあるimagesというフォルダの中身を丸ごとダウンロードします。

ターミナルで以下の作業を行います。
- 【準備】対象のAWSアカウントのクレデンシャルを設定する。
(私の場合awsアクセスポータルを使用する環境のため)アクセスポータルより、対象のawsアカウントのAccess keyをクリックします。

私のターミナルの場合PowerShellで起動しているので、PowerShellタブを開き、Option 1: Set AWS environment variablesの欄にある、一時的なクレデンシャルをセットするコマンドをコピーします。

コピー内容をターミナル内にペーストしてEnterで実行してクレデンシャルをセットします。(これをしておかないとこのあとのawsコマンドを実行しようとしても権限がなくてエラーになります) - AWSにて対象のフォルダの「S3 URI」を控える
対象のフォルダを選択してS3 URI をコピーをクリックします。

すると以下のような値をコピーできます。
s3://my-download-test/images/
- aws cliコマンドでフォルダ内のファイルを一括ダウンロード
先ほど控えた値を使って、ターミナルにて以下のコマンドを実行します。
※ファイルをダウンロードしたいディレクトリに移動してから実行してください。
aws s3 cp s3://my-download-test/images/ ./ --recursive
これでダウンロードできるはずです。
【補足】
--recursiveは再帰的に実行するオプションで、これによりimages内のファイルをすべてダウンロードできます。./を指定しているのでカレントディレクトリにダウンロードされます。
以上です。
Share this post