NTTドコモR&Dの技術ブログです。

「小規模サイトに最適解。AWSでスマート運用!」 ~コンテンツ管理サイトを作ってみた~

はじめに

「ECサイト運営=CMS(Contents Management System)」と思っていませんか?
確かに、フル機能CMSは便利です。しかし、商品数が少なく、更新内容も画像や価格の変更、イベント時のバナー差し替え程度なら、正直オーバースペックになりがちです。

私が担当しているECサイトも、まさにそんなケース。ページ数は増える予定がなく、日々の運用はとてもシンプル。それでも、コンテンツ管理サイトがないと随時の改修開発が必要になり、運用効率が下がります。

そこで今回は、AWSのクラウド標準機能を組み合わせて、軽量なコンテンツ管理サイトを自作した方法をご紹介します。
「CMSを導入するほどじゃないけど、もっとスマートに運用したい」方に、ぜひ参考にしていただければと思います。


1.運用イメージ

コンテンツ管理サイトを導入することで、運用フローは次のようになります。

  1. コンテンツ管理サイトにログイン
  2. 商品やバナーの編集
  3. プレビューで確認
  4. 公開日時を予約
  5. 指定日時になると、自動でお客様向けサイトへ反映

2.システム構成と処理概要

以下は簡略化したAWS構成です(今回の対象部分のみ記載)

AWS構成図

1. ユーザ管理

  • コンテンツ管理サイトの認証は AWS Cognito を利用

2. データベース構成

  • 同一データベース内でスキーマを分離
    • 公開用スキーマ:お客様向けサイトで利用するデータ
    • 管理用スキーマ:コンテンツ管理サイトで利用する草稿・承認待ちデータ

3. 商品編集

  • 管理画面で編集した内容は管理用スキーマに保存
  • 画像は S3(管理用バケット) に格納

セキュリティ強化のポイント

  • サーバ側でリクエスト情報ではなく、ファイル情報を基に以下のチェックを実施
    • 保存前に入力チェックで「拡張子」「ファイルタイプ」「ファイル識別子」「ファイル構造」を検証
    • 悪意のあるファイルがアップロードされた場合、ファイルから無効なデータ(悪意のあるコード等)を除去

4. プレビュー

  • テキスト情報:管理用スキーマから取得
  • 画像:S3(管理用バケット) → CloudFront 経由で表示

5. リリース予約

  • 管理画面でプルダウン形式で日時を選択し、Amazon EventBridgeにスケジュールを登録

6. リリース処理

  • 指定日時に EventBridge が Lambda を起動し、以下の処理を実施
    • 以下の処理を 1つのトランザクションとして扱う
      • 管理スキーマのレコード更新(承認状態など)
      • 公開用スキーマのレコード更新(管理用 → 公開用にデータをコピー)
      • 公開用 S3 の画像更新(DBのファイル名をキーにして管理者バケットから公開用バケットへファイルをコピー)
    • ※いずれかの処理が失敗した場合はトランザクション単位でロールバック

参考情報

  • 上記を2名で2カ月間で構築

補足

  • 本記事では基本的な構成を紹介しましたが、セキュリティ対応や競合管理は各システムの要件に応じて設計・実装する必要があります。

まとめ

「CMSは便利だけど、うちのサイトにはちょっと重い…」そんな悩みを抱えていませんか?
商品数が少なく、更新もシンプルなら、フル機能CMSはオーバースペックです。

AWSの標準サービスを組み合わせれば、ログイン・編集・プレビュー・公開予約といった基本機能を、軽量かつ自動化できます。
余計な機能を削ぎ落とし、必要な部分だけを自作することで、“ちょうどいい運用”が実現可能です。

「CMSを導入するほどじゃないけど、もっとスマートに運用したい」
そんな方は、クラウド標準機能を活用したコンテンツ管理サイトづくりをぜひ検討してみてください。