Kentico Xperienceでメディアライブラリの配信にAmazon CloudFrontを使う
いわさです。
前回はKenticoのメディアライブラリとS3を連携しました。
とても簡単に連携することが出来ました。
静的コンテンツをAmazonS3で配信するとなると、やはりCDNを導入したくなると思います。
Kenticoでは、AmazonCloudFrontでS3コンテンツを配信することもとても簡単に実現出来ます。
CloudFrontとS3を連携
以下のようにCloudFrontのオリジンにS3を指定します。
そしてKenticoでどうにかCloudFrontとうまく連携したいですね。
まずは、CloudFrontを作成し、オリジンに前回メディアライブラリ用に作成したS3バケットを指定します。
細かいCloudFrontの設定は今回は割愛します。
KenticoではCDNのパラメータは一切管理しません。個別のチューニングはCloudFrontとS3の間で行います。
作成できたらディストリビューションのドメイン名を取得しましょう。
今回もまたまたweb.config
が登場します。
CMSAmazonEndPoint
にパブリックアクセスポイントとして、ディストリビューションドメイン名を追加します。
<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はアプリケーション自体でも独自のキャッシュ機能が用意されているので、どの程度の処理能力が必要か、よく検討のうえキャッシュ戦略を立てるのが良いでしょう。