

# ポリシーを使用してオリジンリクエストを制御する
<a name="controlling-origin-requests"></a>

CloudFront へのビューワーリクエストにより、*キャッシュミス* (リクエストされたオブジェクトがエッジロケーションでキャッシュされない) が発生した場合、CloudFront はオブジェクトを取得するためのリクエストをオリジンに送信します。これは、*オリジンリクエスト*と呼ばれます。オリジンリクエストには、ビューワークエストの次の情報が常に含まれます。
+ URL パス (URL クエリ文字列またはドメイン名を含まないパスのみ)
+ リクエストボディ (存在する場合)
+ CloudFront がすべてのオリジンリクエストに自動的に含める HTTP ヘッダー (`Host`、`User-Agent`、`X-Amz-Cf-Id` など)

ビューワーリクエストのその他の情報 (URL クエリ文字列、HTTP ヘッダー、Cookie など) は、デフォルトではオリジンリクエストに含まれません。(例外:レガシーキャッシュ設定では、CloudFront はデフォルトでヘッダーをオリジンに転送します。) ただし、分析やテレメトリーのためにデータを収集するなど、オリジンでこのその他の情報を受信することができます。*オリジンリクエストポリシー* を使用して、オリジンリクエストに含まれる情報を制御できます。

オリジンリクエストポリシーは、キャッシュキーを制御する[キャッシュポリシー](controlling-the-cache-key.md)とは別のものです。これにより、オリジンで追加情報を受信できます。さらに適切なキャッシュヒット率 (キャッシュヒットとなるビューワーリクエストの割合) を維持できます。**これを行うには、オリジンリクエストに含める情報 (オリジンリクエストポリシーを使用) とキャッシュキーに含める情報 (キャッシュポリシーを使用) を個別に制御します。

2 種類のポリシーは別々のものですが、関連性があります。キャッシュキーに含めるすべての URL クエリ文字列、HTTP ヘッダー、および Cookie (キャッシュポリシーを使用) は、オリジンリクエストに自動的に含まれます。オリジンリクエストポリシーを使用して、オリジンリクエストに含めるが、キャッシュキーには*含めない*情報を指定します。キャッシュポリシーと同様に、オリジンリクエストポリシーを CloudFront ディストリビューション内の 1 つ以上のキャッシュ動作にアタッチします。

オリジンリクエストポリシーを使用して、ビューワーリクエストに含まれていないオリジンリクエストに追加の HTTP ヘッダーを追加することもできます。これらの追加ヘッダーは、オリジンリクエストを送信する前に CloudFront によって追加されます。ヘッダー値は、ビューワーリクエストに基づいて自動的に決定されます。詳細については、「[CloudFront のリクエストヘッダーを追加する](adding-cloudfront-headers.md)」を参照してください。

**Topics**
+ [オリジンリクエストポリシーを理解する](origin-request-understand-origin-request-policy.md)
+ [オリジンリクエストポリシーを作成する](origin-request-create-origin-request-policy.md)
+ [マネージドオリジンリクエストポリシーを使用する](using-managed-origin-request-policies.md)
+ [CloudFront のリクエストヘッダーを追加する](adding-cloudfront-headers.md)
+ [オリジンリクエストポリシーとキャッシュポリシーの連携方法を理解する](understanding-how-origin-request-policies-and-cache-policies-work-together.md)

# オリジンリクエストポリシーを理解する
<a name="origin-request-understand-origin-request-policy"></a>

CloudFront には、一般的ユースケース用に*マネージドポリシー*と呼ばれる事前定義されたオリジンリクエストポリシーがいくつか用意されています。これらのマネージドポリシーを使用することも、ユーザーのニーズ別に独自のオリジンリクエストポリシーを作成することもできます。マネージドポリシーの詳細については、「[マネージドオリジンリクエストポリシーを使用する](using-managed-origin-request-policies.md)」を参照してください。

オリジンリクエストポリシーには以下の設定が含まれます。設定は、*ポリシー情報*と *オリジンリクエスト設定*に分類されます。

## ポリシー情報
<a name="origin-request-understand-origin-request-policy-info"></a>

**名前**  
オリジンリクエストポリシーを識別する名前。コンソールでは、名前を使用して、オリジンリクエストポリシーをキャッシュ動作にアタッチします。

**説明**  
オリジンリクエストポリシーを説明するコメント。これはオプションです。

## オリジンリクエスト設定
<a name="origin-request-understand-origin-request-policy-settings"></a>

オリジンリクエスト設定では、CloudFront がオリジンに送信するリクエスト (オリジンリクエストと呼ばれる) に含まれるビューワーリクエストの値を指定します。値には、URL クエリ文字列、HTTP ヘッダー、および Cookie を含めることができます。指定した値は、オリジンリクエストに含まれますが、キャッシュキーには含まれません。キャッシュキーの制御については、「[ポリシーを使用してキャッシュキーを制御する](controlling-the-cache-key.md)」を参照してください。

