AWS S3のCLIによるファイル操作の実現

 AWSのS3+Cloudfrontで静的Webサーバー立ててみたが,いちいちWebインターフェイスでファイルコピーするのが面倒になってきた。 というわけで,これを機会に (今更ながら) AWS CLIを入れてCLIベースでS3のファイルコピーができる環境を整備する。
 今回は,手元のMac Bookで整備。

AWS CLIの導入手順

pip

 手元MacBookにはPython (ただし,2.7系) は入っている。 そのため,Pythonのパッケージ管理システムであるpipから構築はスタート。 こいつがAWS CLIの前提となる。
 インストール手順は公式サイトの手順に従う。 ここはあっさりインストール完了。

> curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
> sudo python get-pip.py

AWS CLI

 pipをインストールしたが,インストール直後は各モジュールがなぜかいろいろ古い。 そのため,まずは一括で既存パッケージを最新にアップグレード。 一個一個アップグレードすると面倒なので,コマンドはこのへんを参考にして一括で実行。 なお,–ignore-installed sixはsixモジュールの依存関係でアップグレードでこけるので追加している (このコマンドを一回実行すればsixも最新版になってる)。 しかし,awkなんて久しぶりに使ったな。

> pip list --outdated | awk 'NR>=3{print $1}' | sudo xargs pip install -U pip --ignore-installed six

 その後にAWS CLIをインストール。 pipの一モジュールなので,追加は至ってシンプル。

> sudo pip install awscli

AWSのアクセスキーの整備

AWSコンソールでアクセスキーの作成

 AWS CLIを使うためには,アクセスキーが必要になるのでAWSのコンソールからアクセスキーを作成してやる。
 今回は,AmazonS3FullAccessポリシーを適用したグループを用意し,そのグループに割り当てたユーザーを1つ用意してやった。 そうして作成したユーザーのアクセスキーIDとアクセスキーをメモしておく。

AWS CLIの設定

 アクセスキーの設定はシンプル。aws configureというコマンドがあるのでそれで必要な情報を設定する。

> aws configure
AWS Access Key ID [None]: <作ったアクセスキーID>
AWS Secret Access Key [None]: <作ったアクセスキー>
Default region name [None]: <Enter> 
Default output format [None]:  <Enter>

 設定した内容は,~/.aws以下に保存される。

あとは実行

 これで準備は完了したので,あとはaws s3コマンドで好きなようにファイル操作できる。

> aws s3 sync <ローカルフォルダー> s3://<バケット名>/<フォルダー>

 これで大分操作が楽になった (たぶん)。