Kentico Xperienceでメディアライブラリの配信にAmazon CloudFrontを使う

2021.07.20

いわさです。

前回はKenticoのメディアライブラリとS3を連携しました。

とても簡単に連携することが出来ました。
静的コンテンツをAmazonS3で配信するとなると、やはりCDNを導入したくなると思います。

Kenticoでは、AmazonCloudFrontでS3コンテンツを配信することもとても簡単に実現出来ます。

CloudFrontとS3を連携

以下のようにCloudFrontのオリジンにS3を指定します。
そしてKenticoでどうにかCloudFrontとうまく連携したいですね。

まずは、CloudFrontを作成し、オリジンに前回メディアライブラリ用に作成したS3バケットを指定します。

細かいCloudFrontの設定は今回は割愛します。
KenticoではCDNのパラメータは一切管理しません。個別のチューニングはCloudFrontとS3の間で行います。

作成できたらディストリビューションのドメイン名を取得しましょう。

今回もまたまたweb.configが登場します。
CMSAmazonEndPointにパブリックアクセスポイントとして、ディストリビューションドメイン名を追加します。

web.config

  <appSettings>
    <add key="CMSProgrammingLanguage" value="C#" />
    <add key="WS.webservice" value="http://localhost/WebService/webservice.asmx" />
    <add key="CMSTrialKey" value="CX13-HOGE-HIGE" />
    <add key="ChartImageHandler" value="storage=session;timeout=20;" />
    <add key="PageInspector:ServerCodeMappingSupport" value="Disabled" />
    <add key="ValidationSettings:UnobtrusiveValidationMode" value="None" />
    <add key="CMSApplicationGuid" value="917846d2-c191-4b29-8b7c-286ca1306c2f" />
    <add key="CMSApplicationName" value="Default Web Site/Kentico13_1" />
    <!-- Note: Changing the 'CMSHashStringSalt' value may prevent macros from resolving correctly, and break dialog links and images on your website. 
    To fix these issues, you need to globally re-sign macros in 'System -> Macros -> Signatures' or manually re-save the affected content. -->
    <add key="CMSHashStringSalt" value="bb7dee22-95a0-4e37-aa23-129884f8dd79" />
    <add key="CMSAmazonAccessKeyID" value="AAAAAAAAAA" />
    <add key="CMSAmazonAccessKey" value="BBBBBBBBBB" />
    <add key="CMSAmazonBucketName" value="iwasa-kentico-202107" />
    <add key="CMSAmazonPublicAccess" value="true"/>
    <add key="CMSAmazonEndPoint" value="https://d1fc9jnigzk71b.cloudfront.net"/>
  </appSettings>

なんと、これだけです。

確認結果

アップロード済みのメディアライブラリコンテンツを見てみましょう。

ファイルをアップロードし直す必要はありません。
ページに埋め込まれるDirect PathのFQDNはCloudFrontを指していますね。

今回もとても簡単でした。

ただ、前回と同様に注意点があります。
既にページに埋め込まれた画像パスは、CloudFrontを指していませんので個別にパスの置き換えが必要になります。

KenticoでのCDNの使い方

Webサイトのフロント全体をCDNでキャッシュさせることは出来るのか?という疑問が出てくると思います。
動的CMSのKenticoでは、メディアライブラリでCDNを使い、フロント自体はCDNでキャッシュさせる方法が推奨されています。
これは、Kenticoの機能でサーバーサイドでマーケティングオートメーションのトラッキングやパーソナライズを行っていることに起因しています。

これらの機能を使わない前提であれば、フロントにCDNを配置することは可能です。
ただし、Kenticoはアプリケーション自体でも独自のキャッシュ機能が用意されているので、どの程度の処理能力が必要か、よく検討のうえキャッシュ戦略を立てるのが良いでしょう。

参考