PowerCMS X ブログ
2023-12-28
この記事は2年前に書いた記事のアップデート版です。リリースから2年、実際にいくつかのサイトの構築・運用を行う中でわかってきたいくつかの課題に対して機能のアップデートを重ねてきており、そのあたりを中心にご紹介します。
PowerCMS X ver.3.x 別ウィンドウで開きます で追加された AWS_S3 / AWS_CloudFrontを利用することで、PowerCMS Xで生成した静的ファイルを Amazon S3 / CloudFrontを経由して配信することができます。同期は自動的に行われるため、運用時に特別な操作をする必要はありません。
AWS側の設定 / プラグインの導入についてはこの記事では割愛します。下記のドキュメントなどを参照いただき、Amazon S3で静的ウェブサイトをホスティングする設定を行い、CloudFrontのオリジンに Amazon S3を指定してください(もちろん、AWS_S3プラグインを使わず、EC2( CMSサーバー )をオリジンとして運用することもできます)。
プラグインの導入・設定方法は以下を参照ください。
AWS マネジメントコンソールに入らなくても PowerCMS Xの管理画面でファイルの一覧を表示できるようになりました。API経由でデータリストを取得します。
検索、S3バケットからのファイル削除、実際のS3のデータを確認できます。
拡張子によって同期先のバケットを変更できるようになりました。以下の環境変数で有効化できます。
具体的には、MP4の動画をAWS Elemental MediaConvertと連携させたS3バケットに同期するようにする、などの時、特定の拡張子のファイルを別指定した S3バケットに同期でき、また、AWS Elemental MediaConvertのジョブを管理画面で確認することができます。
実際にサイトが運用フェーズに入ると「このページ・この画像だけキャッシュを無効化したい」「このファイルは削除したい」などというケースがしばしば出てきます。PowerCMS Xはすべての URLをデータベース管理しているので、URLオブジェクトの一覧画面に2つのアクションを追加しました。URL一覧画面からS3同期・キャッシュ無効化リクエストを送信できます。
これまでもAWS_CloudFrontプラグインの設定画面でパスを個別に指定して無効化リクエストを送信することができましたが、URLを検索してそこから同期や無効化リクエストを送信できるので、直感的に操作することができると思います。
S3へのファイルの同期はこれまではリアルタイムか、キュー経由で実行される2種類の設定が選択できましたが、バッチによる同期も可能になりました(すべてを同期するバッチは用意されていましたが、より細かな指定が可能になりました)。
例えば、以下のようなバッチを15分おきに起動するように設定した場合「過去20分以内に作成・更新・削除されたファイル」を対象に同期を実行します。
sudo -u apache php ./tools/worker.php --task_ids aws_s3_synchronize_s3 --modified_only --update_from '-20 minute'
以下の環境変数でカスタマイズが可能です。
最後の「aws_s3_skip_rebuild_phase」ですが、ポップアップウィンドウでの再構築で大量のファイルがアップデートされ同期されると、負荷が高くなるのを避けるための設定です。上記のようなバッチを定期的に起動するようにしておくことで、または全体のデザイン変更などの時は再構築後に手動でバッチを叩いて同期する、などの運用が可能になります。
また、以下のようにバッチを起動すると、S3のオブジェクトと CMSのローカルファイルを比較して、タイムスタンプの新しいもの、S3に同期されていないもの、S3に存在するが CMSのディスクから消えているもののみを対象に同期を行います。毎日深夜に1度起動する、障害からの復旧時に起動するなどの使い方ができます。--classes、--exclude_classesパラメタが指定できるため、例えば冗長化構成の時、2台で負荷を分散させるような設定も可能です。
sudo -u apache php ./tools/worker.php --task_ids aws_s3_synchronize_s3 --modified_only # --classes archive
※ AWS、Amazon S3 / CloudFront / Elemental MediaConvertは、AWS の米国およびその他の国における登録商標です。
カテゴリー:技術情報 | プラグイン | サイト制作全般 | リリース&アップデート情報
投稿者:Junnama Noda