どうもなまこです。前回の記事でWordPressに保存する画像をWebサーバーではなくS3に保管する記事を書きました。

今回はその続きでS3に保存したデータをCloudFrontを利用して画像を高速配信する手法を解説していきます。
この記事ではAWSのCDNサービスの一つであるCloudFrontのサービスについて解説しています。
S3に保存している画像をキャッシュで配信することで画像を高速で配信することを目指しています。
補足、乖離している点があればご指摘いただけると助かります。

CloudFrontとは?
CloudFrontはAWSが提供する高速コンテンツ配信ネットワークサービス(CDN)です。CDNの技術により画像、動画、アプリケーションを低レイテンシーで配信することができます。
Amazon Prime VideoやNetFlixでもCDNの技術が使われており、CDNのおかげで動画をスムーズに視聴することができています。
前回の記事にも記しましたが、CDNについての説明は以下の記事にて詳しく説明されているのでご参照ください。
簡単に述べるとエッジサーバーと呼ばれるものが従来のサーバーとは別に世界中に存在しており、アクセスする場所によってアクセス元から近いサーバーを選択するという仕組みになっています。
S3に保存した画像を高速配信できるようにする
前回の続きでS3に保存した画像を高速配信できる仕組みにしていきます。
ディストリビューションを作成する
AWSのCloudFrontの画面からCreate Distribution -> Get Startの順にクリックしていきます。Origin Domain Nameに設定したS3のバケットを選択します。

Default Cache Behavior Settingsの項目に進みます。ここはデフォルトのままにしました。
Distribution Settingsの項目のPrice Classを Use All Edge Locationsを選択します。これにより世界中のエッジサーバーからキャッシュを使用することができます。
その他の項目もデフォルトのままで設定します。Create Destributionをクリックして完了です。StateがEnableになればCloudFrontのドメインでアクセスできるようになります。
SSL証明書を入手する
これでCloudFrontのドメインでアクセスすることができましたが、独自ドメインでアクセスできるようにしていきます。Certificate Managerの画面に遷移します。
証明書のリクエストを押し、ドメイン名を追加していきます。検証方法を選択して確定していきます。ドメインをすでにRoute53で設定済みであれば”Route 53でのレコードの作成”をクリックします。これによりドメインのDNC設定にCNAMEレコードを追加することができます。
SSL証明書を用いてサブドメインを登録する
CloudFrontのCloudFront Distributionの画面からIDをクリックし、GeneralのタブからEditをクリックします。
Alternate Domain names(CNAMEs)に設定したいサブドメインを入力します。私の場合staticをサブドメインにしました。Custom SSL Certificateにチェックし、先ほど入手した証明書を選択できるようになります。

残りの項目はデフォルトのままにし、Yes, Editを選択します。これでCNAMEsの登録は完了です。
Route 53にCNAMEsを登録する
このままでは画像はCloudFrontのドメインのままのため、先ほど設定したサブドメインを紐づけるため、Route 53を設定し、レコード名にCNAMEsを登録していきます。
レコードタイプにCNAME、値にCloudFrontのドメインを入力し、保存します。

Offload Media Liteでカスタムドメインを設定する
WordPressのプラグインの設定をしていきます。設定 -> Offload Media LiteからDELIVERY ProviderのところでデフォルトではAmazon S3となっているため、Changeをクリックします。Amazon S3からAmazon CloudFrontに変更します。
Custom Domain (CNAME)の設定をONにし、先ほど決めたサブドメインの名前を入力します。

これでCloudFrontの設定は終了です。
画像のURLがS3でなく、サブドメインになっていれば成功です!S3のデータを東京リージョンに置いているので日本ではCloudFrontとS3とで画像の配信の差があまりわかりませんが、海外からのアクセスだと結構差があるようです。
まとめ
前回と2回に分けて画像の高速配信についてやっていきました。当ブログにはオーバースペックな機能かと思いますがネットワークの勉強にと思っています^^;
AWSにはまだまだ使いこなしていない機能がたくさんありますが少しずつ勉強していきたいと思います。
- CloudFrontを用いれば世界中のエッジサーバーを利用して画像や動画を高速で配信できる
- CloudFrontのドメインを独自ドメインに変えるにはSSL証明書を入手し、サブドメイン(CNAME)を登録する
- Route 53にCNAMEを登録し、CloudFrontのドメインを値に設定する
- Offload Media LiteのCustom Domainを独自のサブドメインに変更する
