![S3上のオブジェクトをフォルダごとダウンロードする方法 [GUI/CUI編]](https://devio2023-media.developers.io/wp-content/uploads/2019/05/amazon-s3.png)
S3上のオブジェクトをフォルダごとダウンロードする方法 [GUI/CUI編]
S3上のオブジェクトを、GUI/CUIそれぞれでダウンロードする方法
こんにちは。
S3のマネジメントコンソールからオブジェクトをフォルダ単位でダウンロードできないのは、不便だなーと感じるポイントだと思います。こちらは、現時点(2021/2/27)の仕様であり仕方ないのですが、3rd Party製のアプリケーションやAWS CLIでは実現可能です。今回は、GUI(3rd Party製アプリケーション)とCUI(AWS CLI)、それぞれの方法を試してみたいと思います。
GUI
S3上のファイルをGUIから操作する方法として、Windowsをお使いの会社ではほとんどが「WinSCP」をお使いではないでしょうか。こちらに関する記事はインターネット上に多く存在するため、今回はチームの先輩に教えてもらった「Cyberduck」を使ってみたいと思います。
1. Cyberduckのダウンロードとインストール
以下URLからダウンロードし、インストールしてください。
2. S3への接続
今回は一時クレデンシャルを使用して接続するため、こちらから接続用のプロファイル「S3 (Credentials from AWS Security Token Service) connection profile for preconfigured settings.」をダウンロードし、ダブルクリックしてください。何か不明点があれば、ドキュメントはこちらになりますので、併せてご確認ください。

以下の様な設定画面が表示されるので、お使いのクレデンシャル情報(credentialsファイルのセクション名)とパス(バケット名)を入力して、閉じてください。

3. S3への接続
先述の手順で接続先が設定されたBookmarkが作成されますのでダブルクリックしてください。わたしは、MFAが有効化されているため、こちらを入力すると目的のバケットへ接続されます。



4. フォルダごとダウンロード
目的のフォルダを右クリックすると、コンテキストメニューが一覧されます。目的のフォルダを選択してダウンロードをしてみます。


無事、ダウンロードできました。
なお、Windowsのエクスプローラーに統合した「Montain Duck」というアプリケーションもあります。今回は試せていないですが、こちらも便利そうです。
CUI
AWS CLI のS3にて再帰オプション(--recursive)を使用することで可能です。
マニュアルはこちら。
簡単ではありますが、実行例です。実行後に、目的のフォルダとオブジェクトがダウンロードできていることが確認できます。
1. カレントディレクトリとS3上のフォルダを確認 $ ~/tmp % ll 合計 0 $ ~/tmp % aws s3 ls | grep s3-test-20210227 2021-02-27 09:57:43 s3-test-20210227 2. cpコマンドに再帰オプション(--recursive)を付けてカレントディレクトリにダウンロード $ ~/tmp % aws s3 cp s3://s3-test-20210227 . --recursive download: s3://s3-test-20210227/folder01/text03.txt to folder01/text03.txt download: s3://s3-test-20210227/folder01/text01.txt to folder01/text01.txt download: s3://s3-test-20210227/folder01/text02.txt to folder01/text02.txt 3. 実行結果の確認 $ ~/tmp % ll -R .: 合計 0 drwxr-xr-x 1 nzw nzw 4096 2月 27 11:37 folder01 ./folder01: 合計 312 -rw-r--r-- 1 nzw nzw 103064 2月 27 08:56 text01.txt -rw-r--r-- 1 nzw nzw 103064 2月 27 08:56 text02.txt -rw-r--r-- 1 nzw nzw 103064 2月 27 08:56 text03.txt
余談
S3におけるフォルダの概念について、入社まで完全に勘違いしていました。
弊社の以下ブログが、この理解に役立ちますのでこちらも参照いただけますと幸いです。
以上です。