AmazonS3 でサイトを公開
AmazonS3 に bucket を静的なWebサイトとして公開できる機能が追加されたとのことで、過去につくったプラグイン Amazon を使って試してみました。
作業前の準備
- amazon web servicesに登録し、S3 を利用できるように設定します。
- 公開するドメイン名を用意します。(※1)
- MTを信頼のできるサーバー(Amazonのアクセスキーを登録する必要があるため)にインストールします。
(※1) Amazon が用意したサブドメインを利用すればドメイン名がなくとも公開はできます。
公開手順
ドメイン名で bucket を作成する
Management Consoleに入り、公開するドメイン名で bucket を作成します。(今回は s3site.toi-planning.net を設定します)
bucket の設定を変更する
作成した bucket を右クリックして Properties を開き、Website のタブで「Enabled」にチェックを入れ、「Index Document」を「index.html」に設定します。
CNAME を設定する (ドメインの管理画面での設定です)
公開するドメイン名の CNAME (s3site.toi-planning.net) に、Properties の「Endpoint」に表示されている URL の ドメイン (s3site.toi-planning.net.s3-website-us-east-1.amazonaws.com) を設定します。
Amazon プラグインをインストールする
用意したMTへAmazon をインストールします。
Web サイトを作成する
Web サイトを作成します。この時「ウェブサイトURL」に用意したドメイン名 (s3site.toi-planning.net) を入力します。ウェブサイトパスは公開には関係ないのですが、プラグインの仕様上、どこか適当なパスを指定しておく必要があります。
プラグインを設定する
「ウェブサイトのプラグイン設定」を開き、「Access Key」と「Secret Key」にはAmazon のサイトから取得したアクセスキーを、「Bucket名」にはドメイン名を入力し、「全てのテンプレート」にチェックを入れ、保存をしてください。
再構築する
アクセスキーや bucket 正しく設定され、プラグインに足りないモジュールがなければ、この状態で再構築をすると書き出されたファイルが S3 へアップロードされ、用意したドメイン名で表示できるようになります。また画像をアップロードした場合にもサムネイルを含めて S3 から公開されます。
S3 上に乗っていないもの
mt-static 以下のファイル
別途アップロードしてから「StaticWebPath」を設定すれば S3 上のファイルを参照させることはできますが、上記の手順では MT のあるサーバー上の mt-static を参照しています。
コメントや検索の CGI
これらは「静的なサイト」と言うからには当然ですが、S3 上に載せることはできません。MT のあるサーバー上の CGI を利用することになります。
既知の不具合
- 名前にスペースを含むファイルをアップロードするとリンク切れになります。
まとめ
バックエンド/オーサリングツールとしての MT
S3をサイトとして公開するためには静的にファイルを生成する必要がある、ということで、これはまさに MT が得意としているところです。現状の Amazon プラグインではまだ機能は充実していませんが、「指定したファイルのみを CloudFront で公開する」や「Amazon Route 53 でドメイン名も管理する」のような機能を付加していけば、また面白いこともできると考えています。「クラウドで配信するコンテンツを管理するバックエンド」というのがこれからの MT の一つの使い方になるのではと考えたりしています。
S3のWebサイト公開機能
2011年2月現在では日本からのアクセスだと S3 のレスポンスは早くはないですし、費用も安いとはいえ、国内でも静的なコンテンツを配信するだけであれば安価で質のよいサービスを探すことができるので、一般的には使いどころは難しそうです。例外的に、極端に短期間な公開であったり、極端にアクセスが集中する場合などには選択肢の一つになり得ると考えています。
静的なデータで動的に表現する
静的なファイルしか置けないというは制限事項ではありますが、JavaScript がこれだけ使われている時代でもあるので、「静的にコンテンツを吐き出しておいて、JavaScript で表現を動的にする(地味なところでページ送りなど)」という方法もありではないかと考えています。
おおっ!さすがに仕事が速い。 ファイルを指定してS3にPubliishできると、メルマガのコンテンツや、ダウンロードコンテンツの配布など、瞬間的なアクセス増大対策でニーズはありそうですね。
素敵なプラグインありがとうございます!
MT6.2で Amazon 1.0を使用中ですがS3のbucket 名を変更しても画像のURLが以前の名前のままで変更されないのは仕様でしょうか。
あと一つ機能要望ですが、画像をMTにアップロードした場合 S3とMTのlocalディレクトリーへも同じデータがアップロードされるかと思いますが、こちらS3のみにアップロードを制限することは可能でしょうか。そうすればlocalのディスク容量が満杯になることを心配しなくても済むと思うので。。。
コメントありがとうございます。
> S3のbucket 名を変更しても画像のURLが以前の名前のままで変更されないのは仕様でしょうか
はい、S3 経由となるリンクが生成された際にURLがキャッシュされますので、これは仕様になります。また今のところ、このキャッシュを削除する方法はプラグインでは提供していません。
* DBを直接書き換える
* データをアップロードし直す
ことにより、キャッシュを削除することは可能です。
> こちらS3のみにアップロードを制限することは可能でしょうか
そうですね。そのようになっていると便利なケースは理解できます。(というか実際のところは多くのケースでそうなのかもしれません) ただMTは今のところファイルはローカルストレージにあることを前提とした設計になっているところもあり、それを乗り越えるのは簡単ではなかったため、このプラグインで対応するのは「ファイルを S3 から配信できる」というところまでとなっています。 (その意味では、現状では AWS であれば CloudFront のバックエンドに直接サーバーをしていできるので、S3にアップロードするまでもないというのはあるのですが)