S3のファイルを一括でダウンロードする

Shunsuke Sawada

AWSのS3を利用するケースは多いと思いますが、Web上の画面からだとできない処理もあります。代表的なのがフォルダの一括ダウンロード。
コマンドラインで可能なので、やり方をメモ。

いろいろ必要

最終的に awscli というライブラリをインストールするのですが、インストールするためにはパッケージマネージャー pip が必要で、それは Python のパッケージマネージャです。そして Python をインストールするためには pyenv があった方が良いので、まずはそちらをインストールします。
さらに pyenv をインストールするには Homebrew が便利ですので、そこからスタートしましょう… 😅

Homebrew

zsh
1
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

pyenv

zsh
1
2
3
4
5
6
7
8
$ brew update
$ brew install pyenv

# bash を使っていたら
$ echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n  eval "$(pyenv init -)"\nfi' >> ~/.bash_profile

# zsh を使っていたら
$ echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n  eval "$(pyenv init -)"\nfi' >> ~/.zshrc

上記を行った後に、ターミナルを再起動。(設定ファイルを有効にする必要があります)

Python をインストール

zsh
1
2
3
4
5
6
7
8
# バージョンの確認
$ pyenv install -ls

# インストール
$ pyenv install 3.8.1

# グローバルに使用
$ pyenv global 3.8.1

pip をインストール

zsh
1
2
3
4
5
$ curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
$ python get-pip.py

# 不要なので削除してもOK
$ rm get-pip.py

awscli をインストール

ようやく awscli をインストールすることができます 🎉

zsh
1
pip install awscli 

S3のフォルダをダウンロード

ここまで来たらS3が自由自在なのですが、あとひとつ気をつけることがあります。
それは認証情報。
S3には誰でもアクセスすることができないようになっています。(一般公開もできますが。)アクセスするためには認証情報が必要なので、そちらを確認しましょう。

認証情報がない場合は、AWS の IAM にアクセスして、ユーザーもしくはグループを作成した後、アクセスキーを作成します。

access_key

その認証情報を利用して、下記のようにコマンドを打てば、晴れてS3上のフォルダがダウンロードできると思います。めでたしめでたし。

リージョンが違う場合は適宜変更してください。

zsh
1
AWS_DEFAULT_REGION='ap-northeast-1' AWS_ACCESS_KEY_ID='xxx' AWS_SECRET_ACCESS_KEY='xxx' aws s3 cp s3://bucket_name/directory_name ./download_path --recursive

 

2
Shunsuke Sawada

おすすめの記事

RailsとCarrierWaveでAmazon S3に画像を保存する
39
Railsの画像アップロードを倍速にする方法
41
herokuでCarrierwaveを使う時にいろいろハマった
4