2014-06-11 Amazon S3 にファイルをアップロードする Grunt プラグイン grunt-tentacles をつくった
Amazon S3 にファイルをアップロードする Grunt プラグイン grunt-tentacles をつくった。
過去に何度か紹介しているのだけど、ぼくは bouzuya.net のデプロイや blog.bouzuya.net のデプロイに Travis CI の S3 Deployment を使っている。手軽に設定できるし、準備もほとんど要らない。
だけど、この方法には大きな問題がある。アップロードの速度・それにかかる時間である。
ファイルの有無・内容に関わらず無条件にアップロードする Travis CI の S3 Deployment では、すべてのファイルを毎回アップロードする。この挙動には時間がかかるし、ファイル数が増えれば増えるほど遅くなる。 ファイル数が少なければ問題ないのだが、blog.bouzuya.net のポスト数は 800 を超えていて、そこそこに時間がかかる。
昨日のアップロードでタイムアウトが起きていて、そろそろダメそうなので、簡単なプラグインを書いた。
それが grunt-tentacles だ。Amazon S3 にあるファイルのリストと ETag ( MD5 ) とを得て、ローカルにあるファイルのリストと MD5 とを比べる。変更のあるものだけをアップロードすることで大幅に高速化する。ローカルにあるすべてのファイルの MD5 をとることになるが、Amazon S3 にアップロードすることに比べれば、かなり速い。
ちなみに名前は kraken の下で動く予定なので tentacles にした。タスク名から動きを想像しづらいのだけど、grunt-s3
のような名前は既にとられているし、それらのほとんどはゴテゴテとしたプラグインである。シンプルなアップロードの機能のみを持つプラグインを、ぼくは求めている。
明日にはこれを適用した blog.bouzuya.net を公開するつもりだ。