S3のファイルを一括でダウンロードする
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 にアクセスして、ユーザーもしくはグループを作成した後、アクセスキーを作成します。
その認証情報を利用して、下記のようにコマンドを打てば、晴れて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