この記事は約4分で読めます。
この記事は1年以上前に書かれたものです。
内容が古い可能性がありますのでご注意ください。
こんにちは。「カラオケ行くー」と言ったら「ひとりで?」という返事が返ってくるようになった竹永です。
みなさまはCygwinを使ったことはありますか?僕はなかなか気に入っています。
社内のWindowsな方々に「Cygwin使いましょう!」と布教していますが、基本的な返事は「いらない」です。
でも正直なところ、仮想マシンにLinuxを入れるかMacを買ったほうが手っ取り早いです。しょうがない。
さて、使い始めてから気がついたのですが、G○○gle先生にCygwinのことを聞いてもあまり答えてくれません。
今回のs3cmdのインストールも、その1つです。
WindowsでUNIXライクな黒い画面の選択肢がCygwinくらいしかないのにこれはひどい。
ということで、インストールして使うところまでをまとめてみました。
必要なパッケージのインストール
Cygwinの公式サイトからダウンロードできるsetup-x86.exeを使ってs3cmdを動かすのに必要なパッケージをインストールします。
必要なパッケージは以下のとおりです。
- git
- python (バージョン2.x)
- python-setuptools
これだけです。インストールに少し時間がかかるかもしれませんが気長に待ちましょう。
※apt-cygはお肌に合わなかったので使わない方向でいきます。
s3cmdのダウンロードとインストール
公式のGitHubリポジトリからgit cloneを使ってダウンロードします。
$ git clone https://github.com/s3tools/s3cmd.git
そしてインストール。
$ cd s3cmd $ python setup.py install
これでインストールは完了です。
s3cmdを実行できるか確認してみましょう。
$ cd $ s3cmd --version s3cmd version 1.5.0-beta1
バージョンが表示されるようであればインストールされています。
s3cmdの設定
s3cmd --configureで初期設定を行います。
まずはアクセスキーとシークレットアクセスキーを入力します。
S3へのアクセス権限だけを持ったIAMユーザーのキーを使うのがおすすめです。
$ s3cmd --configure Enter new values or accept defaults in brackets with Enter. Refer to user manual for detailed description of all options. Access key and Secret key are your identifiers for Amazon S3 Access Key: AKIAXXXXXXXXXXXXXXXX Secret Key: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
次はクライアント側でのファイル暗号化の設定です。今回は使いません。
空白のままエンターを押して次に進みましょう。
※ファイル暗号化を使用する場合は、GPGを事前にインストールして設定すると使用できます。
※初期設定はこちらを参考にしてください。
Encryption password is used to protect your files from reading by unauthorized persons while in transfer to S3 Encryption password: Path to GPG program:
HTTPSを使用するかどうかを選択します。プロキシ越しの環境では使用できないので注意しましょう。
※今回はYesにします(Noを選択するとプロキシの設定を行えます)。
When using secure HTTPS protocol all communication with Amazon S3 servers is protected from 3rd party eavesdropping. This method is slower than plain HTTP and can't be used if you're behind a proxy Use HTTPS protocol [No]: y
次に、設定内容の確認とS3への接続テストを行うかの選択肢が表示されます。
そのままエンターを押すか、yを入力後エンターを押すと接続テストを行ってくれます。
New settings: Access Key: AKIAXXXXXXXXXXXXXXXX Secret Key: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx Encryption password: Path to GPG program: None Use HTTPS protocol: True HTTP Proxy server name: HTTP Proxy server port: 0 Test access with supplied credentials? [Y/n] y Please wait, attempting to list all buckets... Success. Your access key and secret key worked fine :-) Now verifying that encryption works... Not configured. Never mind.
無事に接続テストに成功したら、設定を保存するかどうかを聞かれます。
ので、yで設定を保存します。
Save settings? [y/N] y Configuration saved to '/home/UserName/.s3cfg'
これでs3cmdを使う準備が整いました。
使ってみる
さっそく、s3cmdでS3を操作してみましょう。
s3cmd lsでバケットの一覧を取得できます。
$ s3cmd ls 2013-08-26 04:33 s3://hogehoge 2013-06-26 12:08 s3://fugafuga 2014-01-21 10:05 s3://hungaaaaaaa …
s3cmd ls s3://[バケット名]/[ディレクトリ名]でバケットのファイル・ディレクトリ一覧を取得できます。
$ s3cmd ls s3://hogehoge 2014-02-27 05:0751 s3://hogehoge/fuga.txt
s3cmd get s3://[バケット名]/[ファイル名]でファイルの取得ができます。
$ s3cmd get s3://hogehoge/fuga.txt s3://hogehoge/fuga.txt -> ./fuga.txt [1 of 1] 51 of 51 100% in0s 471.46 B/s done $ ls fuga.txt
s3cmd put [アップロードするファイル名] s3://[バケット名]でファイルのアップロードができるはずですが…。
$ s3cmd put hungaaa.txt s3://hogehoge WARNING: Module python-magic is not available. Guessing MIME types based on file extensions. hungaaa.txt -> s3://hogehoge/hungaaa.txt [1 of 1] 14 of 14 100% in0s 152.77 B/s done ERROR: S3 error: 403 (SignatureDoesNotMatch): The request signature we calculated does not match the signature you provided. Check your key and signing method.
何やら怒られてしまいました。
WARNINGに出てくるpython-magicは稀にとんでもないMIMEタイプを返してくるので無視しますが、ERRORはどうにかしなければなりません。
頑張って調べた結果、--no-preserveをつけるとアップロードできるようなので、
s3cmd put --no-preserve [アップロードするファイル名] s3://[バケット名]でファイルのアップロードが出来ます。
$ s3cmd put --no-preserve hungaaa.txt s3://hogehoge WARNING: Module python-magic is not available. Guessing MIME types based on file extensions. hungaaa.txt -> s3://hogehoge/hungaaa.txt [1 of 1] 14 of 14 100% in0s88.25 B/s done $ s3cmd ls s3://hogehoge 2014-02-27 05:0751 s3://hogehoge/fuga.txt 2014-02-27 05:4814 s3://hogehoge/hungaaa.txt
s3cmd del s3://[バケット名]/[オブジェクト名]で削除ができます。
$ s3cmd del s3://hogehoge/fuga.txt File s3://hogehoge/fuga.txt deleted $ s3cmd ls s3://hogehoge 2014-02-27 05:4814 s3://hogehoge/hungaaa.txt
最後に
今回は基本的なコマンドのみを紹介しましたが、s3cmd --helpで使い方を表示することができます。
S3の操作をブラウザを開かずに簡単にできるので、ぜひマスターしたいですね。
$ s3cmd --help Usage: s3cmd [options] COMMAND [parameters] S3cmd is a tool for managing objects in Amazon S3 storage. It allows for making and removing "buckets" and uploading, downloading and removing "objects" from these buckets. …
P.S.
最初にインストールしようとした頃、ググっても別OSのインストール手順しか出てこないので「Cygwinにインストール出来ないのでは」という不安に駆られました。
が、ググらなくてもs3cmdディレクトリにあるINSTALLを読めば一発でした。まさに灯台下暗し。
putで失敗する問題を解決するために、休日を7日ほど使いましたが後悔はしていないです。ホントダヨ。