CloudFront でクエリ文字列パラメータを転送するには

5月 27, 2020AWS,CloudFront



概要

  • 今回は、経験をもとにしたCloudFront のノウハウをご紹介します。CloudFront はデフォルトのキャッシュ動作の設定では、オリジン側にクエリ文字列パラメータを転送しません。
  • CloudFrontは、キャッシュ最適化のため、デフォルトではクエリ文字列パラメータの転送とキャッシュを行いません。これにより、CloudFront がキャッシュからリクエストを処理できる可能性が高くなり、パフォーマンスが向上し、オリジンの負荷は低下します。
  • 一般的にウェブアプリケーションは、クエリ文字列(?に続く文字列)を使用してオリジンにリクエストを送信します。CloudFront のデフォルトの動作は、下記5つのリクエストを全て共通として処理します。
    • http://d111111abcdef8.cloudfront.net/main.html?language=de
    • http://d111111abcdef8.cloudfront.net/main.html?language=en
    • http://d111111abcdef8.cloudfront.net/main.html?language=es
    • http://d111111abcdef8.cloudfront.net/main.html?language=fr
    • http://d111111abcdef8.cloudfront.net/main.html?language=jp
  • CloudFrontのクエリ文字列の転送とキャッシュの設定を変更することで、上記5つのリクエストを個別にキャッシュし、オリジンへの転送を行います。オリジン側に全てのクエリ文字列パラメータを転送する必要があるサービスでは、次に記載する設定を変更します。
 

CloudFront でクエリパラメータを転送するには

  • CloudFront のディストリビューション選択し、[Behaviors]タブを開きます。
  • 対象のcache behaviorを選択し、[Edit]を押します。
  • Query String Forwarding and Caching(クエリ文字列の転送とキャッシュ)の設定を “Forward all, cache based on all" に変更します。
  • 以下、各パラメータの説明です。
    • None (Improves Caching)
      オリジンがクエリ文字列パラメータの値に関係なくオブジェクトの同じバージョンを返す場合、このオプションを選択します。これにより、CloudFront がキャッシュからリクエストを処理できる可能性が高くなり、パフォーマンスが向上し、オリジンの負荷が低下します。
    • Forward all, cache based on whitelist
      オリジンサーバーが 1 つ以上のクエリ文字列パラメータに基づいてオブジェクトの異なるバージョンを返す場合、このオプションを選択します。次に、キャッシュ条件として CloudFront が使用するパラメータを [クエリ文字列のホワイトリスト] フィールドで指定します。
    • Forward all, cache based on all
      オリジンサーバーがすべてのクエリ文字列パラメータについてオブジェクトの異なるバージョンを返す場合、このオプションを選択します。
 
  • [Yes, Edit]を押し、変更内容を確定します。
  • ディストリビューションのStatus が"Deployed" に変わるまで待ちます。
 

参考資料

  • その他のCloudFront設定は、下記の記事も参考にしてください。キャッシュ動作の設定詳細については、AWSドキュメントを合わせてご確認下さい。

AWS,CloudFront

Posted by takaaki