WEBサービス創造記

WEBサービスを作ったり保守したりしてる人のメモブログです。

S3へs3cmdコマンドでファイルをアップロードする

      2014/09/29

s3cmdコマンドのインストール

AWSのアカウントをすでに持っててS3が使えることが前提。
以下はMacでbrewを利用してインストールする場合。

※事前にbrewがインストールされていること

$ brew install s3cmd

Portでもパッケージがあってインストールできるみたい。

Ubuntuの場合はaptで入る。

$ sudo apt-get -y install s3cmd

認証用ユーザ作成

access_keyやsecret_keyを生成するにはナビゲーションバーのアカウント名をクリックして「Security Credentials」を選択。
左のメニューから「Users」を選択し、「Create New Users」をクリック。
任意のユーザ名を入力し、Createをクリック。

access_keyとsecret_keyが表示される。
後で確認できない(らしい)のでダウンロードして保存しておくのがおすすめ。

ユーザの作成ができたらこのユーザにS3へのアップロード権限を与える。

ユーザーを選択して「Attach User Policy」をクリック。
今回はS3に対する権限を与えたいため「Select Policy Template」から「Amazon S3 Full Access」を選択して「Select」をクリック。

ポリシードキュメントの生成画面が表示されるので、特に編集の必要がなければ「Apply Policy」をクリック。

これで生成したユーザのaccess_keyとsecret_keyを使ってS3へのアップロードが可能となる。

設定

$ s3cmd --configure
Access Key: access_key入力
Secret Key: secret_key入力
Encryption password: 空Enter
Path to GPG program: 空Enter
Use HTTPS protocol [No]: Yes

このときaccess_keyやsecret_keyの末尾にスペースが入らないように注意(コピペするとたまに入る)。

下記コマンドで接続テストを行って成功すればOK。

$ s3cmd info s3://ネームスペース名

s3cmdコマンドによるアップロード

ローカルにあるディレクトリを丸ごとアップロード

$ s3cmd put --recursive   /path/to/mydir  s3://bucketname/foo/bar/ 

参考資料

 - AWS , , , ,