Movable TypeとAmazon S3+CloudFrontでそれなりに高負荷耐性のあるウェブサイトを作る方法

2022-12-21, by ka2hiro

この記事はMovable Type Advent Calendar 2022 - 21日目の記事です。


こんにちは。

ブログを書くのは1年ぶりです(汗

さて、今日はMovable TypeとAmazon S3, CloudFrontを組み合わせて、安く簡単に高負荷耐性のウェブサイトを作ることができる、MT S3Transferプラグインをご紹介したいと思います。

MT S3Transferプラグインは、弊社(カーリーブラケット)と12Gridで共同開発した、Movable Typeで出力したファイルを管理画面からボタン一つで、Amazon S3へ転送するプラグインです。

こんな構成のウェブサイトを作ることができます。

AWS構成図

この構成のメリットとして、

  • S3とCloudFrontで高負荷でもほぼ落ちないウェブサイトを実現
  • Movable Typeを少人数での利用であれば性能の低いサーバ(EC2インスタンス)でも実用可
  • Movable Typeをインストールしたサーバ(EC2)をウェブサイトとして公開しないことで、アクセス制限をかけるなどのセキュリティを高めることも可能(極端なことを言うと、使わないときはサーバを落としておくことも可能)
  • AWS Certificate Managerを使うことで、SSL証明書が無料な上、更新まで自動

また、デメリットとしては、

  • Movable Typeの検索、コメント、トラックバック、DataAPIなどの機能は利用不可
  • PHPやPerlなどサーバサイドプログラムによる動的コンテンツは利用不可
  • ベーシック認証によるアクセス制限が不可

などが挙げられます。

使い方は(わりと)簡単で、

  1. AWS IAMでMT S3Transfer用のユーザを作成し、Amazon S3とAmazon CloudFrontへのアクセス許可を設定、アクセスキーIDとシークレットアクセスキーをメモしておきます。
  2. Amazon S3でバケットを作成し、ウェブサイトのホスティング設定を行います。
  3. Amazon CloudFronでディストリビューションを作成し、オリジンに先ほど作成したS3バケットを指定します。
  4. Movable Type側でプラグインをインストールした後は、先に作成したアクセス情報、S3バケット名、CloudFronディストリビューションID、Movable Type側の転送元パスを設定すれば準備完了です。
  5. Movable Type側の管理画面に「S3に転送」ボタンが表示されるので、ボタン一つで出力ファイルをS3に転送できます。 S3に転送

  6. 転送後、CloudFrontのキャッシュを無効化します。(プラグインの設定で自動化も可能)

という感じです。

その他の機能として、

  • 毎日指定した時刻にS3へ転送を行う「定時転送」
  • 指定した日時に一度だけ転送を行う「予約転送」

があります。

制限事項としては、HTML内に記述するURLが、絶対パスではなく、相対パスでないとうまく動作しない、ということがあります。これは(時期は未定ですが)将来的にMT S3Transferプラグインで解決したいと思っています。

ということで、Movable Type とAmazon S3+CloudFrontで高負荷耐性のウェブサイトを作る方法として、MT S3Transferプラグインを紹介しました。お試し版もありますので、こちらよりぜひお試しください!

プラグインの設置やカスタマイズなどのご相談も承っておりますので、お気軽にお問い合わせください。