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

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

AWSのS3のバケット内の、フォルダの中身を丸ごとをダウンロードします。
GUI(マネジメントコンソール)にフォルダごとダウンロードするアクションがなかったので(前はあったっぽい?)aws cliでやる手順の備忘録となります。

AWS CLI(AWS コマンドラインインターフェイス)のインストール

https://aws.amazon.com/jp/cli/ にアクセスします。
今回私の環境はWindowsなので右ペインからWindowsの欄からインストーラをダウンロードします。
2024-09-10_1.webp

ダウンロードしたらインストーラを起動してインストールします。
2024-09-10_2.webp

インストールが完了したら適当なターミナルを開き

aws --version

を実行し、aws-cli/...的な出力が返ってくればインストールされています。

※ インストールする前からターミナルを開いていた場合は、開き直してください。

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

今回はmy-download-testというバケット内にあるimagesというフォルダの中身を丸ごとダウンロードします。
2024-09-10_3.webp
ターミナルで以下の作業を行います。

  1. 【準備】対象のAWSアカウントのクレデンシャルを設定する。
    (私の場合awsアクセスポータルを使用する環境のため)アクセスポータルより、対象のawsアカウントのAccess keyをクリックします。
    2024-09-10_4.webp
    私のターミナルの場合PowerShellで起動しているので、PowerShellタブを開き、Option 1: Set AWS environment variablesの欄にある、一時的なクレデンシャルをセットするコマンドをコピーします。
    2024-09-10_5.webp
    コピー内容をターミナル内にペーストしてEnterで実行してクレデンシャルをセットします。(これをしておかないとこのあとのawsコマンドを実行しようとしても権限がなくてエラーになります)
  2. AWSにて対象のフォルダの「S3 URI」を控える
    対象のフォルダを選択してS3 URI をコピーをクリックします。
    2024-09-10_6.webp
    すると以下のような値をコピーできます。
s3://my-download-test/images/
  1. aws cliコマンドでフォルダ内のファイルを一括ダウンロード
    先ほど控えた値を使って、ターミナルにて以下のコマンドを実行します。
    ※ファイルをダウンロードしたいディレクトリに移動してから実行してください。
aws s3 cp s3://my-download-test/images/ ./ --recursive

これでダウンロードできるはずです。

【補足】

  • --recursiveは再帰的に実行するオプションで、これによりimages内のファイルをすべてダウンロードできます。
  • ./を指定しているのでカレントディレクトリにダウンロードされます。

以上です。

Share this post