CloudFront導入チュートリアル
CloudFrontとLightFile Proxyを接続し、運用を開始する方法を解説します。
ステップ 1 画像のWebP変換を行う
まずはCloudFrontで配信する画像をWebPに変換する方法を解説します。
導入前
導入前はCloudFrontがオリジンサーバー(EC2やS3バケット)に直接リクエストを送信し、JPEG/PNG/GIF画像をキャッシュしつつ、ブラウザに配信しています。
導入後
導入後はCloudFrontとオリジンサーバーの間にLightFile Proxyを配置し、JPEG/PNG/GIF画像をWebPに変換します。
LightFile ProxyはブラウザのWebP対応状況を判断し、非対応ブラウザの場合は従来のJPEG/PNG/GIF画像を配信します。
CloudFrontのキャッシュもWebP対応状況に応じて作られるため、画像データの混線はありません。
LightFile ProxyとCloudFrontの設定手順
詳細は動画をご覧ください。(音声が出ます)
LightFile Proxy導入手順のポイント
- LightFile Proxyにオリジンルーティングを追加する。
x-routing
ヘッダにサイトに固有の識別子を指定する。
- CloudFrontにLightFile Proxyへのオリジンを追加する。
x-routing
ヘッダに同じ識別子を指定する。
- CloudFrontに画像用のビヘイビア(.jpgと.png)を追加し、オリジンをLightFile Proxyにする。
- このとき
Accept
をキャッシュキーに加える。 - それによりWebP対応状況に応じたキャッシュを持てる。
- このとき
.jpeg
について
サイトによってはJPEGの拡張子.jpeg
が混在する場合があります。その場合はビヘイビアとして*.jpeg
も別途追加してください。
なぜ x-routing
を指定するのか
LightFile Proxyは、複数のCloudFrontディストリビューションの間で共有できます。
複数のディストリビューションからのリクエストに対し、どのオリジンサーバー/S3バケットから画像を取得するかを判別するため、x-routing
リクエストヘッダを利用します。
ヘッダ名
x-routing
というヘッダ名は便宜的なもので、CloudFrontからのリクエストとLightFile Proxyのオリジン設定で一致していれば他のヘッダ名(例 x-site
)でも構いません。
オリジンがパブリックではないS3バケットの場合
CloudFrontは一般公開されていないS3バケットもOAI
やOAC
の仕組みにより、オリジンにすることができます。
LightFile Proxyではクロスアカウントアクセスなどの方法により、プライベートなS3バケットもサポートしています。詳しくは、プライベートなS3バケットをオリジンにする方法を参照ください。
ステップ 2 オリジングループ機能を使う
画像のWebPへの変換が確認できたら、CloudFrontのオリジングループ機能を必ず設定してください。運用の安全性が格段に向上します。
オリジングループ機能
複数のオリジンに優先順位をつけてグループ化し、ビヘイビア(今回は*.jpgと*.png)のオリジンに指定できる機能です。
オリジングループ利用前の問題点
オリジングループを利用しないと、LightFile Proxyに問題が発生した際、サイトに画像が表示されない障害が発生します。
オリジングループ利用による改善
オリジングループ機能を使うと、LightFile Proxyに異常が発生したときはCloudFrontがLightFile Proxyを迂回してオリジンを直接参照します。画像のWebPへの変換は行われないものの、画像が表示されない障害は回避できます。
オリジングループを設定する手順
詳細は動画をご覧ください。(音声が出ます)
オリジングループ利用設定のポイント
- LightFile Proxyのオリジン設定変更。
- 試行回数
1
、接続タイムアウト10
、レスポンスタイムアウト15
に変更する。
- 試行回数
- オリジングループ
lightfile-proxy
の追加。- 優先順位はLightFile Proxyオリジン → 元々のオリジンにする。
- CloudFrontの画像経路のビヘイビア(.jpgと.png)のオリジンを変更する。
- オリジングループ
lightfile-proxy
にする。
- オリジングループ
切り戻し
LightFile Proxyをアンインストールするには、これまでと逆の手順を行います。
- 画像ビヘイビア(.jpgと.png)を削除する。
- 元から画像ビヘイビアがあった場合は、画像ビヘイビアのオリジンをオリジングループから元々のオリジンに戻す。
- オリジングループ
lightfile-proxy
を削除する。 - LightFile Proxyオリジンを削除する。
CloudFrontとのAPI連携
以上で最低限の導入手順は完了ですが、LightFile Proxyをフル活用するためCloudFront連携設定もぜひ行ってください。
さらに最適化するには
LightFile Proxyをさらに活用するには以下の項目も参照ください。
- CloudFront Functionsによるキャッシュの最適化
Accept
ヘッダによるWebP対応判定よりさらに効率的なキャッシュを実現します。
- S3バケットを安全にオリジンにする
- パブリックWebアクセスができないS3バケットを安全にオリジンにできます。