Dockerをawsコマンド実行環境として使いS3からファイルをディレクトリごとダウンロードする

結論

AWSのS3から特定のディレクトリ以下をごっそりダウンロードするにはawscliを使う必要があります。
ただ、awscliを用意するのが面倒だったので、awsコマンド実行環境としてDockerを使用するワンライナーを書きました。

docker run -it --rm -v ~/docker/mnt:/mnt xueshanf/awscli /bin/bash -c 'export AWS_ACCESS_KEY_ID="YOUR_AWS_ACCESS_KEY" 
export AWS_SECRET_ACCESS_KEY="YOUR_AWS_SECRET_ACCESS_KEY"
aws s3 cp --region ap-northeast-1 s3://bucket_name/dir_name/ /mnt --recursive'

上記ワンライナーの中の以下の環境変数に値を設定しバケットとディレクトリ名を指定してあげると、マウントした~/docker/mnt以下にファイルがダウンロードされます。

背景

なぜわざわざDockerを使っているかというと、awscliのセットアップにはPythonとpipのインストールが必要です。
しかしPythonの環境分離ツールには色々あり(pyenv, venv, virtualenvなど)、Python力が鼻くそ以下の僕にはどれを選べば良いかわからなかったので、環境を汚さないという理由でDockerを使うことにしました。

まとめ

これでローカルPCを汚さずにawsコマンドを使用できるようになりました。
Dockerは開発サーバーや本番サーバーの構築だけでなく、コマンド実行環境として使用できるのも素晴らしいですね。
以上です。