Amazon S3には静的なファイルホスティング機能があります。個人的にはDevRelのサイトはS3とCloud Frontを組み合わせてSSL/TSLでホスティングしています。静的なサイトであれば手軽に公開できて便利です。 とはいえ、多少は設定が必要であったり、S3にアップロードする時の手間が発生します。そこで使ってみたいのがStout、S3対応の静的サイトデプロイツールです。

Stoutの使い方

Stoutはcreateサブコマンドを使ってバケットの作成とRoute53へのドメイン設定追加を行ってくれます(ゾーンは予め作っておく必要があります)。

$ stout create --bucket moongift.co.jp --key $AWS_KEY --secret $AWS_SECRET

後はフォルダの中で自由にHTML、JavaScript、スタイルシートファイルを編集してサイトを作ります。終わったらdeployサブコマンドを実行します。

$ stout deploy --bucket moongift.co.jp --key $AWS_KEY --secret $AWS_SECRET
2015/07/27 09:39:29 Uploading to .DS_Store in moongift.co.jp (2216c04297c2) [60]
2015/07/27 09:39:32 Uploading to 8a6e3c6b5850/597e8eabf01a/index.html in moongift.co.jp (fcceead92bdf) [31556926]
2015/07/27 09:39:32 Uploading to 8a6e3c6b5850/index.html in moongift.co.jp (4bae45ddbe81) [31556926]
2015/07/27 09:39:33 Copying 8a6e3c6b5850/index.html to index.html
2015/07/27 09:39:33 Copying 8a6e3c6b5850/597e8eabf01a/index.html to 597e8eabf01a/index.html

+------------------------------------+
|         Deploy Successful!         |
|                                    |
|       Deploy ID: 8a6e3c6b5850      |
+------------------------------------+

そうするとS3へのアップロードが行われ、かつ過去のファイルを移動してくれます。これによりバージョン管理ではないものの、状態をロールバックさせることも可能です。

$ stout rollback --bucket moongift.co.jp --key $AWS_KEY --secret $AWS_SECRET a3b8ff290c33

設定ファイルをYAMLで定義すると、開発版と本番環境を切り替えるのも簡単にできます。

$ stout deploy --env development

Amazon S3を静的なホスティングサイトとして本格的に使っていく際に、非常に便利なツールになるのではないでしょうか。

StoutはGo製、MIT Licenseのオープンソース・ソフトウェアです。

Stout Static Website Deploy Tool by Eager EagerIO/Stout