Google Cloud Storage でStatic Web Site

ホスティングサービス上で(ほとんど誰も見てない)静的なWeb Siteを運用していたのだけど、今どきもっと他の方法があるだろう、ということで調べてみた。もちろん、App Engineでやることもできるのだけど、それはちょっとどうなの?ということで。

そもそも静的なのだから、データが配れればいいというだけの話なので、ストレージサービスでやってみようと思ってぐぐってみたらS3ではできますよという記事が引っかかった。じゃあ、S3でやればいいのだけど有償になる。Google Storageのほうは、GMailの容量を増やすためにどうせ有償化していたので、こっちでやってみた。

やりかた

gsutilの設定が終わっていれば、実はすごく簡単。

バケットを作る。
> gsutil mb gs://BUCKET_NAME
ディレクトリツリーをアップロード
> gsutil cp -a public-read -R * gs://BUCKET_NAME
  • R でリカーシブコピーを指定。-a でだれでも読めるように設定。

これで、

http://commondatastorage.googleapis.com/BUCKET_NAME/XXXX

からアクセスできるようになるはず。

問題点

でも実は、Google Storageには問題点がいくつか。アップロードしたページを表示するだけならこれでOKなんだけど、Web Siteとしての挙動としては不十分。

  • / で終わるURLでアクセスした時にデフォルトのhtml (通常はindex.html) にリダイレクトしてくれない。
  • 存在しないURLへアクセスした場合に404が返らない。

この記事によると、Amazonではこのあたりがちゃんと出来るようになっているらしい。
実装はそれほど面倒では無さそうなので、サクッと実装してくれないかな >> Googleの人。