オリジンリクエストの制御
CloudFront へのビューワーリクエストにより、キャッシュミス (リクエストされたオブジェクトがエッジロケーションでキャッシュされない) が発生した場合、CloudFront はオブジェクトを取得するためのリクエストをオリジンに送信します。これは、オリジンリクエストと呼ばれます。オリジンリクエストには、ビューワークエストの次の情報が常に含まれます。
-
URL パス (URL クエリ文字列またはドメイン名を含まないパスのみ)
-
リクエストボディ (存在する場合)
-
CloudFront がすべてのオリジンリクエストに自動的に含める HTTP ヘッダー (
Host
、User-Agent
、X-Amz-Cf-Id
など)。
ビューワーリクエストのその他の情報 (URL クエリ文字列、HTTP ヘッダー、Cookie など) は、デフォルトではオリジンリクエストに含まれません。ただし、分析やテレメトリーのためにデータを収集するなど、オリジンでこのその他の情報を受信することができます。オリジンリクエストポリシー を使用して、オリジンリクエストに含まれる情報を制御できます。
オリジンリクエストポリシーは、キャッシュキーを制御するキャッシュポリシーとは別のものです。この分離により、オリジンで追加情報を受信し、適切なキャッシュヒット率 (キャッシュヒットとなるビューワーリクエストの割合) を維持することができます。これを行うには、オリジンリクエストに含める情報 (オリジンリクエストポリシーを使用) とキャッシュキーに含める情報 (キャッシュポリシーを使用) を個別に制御します。
2 種類のポリシーは別々のものですが、関連性があります。キャッシュキーに含めるすべての URL クエリ文字列、HTTP ヘッダー、および Cookie (キャッシュポリシーを使用) は、オリジンリクエストに自動的に含まれます。オリジンリクエストポリシーを使用して、オリジンリクエストに含めるが、キャッシュキーには含めない情報を指定します。キャッシュポリシーと同様に、オリジンリクエストポリシーを CloudFront ディストリビューション内の 1 つ以上のキャッシュ動作にアタッチします。
オリジンリクエストポリシーを使用して、ビューワーリクエストに含まれていないオリジンリクエストに追加の HTTP ヘッダーを追加することもできます。これらの追加ヘッダーは、オリジンリクエストを送信する前に CloudFront によって追加されます。ヘッダー値は、ビューワーリクエストに基づいて自動的に決定されます。詳細については、「CloudFront のリクエストヘッダーの追加」を参照してください。
オリジンリクエストポリシーの作成
オリジンリクエストポリシーを使用して、CloudFront がオリジンに送信するリクエストに含まれる値 (URL クエリ文字列、HTTP ヘッダー、Cookie) を制御できます。オリジンリクエストポリシーは、CloudFront コンソール、AWS Command Line Interface (AWS CLI)、または CloudFront API を使用して作成できます。
オリジンリクエストポリシーを作成したら、CloudFront ディストリビューションの 1 つ以上のキャッシュ動作にアタッチします。
オリジンリクエストポリシーは必須ではありません。キャッシュ動作にオリジンリクエストポリシーがアタッチされていない場合、オリジンリクエストには、キャッシュポリシーで指定されたすべての値が含まれますが、それ以上は含まれません。
オリジンリクエストポリシーを使用するには、キャッシュ動作でもキャッシュポリシーを使用する必要があります。キャッシュポリシーがないと、キャッシュ動作でオリジンリクエストポリシーを使用することはできません。
オリジンリクエストポリシーについて
CloudFront には、一般的ユースケース用にマネージドポリシーと呼ばれる事前定義されたオリジンリクエストポリシーがいくつか用意されています。これらのマネージドポリシーを使用することも、ユーザーのニーズ別に独自のオリジンリクエストポリシーを作成することもできます。マネージドポリシーの詳細については、「管理オリジンリクエストポリシーの使用」を参照してください。
オリジンリクエストポリシーには以下の設定が含まれます。設定は、ポリシー情報と オリジンリクエスト設定に分類されます。
ポリシー情報
- 名前
-
オリジンリクエストポリシーを識別する名前。コンソールでは、名前を使用して、オリジンリクエストポリシーをキャッシュ動作にアタッチします。
- 説明
-
オリジンリクエストポリシーを説明するコメント。これはオプションです。
オリジンリクエスト設定
オリジンリクエスト設定では、CloudFront がオリジンに送信するリクエスト (オリジンリクエストと呼ばれる) に含まれるビューワーリクエストの値を指定します。値には、URL クエリ文字列、HTTP ヘッダー、および Cookie を含めることができます。指定した値は、オリジンリクエストに含まれますが、キャッシュキーには含まれません。キャッシュキーの制御については、「キャッシュキーの管理」を参照してください。
- ヘッダー
-
CloudFront によりオリジンリクエストに含まれる、ビューワーリクエストの HTTP ヘッダー。ヘッダーには、以下のいずれかの設定を選択できます。
-
[Note (なし)] – ビューワーリクエストの HTTP ヘッダーは、オリジンリクエストに含まれません。
-
[All viewer headers (すべてのビューワーヘッダー)] – ビューワーリクエストのすべての HTTP ヘッダーは、オリジンリクエストに含まれます。
-
[次のヘッダーを含める] – オリジンリクエストに含める HTTP ヘッダーを指定します。
-
[すべてのビューワーヘッダーと次の CloudFront ヘッダー] – ビューワーリクエストのすべての HTTP ヘッダーが、オリジンリクエストに含まれます。さらに、オリジンリクエストに追加する CloudFront ヘッダーを指定します。CloudFront ヘッダーの詳細については、「CloudFront のリクエストヘッダーの追加」を参照してください。
[次のヘッダーを含める] または [すべてのビューワーヘッダーと次の CloudFront ヘッダー] の設定を使用する場合、HTTP ヘッダーは値ではなく名前で指定します。たとえば、次の HTTP ヘッダーを考えてみます。
Accept-Language: en-US,en;q=0.5
この場合、ヘッダーを
Accept-Language: en-US,en;q=0.5
としてではなく、Accept-Language
として指定します。ただし、CloudFront では、オリジンリクエストに、その値を含む完全なヘッダーが含まれます。 -
- Cookie
-
CloudFront によりオリジンリクエストに含まれる、ビューワーリクエストの Cookie。Cookie には、以下のいずれかの設定を選択できます。
-
[None (なし)] – ビューワーリクエストの Cookie は、オリジンリクエストに含まれません。
-
[All (すべて)] – ビューワーリクエストのすべての Cookie は、オリジンリクエストに含まれます。
-
[指定した Cookie を含める] – ビューワーリクエストのどの Cookie をオリジンリクエストに含めるかを指定します。
[指定した Cookie を含める] 設定を使用する場合、Cookie は値ではなく名前で指定します。たとえば、次の
Cookie
ヘッダーを考えてみます。Cookie: session_ID=abcd1234
この場合、Cookie を
session_ID=abcd1234
としてではなく、session_ID
として指定します。ただし、CloudFront では、オリジンリクエストに、その値を含む完全な Cookie が含まれます。 -
- クエリ文字列
-
CloudFront によりオリジンリクエストに含まれる、ビューワーリクエストの URL クエリ文字列。クエリ文字列には、以下のいずれかの設定を選択できます。
-
[None (なし)] – ビューワーリクエストのクエリ文字列は、オリジンリクエストに含まれません。
-
[All (すべて)] – ビューワーリクエストのすべてのクエリ文字列は、オリジンリクエストに含まれます。
-
[指定したクエリ文字列を含める] - ビューワーリクエストのどのクエリ文字列をオリジンリクエストに含めるかを指定します。
[指定したクエリ文字列を含める] 設定を使用する場合、クエリ文字列は値ではなく名前で指定します。たとえば、次の URL パスを考えてみます。
/content/stories/example-story.html?split-pages=false
この場合、クエリ文字列を
split-pages=false
としてではなく、split-pages
として指定します。ただし、CloudFront では、オリジンリクエストに、その値を含む完全なクエリ文字列が含まれます。 -