AWS CLIでS3を操作する

  • 51
    Like
  • 0
    Comment
More than 1 year has passed since last update.

AWSのコンソール画面でS3のファイルを見たりアップロードしたり操作できますが、ファイルが大量にあったりするとスクロールして動的に読み込まれるので時間がかかるしイラッとしますよね…。
というわけで、AWS CLIを導入してコマンドラインで操作できるようにします。(もちろんS3以外のことも色々できます。)

インストール

pip(Pythonのパッケージ管理システムらしい)でインストールします。(AWS コマンドラインインターフェイス)

pip install awscli

pipが入っていない場合は、まずpipをインストールします。
get-pip.pyをダウンロードして以下を実行します。(pip installation)

python get-pip.py

pythonが入っていない場合はpythonをインストールします。
pipはPython2.7.9以降、Python3.4以降からデフォルトで付属してるそうなので、そのあたりのPythonを入れればpipも付いてくるはず。
ちなみにPythonをソースコンパイルでインストールする場合はopenssl-develが入ってないとダメみたいなので、その場合はopenssl-develも入れておきます。

設定

configureコマンドで自分のAccess Key IDとSecret Access Keyを設定します。

$ aws configure
Access Key ID: (自分のを入力)
Secret Access Key: (自分のを入力)
region: ap-northeast-1(適切なものを入力)

Access Key IDとSecret Access KeyはIAM(Identity and Access Management)のユーザー管理のアクセス認証情報で作成できます。
ここで設定したユーザーでAWSにアクセスできるようになります。

S3操作

aws s3 cpでアップロードしたりaws s3 rmで削除したりできます。
詳しくはリファレンス(s3 available commands)を見てください。
--dryrunを付けると何が実行されるかが前もってわかります。
以下、いくつか例をあげます。

bucketを一覧表示

aws s3 ls

jpgファイルをまとめてアップロード

cache-control等のメタデータも付けられます。

aws s3 cp img_dir s3://my-bucket-name/img_dir/ --recursive --include "*.jpg" --cache-control "max-age=6000"

まとめて削除

aws s3 rm s3://my-bucket-name/img_dir/ --recursive

ローカルディレクトリをS3のディレクトリに同期

aws s3 sync img_dir/ s3://my-bucket-name/img_dir/ --delete

いやー便利ですね。