**ヘッダー**  
CloudFront によりオリジンリクエストに含まれる、ビューワーリクエストの HTTP ヘッダー。ヘッダーには、以下のいずれかの設定を選択できます。  
+ [**Note (なし)**] – ビューワーリクエストの HTTP ヘッダーは、オリジンリクエストに*含まれません*。
+ [**All viewer headers (すべてのビューワーヘッダー)**] – ビューワーリクエストのすべての HTTP ヘッダーは、オリジンリクエストに含まれます。
+ [**すべてのビューワーヘッダーと次の CloudFront ヘッダー**] – ビューワーリクエストのすべての HTTP ヘッダーが、オリジンリクエストに含まれます。さらに、オリジンリクエストに追加する CloudFront ヘッダーを指定します。CloudFront ヘッダーの詳細については、「[CloudFront のリクエストヘッダーを追加する](adding-cloudfront-headers.md)」を参照してください。
+ [**次のヘッダーを含める**] – オリジンリクエストに含める HTTP ヘッダーを指定します。
**注記**  
**[オリジンのカスタムヘッダー]** 設定に既に含まれているヘッダーを指定しないでください。詳細については、「[オリジンリクエストにカスタムヘッダーを追加するように CloudFront を設定する](add-origin-custom-headers.md#add-origin-custom-headers-configure)」を参照してください。
+ **[以下を除くすべてのビューワーヘッダー]** — オリジンリクエストに含まれ***ない*** HTTP ヘッダーを指定します。指定されたものを除いて、ビューワーリクエストの他のすべての HTTP ヘッダーが含まれます。
**[すべてのビューワーヘッダーと次の CloudFront ヘッダー]**、**[次のヘッダーを含める]** または **[以下を除くすべてのビューワーヘッダー]** の設定を使用する場合、HTTP ヘッダーはヘッダー名のみで指定します。CloudFront では、オリジンリクエストに、その値を含む完全なヘッダーが含まれます。  
**[以下を除くすべてのビューワーヘッダー]** 設定を使用してビューワーの `Host` ヘッダーを削除すると、CloudFront はオリジンのドメイン名を含む新しい `Host` ヘッダーをオリジンリクエストに追加します。

**Cookie**  
CloudFront によりオリジンリクエストに含まれる、ビューワーリクエストの Cookie。Cookie には、以下のいずれかの設定を選択できます。  
+ [**None (なし)**] – ビューワーリクエストの Cookie は、オリジンリクエストに*含まれません*。
+ [**All (すべて)**] – ビューワーリクエストのすべての Cookie は、オリジンリクエストに含まれます。
+ **[次のヘッダーを含める]** – ビューワーリクエストのどの Cookie をオリジンリクエストに含めるかを指定します。
+ **[次を除くすべての Cookie]** – ビューワーリクエストのどの Cookie をオリジンリクエストに含め***ない***かを指定します。ビューワーリクエストの他のすべての Cookie が含まれます。
**[次のヘッダーを含める]** または **[次を除くすべての Cookie]** 設定を使用する場合、Cookie の名前のみで指定します。CloudFront では、オリジンリクエストに、その値を含む完全な Cookie が含まれます。

**クエリ文字列**  
CloudFront によりオリジンリクエストに含まれる、ビューワーリクエストの URL クエリ文字列。クエリ文字列には、以下のいずれかの設定を選択できます。  
+ [**None (なし)**] – ビューワーリクエストのクエリ文字列は、オリジンリクエストに*含まれません*。
+ [**All (すべて)**] – ビューワーリクエストのすべてのクエリ文字列は、オリジンリクエストに含まれます。
+ **[次のクエリ文字列を含める]** - ビューワーリクエストのどのクエリ文字列をオリジンリクエストに含めるかを指定します。
+ **[次を除くすべてのクエリ文字列]** - ビューワーリクエストのどのクエリ文字列をオリジンリクエストに含め***ない***かを指定します。その他すべてのクエリ文字列が含まれます。
**[次のクエリ文字列を含める]** または **[次を除くすべてのクエリ文字列]** 設定を使用する場合、クエリ文字列の名前のみで指定します。CloudFront では、オリジンリクエストに、その値を含む完全なクエリ文字列が含まれます。

# オリジンリクエストポリシーを作成する
<a name="origin-request-create-origin-request-policy"></a>

オリジンリクエストポリシーを使用して、CloudFront がオリジンに送信するリクエストに含まれる値 (URL クエリ文字列、HTTP ヘッダー、Cookie) を制御できます。オリジンリクエストポリシーは、CloudFront コンソール、AWS Command Line Interface (AWS CLI)、または CloudFront API を使用して作成できます。

オリジンリクエストポリシーを作成したら、CloudFront ディストリビューションの 1 つ以上のキャッシュ動作にアタッチします。

オリジンリクエストポリシーは必須ではありません。キャッシュ動作にオリジンリクエストポリシーがアタッチされていない場合、オリジンリクエストには、[キャッシュポリシー](cache-key-understand-cache-policy.md)で指定されたすべての値が含まれますが、それ以上は含まれません。

**注記**  
オリジンリクエストポリシーを使用するには、キャッシュ動作でも[キャッシュポリシー](controlling-the-cache-key.md)を使用する必要があります。キャッシュポリシーがないと、キャッシュ動作でオリジンリクエストポリシーを使用することはできません。

------
#### [ Console ]

**オリジンリクエストポリシーを作成するには (コンソール)**

1. AWS マネジメントコンソール にログインし、[https://console.aws.amazon.com/cloudfront/v4/home?#/policies](https://console.aws.amazon.com/cloudfront/v4/home?#/policies) で CloudFront コンソールの [**Policies**] (ポリシー) ページを開きます。

1. [**オリジンリクエスト**] を選択してから、[**オリジンリクエストポリシーの作成**] を選択します。

1. このオリジンリクエストポリシーに目的の設定を選択します。詳細については、「[オリジンリクエストポリシーを理解する](origin-request-understand-origin-request-policy.md)」を参照してください。

1. 終了したら、[**作成**] を選択します。

オリジンリクエストポリシーを作成したら、それをキャッシュ動作にアタッチできます。

**オリジンリクエストポリシーを既存のディストリビューションにアタッチするには (コンソール)**

1. [https://console.aws.amazon.com/cloudfront/v4/home#/distributions](https://console.aws.amazon.com/cloudfront/v4/home#/distributions) で CloudFront コンソールの [**Distributions**] (ディストリビューション) ページを開きます。

1. 更新するディストリビューションを選択し、[**動作**] タブを選択します。

1. 更新するキャッシュ動作を選択し、[**編集**] を選択します。

   または、新しいキャッシュ動作を作成するには、[**動作を作成**] を選択します。

1. [**キャッシュキーとオリジンリクエスト**] セクションで、[**キャッシュポリシーとオリジンリクエストポリシー**] が選択されていることを確認します。

1. [**オリジンリクエストポリシー**] では、このキャッシュ動作にアタッチするオリジンリクエストポリシーを選択します。

1. ページの最下部で [**変更の保存**] を選択します。

**オリジンリクエストポリシーを新しいディストリビューションにアタッチするには (コンソール)**

1.  で CloudFront コンソールを開きます[https://console.aws.amazon.com/cloudfront/v4/home](https://console.aws.amazon.com/cloudfront/v4/home)

1. [**ディストリビューションの作成**] を選択します。

1. [**キャッシュキーとオリジンリクエスト**] セクションで、[**キャッシュポリシーとオリジンリクエストポリシー**] が選択されていることを確認します。

1. **[Origin request policy]** (オリジンリクエストポリシー) で、このディストリビューションのデフォルトのキャッシュ動作にアタッチするオリジンリクエストポリシーを選択します。

1. オリジン、デフォルトのキャッシュ動作、その他のディストリビューション設定に必要な設定を選択します。詳細については、「[すべてのディストリビューション設定リファレンス](distribution-web-values-specify.md)」を参照してください。

1. 終了したら、[**ディストリビューションの作成**] を選択します。

------
#### [ CLI ]

AWS Command Line Interface (AWS CLI) でオリジンリクエストポリシーを作成するには、**aws cloudfront create-origin-request-policy** コマンドを使用します。コマンドの入力パラメータは、コマンドライン入力として個別に指定せずに、入力ファイルを使用して指定できます。

**オリジンリクエストポリシーを作成するには (入力ファイルを含む CLI)**

1. 次のコマンドを使用して、`origin-request-policy.yaml` コマンドのすべての入力パラメータを含む **create-origin-request-policy** という名前のファイルを作成します。

   ```
   aws cloudfront create-origin-request-policy --generate-cli-skeleton yaml-input > origin-request-policy.yaml
   ```

1. 先ほど作成した `origin-request-policy.yaml` という名前のファイルを開きます。ファイルを編集して、必要なオリジンリクエストポリシー設定を指定し、ファイルを保存します。ファイルからオプションのフィールドを削除することはできますが、必須フィールドは削除しないでください。

   オリジンリクエストポリシー設定の詳細については、「[オリジンリクエストポリシーを理解する](origin-request-understand-origin-request-policy.md)」を参照してください。

1. 次のコマンドを使用して、`origin-request-policy.yaml` ファイルの入力パラメータを使用し、オリジンリクエストポリシーを作成します。

   ```
   aws cloudfront create-origin-request-policy --cli-input-yaml file://origin-request-policy.yaml
   ```

   コマンドの出力の `Id` 値を書き留めます。これはオリジンリクエストポリシー ID であり、オリジンリクエストポリシーを CloudFront ディストリビューションのキャッシュ動作にアタッチするために必要です。

**オリジンリクエストポリシーを既存のディストリビューションにアタッチするには (入力ファイルを含む CLI)**

1. 以下のコマンドを使用して、更新する CloudFront ディストリビューションのディストリビューション設定を保存します。*distribution\$1ID* をディストリビューションの ID に置き換えます。

   ```
   aws cloudfront get-distribution-config --id distribution_ID --output yaml > dist-config.yaml
   ```

1. 先ほど作成した `dist-config.yaml` という名前のファイルを開きます。ファイルを編集し、オリジンリクエストポリシーを使用するように更新する各キャッシュ動作に次の変更を加えます。
   + キャッシュ動作で、`OriginRequestPolicyId` という名前のフィールドを追加します。フィールドの値には、ポリシーの作成後に書き留めたオリジンリクエストポリシー ID を使用します。
   + `ETag` フィールドの名前を `IfMatch` に変更します。ただし、フィールドの値は変更しないでください。

   完了したら、ファイルを保存します。

1. オリジンリクエストポリシーを使用するようにディストリビューションを更新するには、次のコマンドを使用します。*distribution\$1ID* をディストリビューションの ID に置き換えます。

   ```
   aws cloudfront update-distribution --id distribution_ID --cli-input-yaml file://dist-config.yaml
   ```

**オリジンリクエストポリシーを新しいディストリビューションにアタッチするには (入力ファイルを含む CLI)**

1. 次のコマンドを使用して、`distribution.yaml` コマンドのすべての入力パラメータを含む **create-distribution** という名前のファイルを作成します。

   ```
   aws cloudfront create-distribution --generate-cli-skeleton yaml-input > distribution.yaml
   ```

1. 先ほど作成した `distribution.yaml` という名前のファイルを開きます。デフォルトのキャッシュ動作の [`OriginRequestPolicyId`] フィールドに、ポリシーの作成後に書き留めたオリジンリクエストポリシー ID を入力します。ファイルの編集を続行して必要なディストリビューション設定を指定し、完了したらファイルを保存します。

   ディストリビューション設定の詳細については、「[すべてのディストリビューション設定リファレンス](distribution-web-values-specify.md)」を参照してください。

1. 次のコマンドを使用して、`distribution.yaml` ファイルの入力パラメータを使用し、ディストリビューションを作成します。

   ```
   aws cloudfront create-distribution --cli-input-yaml file://distribution.yaml
   ```

------
#### [ API ]

CloudFront API を使用してオリジンリクエストポリシーを作成するには、[CreateOriginRequestPolicy](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_CreateOriginRequestPolicy.html) を使用します。この API コールで指定するフィールドの詳細については、「‭[オリジンリクエストポリシーを理解する](origin-request-understand-origin-request-policy.md)‬」と、AWS SDK またはその他 API クライアントの API リファレンスドキュメントを参照してください。

オリジンリクエストポリシーを作成したら、次の API コールのいずれかを使用して、それをキャッシュ動作にアタッチできます。
+ 既存のディストリビューションのキャッシュ動作にアタッチするには、[UpdateDistribution](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_UpdateDistribution.html) を使用します。
+ 新しいディストリビューションのキャッシュ動作にアタッチするには、[CreateDistribution](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_CreateDistribution.html) を使用します。

これらの API コールの両方について、キャッシュ動作内で、`OriginRequestPolicyId` フィールドにオリジンリクエストポリシーの ID を指定します。これらの API コールで指定するその他フィールドの詳細については、「[すべてのディストリビューション設定リファレンス](distribution-web-values-specify.md)」と、AWS SDK またはその他 API クライアントの API リファレンスドキュメントを参照してください。

------

# マネージドオリジンリクエストポリシーを使用する
<a name="using-managed-origin-request-policies"></a>

CloudFront は、ディストリビューションのキャッシュ動作にアタッチできる一連のマネージドオリジンリクエストポリシーを用意しています。マネージドオリジンリクエストポリシーを使用すると、独自のオリジンリクエストポリシーを記述したり、維持したりする必要はありません。マネージドポリシーでは、特定のユースケースに最適化された設定を使用します。

マネージドオリジンリクエストポリシーを使用するには、ディストリビューションのキャッシュ動作にそのポリシーをアタッチします。このプロセスは、オリジンリクエストポリシーを作成するときと同じですが、新しいオリジンリクエストポリシーを作成するのではなく、マネージドオリジンリクエストポリシーの 1 つをアタッチするだけです。ポリシーをアタッチするには、名前 (コンソールの場合) または ID (AWS CLI または SDK の場合) を使用します。名前と ID は、次のセクションに記載されています。

詳細については、「[オリジンリクエストポリシーを作成する](origin-request-create-origin-request-policy.md)」を参照してください。

次のトピックでは、使用可能なマネージドオリジンリクエストポリシーについて説明します。

**Topics**
+ [AllViewer](#managed-origin-request-policy-all-viewer)
+ [AllViewerAndCloudFrontHeaders-2022-06](#managed-origin-request-policy-all-viewer-and-cloudfront)
+ [AllViewerExceptHostHeader](#managed-origin-request-policy-all-viewer-except-host-header)
+ [CORS-CustomOrigin](#managed-origin-request-policy-cors-custom)
+ [CORS-S3Origin](#managed-origin-request-policy-cors-s3)
+ [Elemental-MediaTailor-PersonalizedManifests](#managed-origin-request-policy-mediatailor)
+ [HostHeaderOnly](#managed-origin-request-policy-host-header-only)
+ [UserAgentRefererHeaders](#managed-origin-request-policy-user-agent-referer)

## AllViewer
<a name="managed-origin-request-policy-all-viewer"></a>

[このポリシーを CloudFront コンソールで見る](https://console.aws.amazon.com/cloudfront/v4/home#/policies/origin/216adef6-5c7f-47e4-b989-5492eafa07d3)

このポリシーには、ビューワーリクエストのすべての値 (ヘッダー、Cookie、クエリ文字列) が含まれます。

CloudFormation、AWS CLI、または CloudFront API を使用する場合、このポリシーの ID は次のとおりです。

`216adef6-5c7f-47e4-b989-5492eafa07d3`

このポリシーの設定は以下のとおりです。
+ **オリジンリクエストに含まれるヘッダー:** ビューワーリクエスト内のすべてのヘッダー
+ **オリジンリクエストに含まれる Cookie:** すべて
+ **オリジンリクエストに含まれるクエリ文字列:** すべて

## AllViewerAndCloudFrontHeaders-2022-06
<a name="managed-origin-request-policy-all-viewer-and-cloudfront"></a>

[このポリシーを CloudFront コンソールで見る](https://console.aws.amazon.com/cloudfront/v4/home#/policies/origin/33f36d7e-f396-46d9-90e0-52428a34d9dc)

このポリシーには、ビューワーリクエストのすべての値 (ヘッダー、Cookie、クエリ文字列) と、2022 年 6 月までにリリースされたすべての [CloudFront ヘッダー](adding-cloudfront-headers.md)が含まれます (2022 年 6 月の後にリリースされた CloudFront ヘッダーは含まれません)。

CloudFormation、AWS CLI、または CloudFront API を使用する場合、このポリシーの ID は次のとおりです。

`33f36d7e-f396-46d9-90e0-52428a34d9dc`

このポリシーの設定は以下のとおりです。
+ **オリジンリクエストに含まれるヘッダー:** ビューワーリクエスト内のすべてのヘッダー、および以下の CloudFront ヘッダー:
  + `CloudFront-Forwarded-Proto`
  + `CloudFront-Is-Android-Viewer`
  + `CloudFront-Is-Desktop-Viewer`
  + `CloudFront-Is-IOS-Viewer`
  + `CloudFront-Is-Mobile-Viewer`
  + `CloudFront-Is-SmartTV-Viewer`
  + `CloudFront-Is-Tablet-Viewer`
  + `CloudFront-Viewer-Address`
  + `CloudFront-Viewer-ASN`
  + `CloudFront-Viewer-City`
  + `CloudFront-Viewer-Country`
  + `CloudFront-Viewer-Country-Name`
  + `CloudFront-Viewer-Country-Region`
  + `CloudFront-Viewer-Country-Region-Name`
  + `CloudFront-Viewer-Http-Version`
  + `CloudFront-Viewer-Latitude`
  + `CloudFront-Viewer-Longitude`
  + `CloudFront-Viewer-Metro-Code`
  + `CloudFront-Viewer-Postal-Code`
  + `CloudFront-Viewer-Time-Zone`
  + `CloudFront-Viewer-TLS`
+ **オリジンリクエストに含まれる Cookie:** すべて
+ **オリジンリクエストに含まれるクエリ文字列:** すべて

## AllViewerExceptHostHeader
<a name="managed-origin-request-policy-all-viewer-except-host-header"></a>

[このポリシーを CloudFront コンソールで見る](https://console.aws.amazon.com/cloudfront/v4/home#/policies/origin/b689b0a8-53d0-40ab-baf2-68738e2966ac)

このポリシーには、ビューワーリクエストの `Host` ヘッダーは**含まれません**が、ビューワーリクエストの他のすべての値 (ヘッダー、Cookie、クエリ文字列) が含まれます。

このポリシーには、HTTP プロトコル、HTTP バージョン、TLS バージョン用の追加の [CloudFront リクエストヘッダー](adding-cloudfront-headers.md)と、デバイスタイプやビューワーの場所を特定するためのすべてのヘッダーも含まれます。

このポリシーは、Amazon API Gateway と AWS Lambda 関数 URL オリジンでの使用を目的としています。これらのオリジンは、`Host` ヘッダーに CloudFront ディストリビューションのドメイン名ではなく、オリジンドメイン名が含まれていることを前提としています。ビューワーリクエストの `Host` ヘッダーをこれらのオリジンに転送すると、それらが機能しなくなる可能性があります。

**注記**  
このマネージドオリジンリクエストポリシーを使用してビューワーの `Host` ヘッダーを削除すると、CloudFront はオリジンのドメイン名を含む新しい `Host` ヘッダーをオリジンリクエストに追加します。

CloudFormation、AWS CLI、または CloudFront API を使用する場合、このポリシーの ID は次のとおりです。

`b689b0a8-53d0-40ab-baf2-68738e2966ac`

このポリシーの設定は以下のとおりです。
+ **オリジンリクエストに含まれるヘッダー**: `Host` ヘッダーを***除く***ビューワーリクエスト内のすべてのヘッダー
+ **オリジンリクエストに含まれる Cookie:** すべて
+ **オリジンリクエストに含まれるクエリ文字列:** すべて

## CORS-CustomOrigin
<a name="managed-origin-request-policy-cors-custom"></a>

[このポリシーを CloudFront コンソールで見る](https://console.aws.amazon.com/cloudfront/v4/home#/policies/origin/59781a5b-3903-41f3-afcb-af62929ccde1)

このポリシーには、オリジンがカスタムオリジンである場合に、Cross-Origin Resource Sharing (CORS) リクエストを有効にするヘッダーが含まれます。

CloudFormation、AWS CLI、または CloudFront API を使用する場合、このポリシーの ID は次のとおりです。

`59781a5b-3903-41f3-afcb-af62929ccde1`

このポリシーの設定は以下のとおりです。
+ **オリジンリクエストに含まれるヘッダー:**
  + `Origin`
+ **オリジンリクエストに含まれる Cookie:** なし
+ **オリジンリクエストに含まれるクエリ文字列:** なし

## CORS-S3Origin
<a name="managed-origin-request-policy-cors-s3"></a>

[このポリシーを CloudFront コンソールで見る](https://console.aws.amazon.com/cloudfront/v4/home#/policies/origin/88a5eaf4-2fd4-4709-b370-b4c650ea3fcf)

このポリシーには、オリジンが Amazon S3 バケットである場合に、Cross-Origin Resource Sharing (CORS) リクエストを有効にするヘッダーが含まれます。

CloudFormation、AWS CLI、または CloudFront API を使用する場合、このポリシーの ID は次のとおりです。

`88a5eaf4-2fd4-4709-b370-b4c650ea3fcf`

このポリシーの設定は以下のとおりです。
+ **オリジンリクエストに含まれるヘッダー:**
  + `Origin`
  + `Access-Control-Request-Headers`
  + `Access-Control-Request-Method`
+ **オリジンリクエストに含まれる Cookie:** なし
+ **オリジンリクエストに含まれるクエリ文字列:** なし

## Elemental-MediaTailor-PersonalizedManifests
<a name="managed-origin-request-policy-mediatailor"></a>

[このポリシーを CloudFront コンソールで見る](https://console.aws.amazon.com/cloudfront/v4/home#/policies/origin/775133bc-15f2-49f9-abea-afb2e0bf67d2)

このポリシーは、オリジンとしての AWS Elemental MediaTailor エンドポイント用に意図されています。

CloudFormation、AWS CLI、または CloudFront API を使用する場合、このポリシーの ID は次のとおりです。

`775133bc-15f2-49f9-abea-afb2e0bf67d2`

このポリシーの設定は以下のとおりです。
+ **オリジンリクエストに含まれるヘッダー:**
  + `Origin`
  + `Access-Control-Request-Headers`
  + `Access-Control-Request-Method`
  + `User-Agent`
  + `X-Forwarded-For`
+ **オリジンリクエストに含まれる Cookie:** なし
+ **オリジンリクエストに含まれるクエリ文字列:** すべて

## HostHeaderOnly
<a name="managed-origin-request-policy-host-header-only"></a>

[このポリシーを CloudFront コンソールで見る](https://console.aws.amazon.com/cloudfront/v4/home#/policies/origin/bf0718e1-ba1e-49d1-88b1-f726733018ae)

このポリシーには、オリジンリクエストの `Host` ヘッダーのみが含まれます。クエリ文字列や Cookie は含まれません。

CloudFormation、AWS CLI、または CloudFront API を使用する場合、このポリシーの ID は次のとおりです。

`bf0718e1-ba1e-49d1-88b1-f726733018ae`

このポリシーの設定は以下のとおりです。
+ **オリジンリクエストに含まれるヘッダー:** Host
+ **オリジンリクエストに含まれる Cookie:** なし
+ **オリジンリクエストに含まれるクエリ文字列:** なし

## UserAgentRefererHeaders
<a name="managed-origin-request-policy-user-agent-referer"></a>

[このポリシーを CloudFront コンソールで見る](https://console.aws.amazon.com/cloudfront/v4/home#/policies/origin/acba4595-bd28-49b8-b9fe-13317c0390fa)

このポリシーには、`User-Agent` ヘッダーと `Referer` ヘッダーのみが含まれます。クエリ文字列や Cookie は含まれません。

CloudFormation、AWS CLI、または CloudFront API を使用する場合、このポリシーの ID は次のとおりです。

`acba4595-bd28-49b8-b9fe-13317c0390fa`

このポリシーの設定は以下のとおりです。
+ **オリジンリクエストに含まれるヘッダー:**
  + `User-Agent`
  + `Referer`
+ **オリジンリクエストに含まれる Cookie:** なし
+ **オリジンリクエストに含まれるクエリ文字列:** なし

# CloudFront のリクエストヘッダーを追加する
<a name="adding-cloudfront-headers"></a>

CloudFront がビューワーから受け取り、オリジンまたは[エッジ関数](edge-functions.md)に転送するリクエストに特定の HTTP ヘッダーを追加するように CloudFront を設定できます。これらの HTTP ヘッダーの値は、ビューワーまたはビューワーリクエストの特性に基づいています。ヘッダーは、ビューワーのデバイスタイプ、IP アドレス、地理的位置、リクエストプロトコル (HTTP または HTTPS)、HTTP バージョン、TLS 接続の詳細、[JA3 フィンガープリント](https://github.com/salesforce/ja3)、および JA4 フィンガープリントに関する情報を提供します。WebSocket ヘッダーを転送するようにディストリビューションのキャッシュ動作を設定することもできます。詳細については、「[CloudFront ディストリビューションで WebSockets を使用する](distribution-working-with.websockets.md)」を参照してください。

これらのヘッダーを使用すると、オリジンまたはエッジ関数でビューワーに関する情報を受け取ることができ、この情報を特定するための独自のコードを記述する必要はありません。オリジンが、これらのヘッダーの情報に基づいてレスポンスを返す場合は、CloudFront が別のレスポンスを別々にキャッシュするように、それらを*キャッシュキー*に含めることができます。例えば、オリジンは、ビューワーが居住する国に基づく特定の言語のコンテンツや、特定のデバイスタイプに合わせたコンテンツで応答する場合があります。オリジンは、これらのヘッダーをログファイルに書き込むこともあります。ログファイルを使用して、ビューワーの場所、ビューワーのデバイスの種類などの情報を判断できます。

キャッシュキーにこれらのヘッダーを含めるには、*キャッシュポリシー*を使用します。詳細については、「[ポリシーを使用してキャッシュキーを制御する](controlling-the-cache-key.md)」および「[キャッシュキーを理解する](understanding-the-cache-key.md)」を参照してください。

オリジンでヘッダーを受信するが、キャッシュキーに含めないようにするには、*オリジンリクエストポリシー*を使用します。詳細については、「[ポリシーを使用してオリジンリクエストを制御する](controlling-origin-requests.md)」を参照してください。

**Topics**
+ [デバイスタイプヘッダー](#cloudfront-headers-device-type)
+ [ビューワーの場所ヘッダー](#cloudfront-headers-viewer-location)
+ [ビューワーのヘッダー構造を確認するためのヘッダー](#cloudfront-headers-viewer-headers)
+ [TLS 関連のヘッダー](#tls-related-versions)
+ [その他の CloudFront ヘッダー](#cloudfront-headers-other)

## デバイスタイプヘッダー
<a name="cloudfront-headers-device-type"></a>

ビューワーのデバイスタイプを特定するために、次のヘッダーが追加できます。`User-Agent` ヘッダーの値に基づいて、CloudFront はこれらのヘッダーの値を `true` または `false` に設定します。デバイスが複数のカテゴリに属していると、複数の値が `true` になる場合があります。例えば、一部のタブレットデバイスに対して、CloudFront が `CloudFront-Is-Mobile-Viewer` と `CloudFront-Is-Tablet-Viewer` の両方を `true` に設定します。
+ `CloudFront-Is-Android-Viewer` - ビューワーが Android オペレーティングシステム搭載のデバイスであると CloudFront が判断すると、`true` に設定します。
+ `CloudFront-Is-Desktop-Viewer` - ビューワーがデスクトップデバイスであると CloudFront が判断すると、`true` に設定します。
+ `CloudFront-Is-IOS-Viewer` – ビューワーが iPhone、iPod touch、その他の iPad デバイスなど、Apple モバイルオペレーティングシステム搭載のデバイスであると CloudFront が判断すると、`true` に設定します。
+ `CloudFront-Is-Mobile-Viewer` - ビューワーがモバイルデバイスであると CloudFront が判断すると、`true` に設定します。
+ `CloudFront-Is-SmartTV-Viewer` - ビューワーがスマートテレビであると CloudFront が判断すると、`true` に設定します。
+ `CloudFront-Is-Tablet-Viewer` - ビューワーがタブレットであると CloudFront が判断すると、`true` に設定します。

## ビューワーの場所ヘッダー
<a name="cloudfront-headers-viewer-location"></a>

ビューワーの場所を特定するために、以下のヘッダーが追加できます。CloudFront は、ビューワーの IP アドレスに基づいてこれらのヘッダーの値を決定します。これらのヘッダーの値が ASCII 以外の文字の場合、CloudFront パーセントは [RFC 3986 のセクション 1.2](https://tools.ietf.org/html/rfc3986#section-2.1) に従って文字をパーセントエンコードします。
+ `CloudFront-Viewer-Address` – ビューワーの IP アドレスと、リクエストのソースポートを示します。例えば、`198.51.100.10:46532` のヘッダー値は、ビューワーの IP アドレスが 198.51.100.10 で、リクエストのソースポートが 46532 であることを意味します。
+ `CloudFront-Viewer-ASN` — ビューワーの AS 番号 (ASN) を示します。
**注記**  
`CloudFront-Viewer-Address` と `CloudFront-Viewer-ASN` は、オリジンリクエストポリシーで追加できますが、キャッシュポリシーでは追加できません。
+ `CloudFront-Viewer-Country` - ビューワーの国の 2 文字の国コードが含まれています。国コードの一覧については、「[ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)」を参照してください。
+ `CloudFront-Viewer-City` - ビューワーの市区町村名が含まれています。

以下のヘッダーを追加すると、CloudFrontは、AWS ネットワークから発信されたリクエストを*除く*すべてのリクエストにそれらを適用します。
+ `CloudFront-Viewer-Country-Name` - ビューワーの国名が含まれています。
+ `CloudFront-Viewer-Country-Region` - ビューワーのリージョンを表すコード (最大 3 文字) が含まれています。地域は、[ISO 3166-2](https://en.wikipedia.org/wiki/ISO_3166-2)コードの第 1 レベルのサブディビジョン (最も広いまたは狭い) です。
+ `CloudFront-Viewer-Country-Region-Name` - ビューワーのリージョン名が含まれています。地域は、[ISO 3166-2](https://en.wikipedia.org/wiki/ISO_3166-2)コードの第 1 レベルのサブディビジョン (最も広いまたは狭い) です。
+ `CloudFront-Viewer-Latitude` - ビューワーのおよその緯度が含まれています。
+ `CloudFront-Viewer-Longitude` - ビューワーのおよその経度が含まれています。
+ `CloudFront-Viewer-Metro-Code` - ビューワーのメトロコードが含まれています。これは、ビューワーが米国にいる場合にのみ表示されます。
+ `CloudFront-Viewer-Postal-Code` - ビューワーの郵便番号が含まれています。
+ `CloudFront-Viewer-Time-Zone` [ IANA タイムゾーンデータベース形式 (例: `America/Los_Angeles`) で](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones)、ビューワーのタイムゾーンが含まれています。

**注記**  
`CloudFront-Viewer-City`、`CloudFront-Viewer-Metro-Code`、`CloudFront-Viewer-Postal-Code` は、すべての IP アドレスで利用できるとは限りません。IP アドレスによっては、この情報を取得するための特異性を十分に地理的に特定できません。

## ビューワーのヘッダー構造を確認するためのヘッダー
<a name="cloudfront-headers-viewer-headers"></a>

送信するヘッダーに基づいてビューワーを特定しやすくするために、以下のヘッダーを追加できます。例えば、異なるブラウザごとに HTTP ヘッダーを送信する順序は異なる場合があります。`User-Agent` ヘッダーに指定されているブラウザが、そのブラウザの想定されたヘッダーの順序と一致しない場合は、リクエストを拒否できます。また、`CloudFront-Viewer-Header-Count` 値が `CloudFront-Viewer-Header-Order` 内のヘッダー数と一致しない場合は、リクエストを拒否できます。
+ `CloudFront-Viewer-Header-Order` — ビューワーのヘッダー名をリクエスト順にコロンで区切って示します。例: `CloudFront-Viewer-Header-Order: Host:User-Agent:Accept:Accept-Encoding`。文字数の制限である 7,680 文字を超えるヘッダーは切り捨てられます。
+ `CloudFront-Viewer-Header-Count` — ビューワーのヘッダーの総数を示します。

## TLS 関連のヘッダー
<a name="tls-related-versions"></a>

以下のヘッダーを追加して、ビューワーの JA3 フィンガープリント、JA4 フィンガープリント、TLS 接続の詳細を確認できます。
+ `CloudFront-Viewer-JA3-Fingerprint` — ビューワーの [JA3 フィンガープリント](https://github.com/salesforce/ja3)を示します。JA3 フィンガープリントは、既知のクライアントからのリクエストであるか、マルウェアまたは悪意のあるボットであるか、想定された (許可リストに登録されている) アプリケーションであるかを判断するのに役立ちます。
+ `CloudFront-Viewer-JA4-Fingerprint` — ビューワーの JA4 フィンガープリントを示します。[JA4 フィンガープリント](https://github.com/FoxIO-LLC/ja4)は、JA3 フィンガープリントと同じように、リクエストが既知のクライアントからのものであるか、マルウェアまたは悪意のあるボットであるか、予期される (許可リストに登録されている) アプリケーションであるかを確認するのに役立ちます。フィンガープリントを使用して、HTTP リクエストを検査するときに適用する既知の良いアクターと悪いアクターのデータベースを構築できます。次に、アプリケーションウェブサーバーまたは [Lambda@Edge](lambda-at-the-edge.md) や [CloudFront Functions](cloudfront-functions.md) でヘッダー値を検査し、ヘッダー値と既知のマルウェアフィンガープリントのリストを比較して、悪意のあるクライアントをブロックできます。
+ `CloudFront-Viewer-TLS` – SSL/TLS バージョン、暗号、およびビューアと CloudFront 間の接続に使用された SSL/TLS ハンドシェイクに関する情報が含まれています。ヘッダー値は次の形式です。

  ```
  SSL/TLS_version:cipher:handshake_information
  ```

  `handshake_information` の場合、ヘッダーには以下のいずれかの値が含まれます。
  + `fullHandshake` – SSL/TLS セッションに対して完全なハンドシェイクが実行された。
  + `sessionResumed` – 前の SSL/TLS セッションが再開された。
  + `connectionReused` – 前の SSL/TLS 接続が再利用された。

  以下に示しているのは、このヘッダーの値の例です。

  ```
  TLSv1.3:TLS_AES_128_GCM_SHA256:sessionResumed
  ```

  ```
  TLSv1.2:ECDHE-ECDSA-AES128-GCM-SHA256:connectionReused
  ```

  ```
  TLSv1.1:ECDHE-RSA-AES128-SHA256:fullHandshake
  ```

  ```
  TLSv1:ECDHE-RSA-AES256-SHA:fullHandshake
  ```

  このヘッダー値に含まれる SSL/TLS バージョンと暗号の完全なリストについては、「[ビューワーと CloudFront との間でサポートされているプロトコルと暗号](secure-connections-supported-viewer-protocols-ciphers.md)」を参照してください。

**注意事項**  
JA3 および JA4 フィンガープリントは SSL/TLS `Client Hello` パケットから取得します。これらは HTTPS リクエストにのみ存在します。
これらの TLS 関連のヘッダーは、[オリジンリクエストポリシー](controlling-origin-requests.md)には追加できますが、[キャッシュポリシー](controlling-the-cache-key.md)には追加できません。

## その他の CloudFront ヘッダー
<a name="cloudfront-headers-other"></a>

以下のヘッダーを追加すると、ビューワーの元のリクエスト URI、元のリクエストクエリ文字列パラメータおよび値、プロトコル、バージョンを確認できます。
+ `CloudFront-Error-Uri` – ビューワーから受信した元のリクエスト URI を示します。
+ `CloudFront-Error-Args` – 元のリクエストクエリ文字列のパラメータと値を示します。
+ `CloudFront-Forwarded-Proto` - ビューワーのリクエストのプロトコル (HTTP または HTTPS) を示します。
+ `CloudFront-Viewer-Http-Version` - ビューワーのリクエストの HTTP バージョンを示します。

# オリジンリクエストポリシーとキャッシュポリシーの連携方法を理解する
<a name="understanding-how-origin-request-policies-and-cache-policies-work-together"></a>

CloudFront [オリジンリクエストポリシー](controlling-origin-requests.md)を使用して、CloudFront がオリジンに送信するリクエスト (オリジンリクエストと呼ばれる) を制御できます。オリジンリクエストポリシーを使用するには、同じキャッシュ動作に[キャッシュポリシー](controlling-the-cache-key.md)をアタッチする必要があります。キャッシュポリシーがないと、キャッシュ動作でオリジンリクエストポリシーを使用することはできません。詳細については、「[ポリシーを使用してオリジンリクエストを制御する](controlling-origin-requests.md)」を参照してください。

オリジンリクエストポリシーとキャッシュポリシーが連携して、CloudFront がオリジンリクエストに含める値を決定します。キャッシュキーに指定するすべての URL クエリ文字列、HTTP ヘッダー、および Cookie (キャッシュポリシーを使用) は、オリジンリクエストに自動的に含まれます。オリジンリクエストポリシーで指定した追加のクエリ文字列、ヘッダー、および Cookie もオリジンリクエストに含まれます (キャッシュキーには含まれません)。

オリジンリクエストポリシーとキャッシュポリシーには、互いに競合しているように見える設定があります。例えば、あるポリシーでは特定の値を許可し、別のポリシーではそれらをブロックするなどです。次の表では、オリジンリクエストポリシーとキャッシュポリシーの設定を一緒に使用する場合に、CloudFront がオリジンリクエストに含める値を説明します。これらの設定は、一般的にすべてのタイプの値 (クエリ文字列、ヘッダー、Cookie) に適用されます。ただし、キャッシュポリシーですべてのヘッダーを指定したり、ヘッダーブロックリストを使用することはできません。


|  |  **オリジンリクエストポリシー**  |  |  **なし**  |  **[All]** (すべて)  |  **許可リスト**  |  **ブロックリスト**  | 
| --- | --- | --- | --- | --- | --- | --- | 
|  **キャッシュポリシー**  | 
|  **なし**  |  すべてのオリジンリクエストに含まれるデフォルトを除き、ビューワーリクエストの値はオリジンリクエストには含まれません。詳細については、「[ポリシーを使用してオリジンリクエストを制御する](controlling-origin-requests.md)」を参照してください。  |  ビューワーリクエストのすべての値がオリジンリクエストに含まれます。  |  オリジンリクエストポリシーで指定された値のみがオリジンリクエストに含まれます。  |  オリジンリクエストポリシーで指定された値を**除く**ビューワーリクエストのすべての値がオリジンリクエストに含まれます。  | 
|  **[All]** (すべて) **注意:** キャッシュポリシーですべてのヘッダーを指定することはできません。  |  ビューワーリクエストのすべてのクエリ文字列と Cookie は、オリジンリクエストに含まれます。  |  ビューワーリクエストのすべての値がオリジンリクエストに含まれます。  |  ビューワーリクエストのすべてのクエリ文字列と Cookie、およびオリジンリクエストポリシーで指定されたヘッダーは、オリジンリクエストに含まれます。  |  ビューワーリクエストのすべてのクエリ文字列と Cookie は、オリジンリクエストポリシーのブロックリストで指定されているものも含め、すべてオリジンリクエストに含まれます。キャッシュポリシーの設定は、オリジンリクエストポリシーのブロックリストより優先されます。  | 
|  **許可リスト**  |  ビューワーリクエストから指定された値のみが、オリジンリクエストに含まれます。  |  ビューワーリクエストのすべての値がオリジンリクエストに含まれます。  |  キャッシュポリシーまたはオリジンリクエストポリシーで指定されているすべての値は、オリジンリクエストに含まれます。  |  キャッシュポリシーで指定された値は、オリジンリクエストポリシーのブロックリストで同じ値が指定されている場合でも、オリジンリクエストに含まれます。キャッシュポリシーの許可リストは、オリジンリクエストポリシーの禁止リストより優先されます。  | 
|  **ブロックリスト** **注意:** キャッシュポリシーのブロックリストではヘッダーを指定できません。  |  指定されたものを**除く**ビューワーリクエストのすべてのクエリ文字列と Cookie は、オリジンリクエストに含まれます。  |  ビューワーリクエストのすべての値がオリジンリクエストに含まれます。  |  オリジンリクエストポリシーで指定された値は、キャッシュポリシーのブロックリストに同じ値が指定されている場合でも、オリジンリクエストに含まれます。オリジンリクエストポリシーの許可リストは、キャッシュポリシーのブロックリストより優先されます。  |  キャッシュポリシーまたはオリジンリクエストポリシーで指定された値を**除く**ビューワーリクエストのすべての値がオリジンリクエストに含まれます。  | 