S3: Amazon Linuxにs3cmdをインストールしてコマンドラインでS3を操作する
S3は、まずは Management ConsoleやCloud Berry Explorer、CyberDuckといったGUIツールから使うか、 AWS SDK for PHP, Java, Ruby, .NET といったAPI経由で使うことが多い。(参考:S3の関連ツール・ライブラリ等 - aws memo )
バックアップ処理など、cronなどでスクリプトから操作したい場合は、s3cmdが便利。
インストール
Amazon Linuxでデフォルト無効になっている epelリポジトリからインストール
$ sudo yum -y --enablerepo epel install s3cmd
もしくは、ここからyumのリポジトリファイルを取得して、/etc/yum.conf.d/にコピーした後にyum installする。
$ wget http://s3tools.org/repo/RHEL_6/s3tools.repo ~/ $ sudo cp s3tools.repo /etc/yum.conf.d/ $ sudo yum -y install s3cmd
設定
コンフィグウィザードを起動し ~/.s3cfg を作成。ウィザードで最低限必要なのは、Access KeyとSecret Key。残りはデフォルトのままリターンでOK。あとから .s3cfgを編集可能。
$ s3cmd --configure Access Key: xxxx Secret Key: xxxx
実行例
バケツ一覧
$ s3cmd ls
リージョンを指定してバケツ作成
$ s3cmd mb --bucket-location=ap-northeast-1 s3://<bucket_name>
バケツにアップロード
$ s3cmd put -r /path/to/files s3://<bucket_name> # --acl-public オプションをつけると、アップロードと同時にweb公開 $ s3cmd put --acl-public -r /path/to/files s3://<bucket_name>
バケツ内オブジェクトのパーミッションを変更しWeb公開
$ s3cmd setacl -r --acl-public s3://<bucket_name>
バケツの使用量確認
$ s3cmd du s3://<bucket_name>
バケツへの差分同期
$ s3cmd sync /path/to/source/dir s3://<bucket_name>/prefix $ s3cmd sync s3://<bucket_name>/prefix /path/to/source/dir
バケツ間のコピー
$ s3cmd cp s3://<source_bucket_name>/object s3://<dist_bucket_name>/