

# レポート、メトリクス、ログ
<a name="reports-and-monitoring"></a>

CloudFront には、CloudFront リソースのレポート、モニタリング、ログ記録のオプションがいくつか用意されています。以下のタスクを実行できます。
+ レポートを表示およびダウンロードして、請求レポート、キャッシュ統計、人気の高いコンテンツ、トップリファラーなど、CloudFront ディストリビューションの使用状況とアクティビティを確認できます。
+ CloudFront コンソールで直接、または Amazon CloudWatch を介して、[エッジコンピューティング関数](https://aws.amazon.com/cloudfront/features/#Edge_Computing)を含む CloudFront をモニタリングおよび追跡できます。CloudFront は、Lambda@Edge と CloudFront Functions の両方で、ディストリビューション関数とエッジ関数のメトリクスを CloudWatch に送信します。
+ CloudFront ディストリビューションが標準ログまたはリアルタイムのアクセスログで受け取るビューワーリクエストのログを表示できます。ビューワーリクエストログに加えて、CloudWatch Logs を使用して Lambda@Edge と CloudFront Functions の両方でエッジ関数のログを取得できます。AWS CloudTrail を使用して、AWS アカウント で CloudFront API アクティビティのログを取得することもできます。
+ AWS Config を使用して、CloudFront リソースへの設定変更を追跡できます。

これらのオプションの詳細については、以下のトピックを参照してください。

**Topics**
+ [CloudFront の AWS の請求書と使用状況レポート](reports-billing.md)
+ [コンソールで CloudFront レポートを表示する](reports.md)
+ [Amazon CloudWatch で CloudFront メトリクスをモニタリングする](monitoring-using-cloudwatch.md)
+ [CloudFront とエッジ関数のログ記録](logging.md)
+ [AWS Config で設定変更を追跡する](TrackingChanges.md)

# CloudFront の AWS の請求書と使用状況レポート
<a name="reports-billing"></a>

AWS には、CloudFront の使用状況レポートが 2 種類、用意されています。
+ AWS 請求レポートは、CloudFront も含めて、使用している AWS のサービスのアクティビティすべての概要を示します。
+ AWS 使用状況レポートは、特定のサービスのアクティビティの概要を、時間、日、または月単位で集約して示します。CloudFront の使用状況をグラフィカルに表現する使用状況グラフも含まれています。

**注記**  
他の AWS のサービスと同様に、CloudFront は実際に使用した分のみの料金請求となります。詳細については、「[CloudFront の料金](https://aws.amazon.com/cloudfront/pricing/)」を参照してください。

**Topics**
+ [CloudFront の AWS 請求レポートを表示する](#billing-report)
+ [CloudFront の AWS 使用状況レポートを表示する](#usage-report)
+ [CloudFront の AWS 請求レポートと使用状況レポートを解釈する](billing-and-usage-interpreting.md)

## CloudFront の AWS 請求レポートを表示する
<a name="billing-report"></a>

AWS Billing and Cost Management コンソールの **[請求書]** ページで、AWS の使用状況と料金の概要をサービス別に表示できます。<a name="billing-report-procedure"></a>

**AWS 請求レポートを表示するには**

1. AWS マネジメントコンソール にサインインし、AWS Billing and Cost Management コンソール ([https://console.aws.amazon.com/costmanagement/](https://console.aws.amazon.com/costmanagement/)) を開きます。

1. ナビゲーションペインで **[請求]** を選択します。

1. **[請求期間]** (例: 2023 年 8 月) を選択します。

1. **[サービス別料金]** タブで、**[CloudFront]**を選択し、**[グローバル]** または AWS リージョン の名前を展開します。

1. 詳細な請求レポートを CSV 形式でダウンロードするには、**[すべてを CSV にダウンロード]** を選択します。

AWS 請求書の詳細については、「AWS Billing ユーザーガイド」の「[請求書を表示する](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/getting-viewing-bill.html)」を参照してください。**

請求レポートには、CloudFront に該当する以下の値が表示されます。
+ **ProductCode** — `AmazonCloudFront`
+ **UsageType** – 以下の値のいずれかです。
  + データ転送のタイプを識別するコード
  + `Invalidations`
  + `Executions-CloudFrontFunctions`
  + `KeyValueStore-APIOperations`
  + `KeyValueStore-EdgeReads`
  + `RealTimeLog-KinesisDataStream`
  + `SSL-Cert-Custom`
+ **ItemDescription** — **UsageType** の請求レートの説明。
+ **UsageStart Date** と **UsageEndDate** – 使用状況が該当する協定世界時 (UTC) の日付。
+ **UsageQuantity** — 以下の値のいずれかです。
  + 指定した期間のリクエストの数
  + データ転送量 (GB)
  + 無効にされたオブジェクトの数
  + SSL 証明書を有効な CloudFront ディストリビューションに関連付けた月数を按分計算した合計値。たとえば、ある証明書を有効なディストリビューションに 1 か月まるまる関連付け、別の証明書を有効なディストリビューションに半月だけ関連付けた場合、この値は 1.5 になります。

## CloudFront の AWS 使用状況レポートを表示する
<a name="usage-report"></a>

AWS には、CloudFront 使用状況レポートが用意されています。これは請求レポートよりは詳細ですが、CloudFront アクセスログほど詳細ではありません。使用状況レポートには、使用状況データが時間、日、または月単位で集計され、リージョンと使用タイプ別に操作が一覧で示されます (たとえば、オーストラリアリージョンからデータが転送されたなど)。

**AWS 使用状況レポートを表示するには**

1. AWS マネジメントコンソール にサインインし、AWS Billing and Cost Management コンソール ([https://console.aws.amazon.com/costmanagement/](https://console.aws.amazon.com/costmanagement/)) を開きます。

1. ナビゲーションペインで、[**Cost Explorer**] を選択します。

1. **[新しいコストと使用状況レポート]** ページの **[レポートパラメータ]** ペインで、レポートの日付範囲と詳細度を選択します。

1. **[フィルター]**、**[サービス]** で、**[CloudFront]** を選択します。

1. **[使用状況]** を選択します。

1. **[コストと使用量の内訳]** で **[CSV 形式でダウンロード]** を選択します。

AWS 使用状況レポートの詳細については、「AWS Data Exports ユーザーガイド」の「[AWS 使用状況レポート](https://docs.aws.amazon.com/cur/latest/userguide/usage-report.html)」を参照してください。**

CloudFront 使用状況レポートには次の値が含まれています。
+ **サービス** – `AmazonCloudFront`
+ **オペレーション** — HTTP メソッド。値には、`DELETE`、`GET`、`HEAD`、`OPTIONS`、`PATCH`、`POST`、`PUT` があります。
+ **UsageType** – 以下の値のいずれかです。
  + データ転送のタイプを識別するコード
  + `Invalidations`
  + `Executions-CloudFrontFunctions`
  + `KeyValueStore-APIOperations`
  + `KeyValueStore-EdgeReads`
  + `RealTimeLog-KinesisDataStream`
  + `SSL-Cert-Custom`
+ **リソース** — 使用状況に関連付けられた CloudFront ディストリビューションの ID、または、CloudFront ディストリビューションに関連付けた SSL 証明書の証明書 ID。
+ **StartTime/EndTime** — 使用状況が該当する協定世界時 (UTC) の日付。
+ **UsageValue** – 1) 指定した期間のリクエストの数、または、2) 転送データ量 (バイト)。

Amazon S3 を CloudFront のオリジンとして使用している場合は、Amazon S3 の使用状況レポートも作成することを検討してください。ただし、CloudFront ディストリビューションのオリジンとして以外の目的でも Amazon S3 を使用している場合は、どの部分が CloudFront で使用されたのか明確にならない可能性があります。

**ヒント**  
お客様のディストリビューションの CloudFront アクセスログをオンにすることで、お客様のオブジェクトについて CloudFront が受信するすべてのリクエストに関する詳細な情報を取得することができます。詳細については、「[アクセスログ (標準ログ)](AccessLogs.md)」を参照してください。

レポートの CloudFront の料金と使用タイプを理解するための詳細情報については、「[CloudFront の AWS 請求レポートと使用状況レポートを解釈する](billing-and-usage-interpreting.md)」を参照してください。

# CloudFront の AWS 請求レポートと使用状況レポートを解釈する
<a name="billing-and-usage-interpreting"></a>

[請求レポート](reports-billing.md#billing-report)と[使用状況レポート](reports-billing.md#usage-report)を取得したら、このトピックを参考にして、請求書に表示される CloudFront の各料金および対応する使用タイプを解釈する方法を理解できます。このトピックには、両方のレポートに表示されるコードと AWS リージョンの略語が含まれています。

2 つの列のコードには、たいてい、アクティビティの場所を示す 2 文字の略語が入っています。次の表のコードの *region* は、AWS 請求書と使用状況レポートでは以下の 2 文字の略語に置き換えられます。
+ **AP:** 香港、フィリピン、韓国、シンガポール、台湾、シンガポール (アジアパシフィック)
+ **AU:** オーストラリア
+ **CA:** カナダ
+ **EU:** ヨーロッパおよびイスラエル
+ **IN:** インド
+ **JP:** 日本
+ **ME:** 中東
+ **SA:** 南米
+ **US:** 米国
+ **ZA:** 南アフリカ

AWS リージョン別の料金の詳細については、「[Amazon CloudFront の料金](https://aws.amazon.com/cloudfront/pricing/)」を参照してください。

**注意事項**  
次の表には、Amazon S3 バケットから CloudFront エッジロケーションへのオブジェクト転送の料金は含まれていません。この料金が発生している場合、AWS 請求書の **[AWS Data Transfer]** ( データ転送) の部分に料金が表記されます。
最初の列は、AWS 請求レポートに表示される料金と、各料金の明細を示しています。
 2 列目は、AWS 使用状況レポートに表示される項目と、請求書の料金および使用状況レポートの項目との相互関係を示しています。


****  

| AWS 請求書の CloudFront 料金 | AWS 使用状況レポートの UsageType 列の値 | 
| --- | --- | 
|  *region***-DataTransfer-Out-Bytes** ユーザーの `GET` と `HEAD` リクエストへのレスポンスのために*リージョン*の CloudFront エッジロケーションから供給された合計バイト数。  |  *region***-Out-Bytes-HTTP-Static:** TTL ≥ 3,600 秒のオブジェクトのために HTTP 経由で供給されたバイト数。 *region***-Out-Bytes-HTTPS-Static:** TTL ≥ 3,600 秒のオブジェクトのために HTTPS 経由で供給されたバイト数。 *region***-Out-Bytes-HTTP-Dynamic:** TTL < 3,600 秒のオブジェクトのために HTTP 経由で提供されたバイト数。 *region***-Out-Bytes-HTTPS-Dynamic:** TTL < 3,600 秒のオブジェクトのために HTTPS 経由で配信されたバイト数。 *region***-Out-OBytes-HTTP-Proxy** `DELETE`、`OPTIONS`、`PATCH`、`POST`、および `PUT` リクエストへの応答として CloudFront からビューワーに HTTP 経由で返されたバイト数。 *region***-Out-Bytes-HTTPS-Proxy:** `DELETE`、`OPTIONS`、`PATCH`、`POST`、および `PUT` リクエストへの応答として CloudFront からビューワーに HTTPS 経由で返されたバイト数。 これには、CloudFront から gRPC 経由でビューワーに返されたバイト数が含まれます。  | 
|  *region***-DataTransfer-Out-OBytes** `DELETE`、`OPTIONS`、`PATCH`、`POST`、および `PUT` リクエストへのレスポンスのために CloudFront エッジロケーションからオリジンまたは[エッジ関数](edge-functions.md)に転送された合計バイト数。料金には、クライアントからサーバーへの WebSocket データのデータ転送が含まれます。  |  *region***-Out-OBytes-HTTP-Proxy** `DELETE`、`OPTIONS`、`PATCH`、`POST`、および `PUT` リクエストへのレスポンスのために CloudFront エッジロケーションからオリジンまたは[エッジ関数](edge-functions.md)に HTTP 経由で転送された合計バイト数。 *region***-Out-OBytes-HTTPS-Proxy** `DELETE`、`OPTIONS`、`PATCH`、`POST`、および `PUT` リクエストへのレスポンスのために CloudFront エッジロケーションからオリジンまたは[エッジ関数](edge-functions.md)に HTTPS 経由で転送された合計バイト数。 これには、CloudFront エッジロケーションから gRPC 経由でオリジンまたは CloudFront Functions に転送されたバイト数が含まれます。  | 
|  *region***-Requests-Tier1** HTTP `GET` および `HEAD` リクエストの数。  |  *region***-Requests-HTTP-Static** TTL ≥ 3,600 秒のオブジェクトのために供給された HTTP `GET` および `HEAD` リクエストの数。 *region***-Requests-HTTP-Dynamic** TTL < 3,600 秒のオブジェクトのために供給された HTTP `GET` および `HEAD` リクエストの数。  | 
|  *region***-Requests-Tier2-HTTPS** HTTPS `GET` および `HEAD` リクエストの数。  |  *region***-Requests-HTTPS-Static** TTL ≥ 3,600 秒のオブジェクトのために供給された HTTPS `GET` および `HEAD` リクエストの数。 *region***-Requests-HTTPS-Dynamic** TTL < 3,600 秒のオブジェクトのために供給された HTTPS `GET` および `HEAD` リクエストの数。  | 
|  *region***-Requests-HTTP-Proxy** CloudFront によってオリジンまたは[エッジ関数](edge-functions.md)に転送される HTTP `DELETE`、`OPTIONS`、`PATCH`、`POST`、および `PUT` リクエストの数 CloudFront がオリジンまたはエッジ関数に転送する HTTP [WebSocket](distribution-working-with.websockets.md) リクエスト (`Upgrade: websocket` ヘッダー付きの `GET` リクエスト) の数も含まれます。  |  *region***-Requests-HTTP-Proxy** CloudFront 請求書の対応する項目と同じです。  | 
|  *region***-Requests-HTTPS-Proxy** CloudFront によってオリジンまたは[エッジ関数](edge-functions.md)に転送される HTTPS `DELETE`、`OPTIONS`、`PATCH`、`POST`、および `PUT` リクエストの数。 次のリクエストタイプも含まれます。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AmazonCloudFront/latest/DeveloperGuide/billing-and-usage-interpreting.html)  |  *region***-Requests-HTTPS-Proxy** CloudFront 請求書の対応する項目と同じです。  | 
|  *region***-Requests-HTTPS-Proxy-FLE** CloudFront によってオリジンまたは[エッジ関数](edge-functions.md)に転送され、[フィールドレベル暗号化](field-level-encryption.md)を使用して処理された HTTPS `DELETE`、`OPTIONS`、`PATCH`、および `POST` リクエストの数。  |  *region***-Requests-HTTPS-Proxy-FLE** CloudFront 請求書の対応する項目と同じです。  | 
|  *region***-Bytes-OriginShield** オリジンから任意の[リージョン別エッジキャッシュ](HowCloudFrontWorks.md#CloudFrontRegionaledgecaches)に転送された合計バイト数。[Origin Shield](origin-shield.md) として有効になっているリージョン別エッジキャッシュを含みます。  |  *region***-Bytes-OriginShield** CloudFront 請求書の対応する項目と同じです。  | 
|  *region***-OBytes-OriginShield** 任意の[リージョン別エッジキャッシュ](HowCloudFrontWorks.md#CloudFrontRegionaledgecaches)からオリジンに転送された合計バイト数。[Origin Shield](origin-shield.md) として有効になっているリージョン別エッジキャッシュを含みます。  |  *region***-OBytes-OriginShield** CloudFront 請求書の対応する項目と同じです。  | 
|  *region***-Requests-OriginShield** 増分レイヤーとして [Origin Shield](origin-shield.md) に送信されたリクエストの数。オリジンにプロキシ化される動的 (キャッシュ不可能な) リクエストの場合、Origin Shield は常に増分レイヤーとなります。キャッシュ可能なリクエストの場合、Origin Shield は増分レイヤーになることがあります。 詳細については、「[Origin Shield のコストの見積もり](origin-shield.md#origin-shield-costs)」を参照してください。  |  *region***-Requests-OriginShield** CloudFront 請求書の対応する項目と同じです。  | 
|  **無効化** オブジェクトを無効化する (オブジェクトを CloudFront エッジロケーションから削除する) ための料金。詳細については、「[ファイルの無効化に対する支払い](PayingForInvalidation.md)」を参照してください。  |  **無効化** CloudFront 請求書の対応する項目と同じです。  | 
|  **SSL-Cert-Custom** デフォルトの CloudFront SSL 証明書と CloudFront がお客様のディストリビューションに割り当てたドメイン名を使用する代わりに、example.com などの CloudFront 代替ドメイン名によって SSL 証明書を使用する場合の料金  |  **SSL-Cert-Custom** CloudFront 請求書の対応する項目と同じです。  | 
|  **RealTimeLog-KinesisDataStream** [リアルタイムのアクセスログ](real-time-logs.md)に対して生成された行数の料金。  |  **RealTimeLog-KinesisDataStream** CloudFront 請求書の対応する項目と同じです。  | 
|  **Executions-CloudFrontFunctions** [CloudFront Functions](cloudfront-functions.md) の呼び出し数の料金。  |  **Executions-CloudFrontFunctions** CloudFront 請求書の対応する項目と同じです。  | 
|  ***region*-Lambda-Edge-Request** [Lambda@Edge](lambda-at-the-edge.md) 関数の呼び出し数の料金。  |  ****region**-Lambda-Edge-Request** CloudFront 請求書の対応する項目と同じです。  | 
|  ***region*-Lambda-Edge-GB-Second** [Lambda@Edge](lambda-at-the-edge.md) 関数を呼び出してから、関数が返るか終了するまでの期間の料金。  |  ***region*-Lambda-Edge-GB-Second** CloudFront 請求書の対応する項目と同じです。  | 
|  **KeyValueStore-EdgeReads** [CloudFront KeyValueStore](kvs-with-functions.md) メソッド、`get()`、`exists()`、`meta()` への読み取り呼び出し数の料金。詳細については、「[キーバリューストアのヘルパーメソッド](functions-custom-methods.md)」を参照してください。  |  **KeyValueStore-EdgeReads** CloudFront 請求書の対応する項目と同じです。  | 
|  **KeyValueStore-APIOperations** [CloudFront KeyValueStore](kvs-with-functions.md) API への呼び出し数の料金。  |  **KeyValueStore-APIOperations** CloudFront 請求書の対応する項目と同じです。  | 

# コンソールで CloudFront レポートを表示する
<a name="reports"></a>

各レポートでは詳細な情報と視覚化が提供されるため、コンテンツ配信の最適化、パフォーマンスのボトルネックの特定、データに基づいた意思決定を行うことができます。キャッシュ効率のモニタリング、トラフィックパターンの分析、ビューワーの把握の向上など、これらのレポートを使用して CloudFront ディストリビューションを効果的にモニタリングして分析できます。

CloudFront アクティビティの次のレポートをコンソールで表示できます。

**Topics**
+ [CloudFront キャッシュ統計レポートを表示する](cache-statistics.md)
+ [CloudFront 人気オブジェクトのレポートを表示する](popular-objects-report.md)
+ [CloudFront トップリファラーレポートを表示する](top-referrers-report.md)
+ [CloudFront 使用状況レポートを表示する](usage-charts.md)
+ [CloudFront ビューワーレポートを表示する](viewers-reports.md)

これらのレポートのほとんどは、CloudFront アクセスログのデータに基づいており、このログには CloudFront が受け取ったすべてのユーザーリクエストの詳細が含まれています。このレポートを表示するために、アクセスログを有効にする必要はありません。詳細については、「[アクセスログ (標準ログ)](AccessLogs.md)」を参照してください。

# CloudFront キャッシュ統計レポートを表示する
<a name="cache-statistics"></a>

Amazon CloudFront キャッシュ統計レポートには、以下の情報が表示されます。
+ **リクエストの合計数** – すべての HTTP ステータスコード (200、404 など) およびすべてのメソッド (GET、HEAD、POST など) に対するリクエストの総数。
+ **結果タイプ別のビューワーリクエストの割合** – 選択した CloudFront ディストリビューションのビューワーリクエストの合計数に対するヒット、ミス、エラーの割合。
+ **ビューワーに転送されたバイト数** – バイト総数とミスのバイト数。
+ **HTTP ステータスコード** – HTTP ステータスコード別のビューワーリクエスト数。
+ **ダウンロードが終了しなかった GET リクエストの割合** – リクエストされたオブジェクトのダウンロードが終了しなかったビューワー GET リクエストが、リクエスト総数に占める割合 (%)。

これらの統計のデータは、CloudFront アクセスログと同じソースから取得されます。ただし、キャッシュ統計を表示するために、[アクセスログ](AccessLogs.md)を有効にする必要はありません。

毎時間または毎日のデータポイントを使用して、過去 60 日間の指定した日付範囲のグラフを表示できます。通常は、1 時間前までに CloudFront が受け取ったリクエストについてデータを表示できますが、データが 24 時間ほど遅れることもあります。

**Topics**
+ [コンソールで CloudFront キャッシュ統計レポートを表示する](#cache-statistics-howto)
+ [CSV 形式でデータをダウンロードする](#cache-statistics-csv)
+ [キャッシュ統計のグラフと CloudFront 標準ログ (アクセスログ) のデータとの関連](#cache-statistics-data)

## コンソールで CloudFront キャッシュ統計レポートを表示する
<a name="cache-statistics-howto"></a>

コンソールで CloudFront キャッシュ統計レポートを表示できます。<a name="cache-statistics-procedure"></a>

**CloudFront キャッシュ統計レポートを表示するには**

1. AWS マネジメントコンソールにサインインし、[https://console.aws.amazon.com/cloudfront/v4/home](https://console.aws.amazon.com/cloudfront/v4/home) で CloudFront コンソールを開きます。

1. ナビゲーションペインで、**[キャッシュ統計]** をクリックします。

1. [**CloudFront Cache Statistics Reports (CloudFront キャッシュ統計レポート)**] ペインの [**Start Date (開始日)**] と [**End Date (終了日)**] で、キャッシュ統計のグラフを表示する日付範囲を選択します。使用できる範囲は、[**Granularity**] で選択した値によって決まります。
   + **Daily** – 1 日につき 1 つのデータポイントを使用してグラフを表示するには、過去 60 日の中で任意の日付範囲を選択します。
   + **Hourly** – 1 時間につき 1 つのデータポイントを使用してグラフを表示するには、過去 60 日以内で最大 14 日間の任意の日付範囲を選択します。

   日付と時刻は協定世界時 (UTC) です。

1. [**Granularity**] では、グラフに 1 日につき 1 つのデータポイントを表示するか、1 時間につき 1 つのデータポイントを表示するかを指定します。14 日を超える日付範囲を指定した場合、1 時間につき 1 つのデータポイントを指定することはできなくなります。

1. [**Viewer Location**] で、ビューワーのリクエストが発信された大陸を選択するか、[**All Locations**] を選択します。キャッシュ統計のグラフには、指定した場所から CloudFront が受信したリクエストのデータが含まれます。

1. [**Distribution**] リストでは、使用状況グラフにデータを表示するディストリビューションを選択します。
   + **個々のディストリビューション** - 選択した CloudFront ディストリビューションのデータがグラフに表示されます。[**Distribution**] リストには、ディストリビューションのディストリビューション ID と代替ドメイン名 (CNAME) が表示されます (ある場合)。ディストリビューションに代替ドメイン名がない場合、リストにはディストリビューションのオリジンドメイン名が含まれます。
   + **すべてのディストリビューション** - 現在の AWS アカウントアカウントに関連付けられているすべてのディストリビューションのデータが集計されてグラフに表示されます。ただし、削除したディストリビューションは除外されます。

1. **[更新]** を選択します。

**ヒント**  
グラフ内の毎日または毎時間のデータポイントのデータを表示するには、データポイントの上にカーソルを合わせます。
転送データを示すグラフの場合、Y 軸の単位をギガバイト、メガバイト、キロバイトのいずれかに変更できます。

## CSV 形式でデータをダウンロードする
<a name="cache-statistics-csv"></a>

キャッシュ統計レポートは CSV 形式でダウンロードできます。このセクションでは、レポートをダウンロードする方法と、レポートの値について説明します。<a name="cache-statistics-csv-procedure"></a>

**キャッシュ統計レポートを CSV 形式でダウンロードするには**

1. キャッシュ統計レポートを表示しているときに、**[CSV]** を選択します。

1. [**Opening *file name***] ダイアログボックスで、ファイルを開くか保存するかを選択します。

### レポートに関する情報
<a name="cache-statistics-csv-header"></a>

レポートの先頭数行には次の情報が含まれます。

**バージョン**  
この CSV ファイルの形式のバージョン。

**レポート**  
レポートの名前。

**DistributionID**  
レポートを実行した対象のディストリビューションの ID。または、すべてのディストリビューションを対象にレポートを実行した場合は `ALL`。

**StartDateUTC**  
協定世界時 (UTC) によるレポートを実行した日付範囲の開始日。

**EndDateUTC**  
協定世界時 (UTC) によるレポートを実行した日付範囲の終了日。

**GeneratedTimeUTC**  
協定世界時 (UTC) によるレポートを実行した日時。

**詳細度**  
レポートの各行が 1 時間と 1 日のどちらを表すか。

**ViewerLocation**  
ビューワーリクエストが発信された大陸。または、すべての場所についてレポートをダウンロードする場合は `ALL`。

### キャッシュ統計レポートのデータ
<a name="cache-statistics-csv-data"></a>

レポートには次の値が含まれています。

**DistributionID**  
レポートを実行した対象のディストリビューションの ID。または、すべてのディストリビューションを対象にレポートを実行した場合は `ALL`。

**FriendlyName**  
ディストリビューションの代替ドメイン名 (CNAME)、(存在する場合)。ディストリビューションに代替ドメイン名がない場合、リストにはディストリビューションのオリジンドメイン名が含まれます。

**ViewerLocation**  
ビューワーリクエストが発信された大陸。または、すべての場所についてレポートをダウンロードする場合は `ALL`。

**TimeBucket**  
協定世界時 (UTC) によるデータに該当する時間または日付。

**RequestCount**  
すべての HTTP ステータスコード (200、404 など) およびすべてのメソッド (GET、HEAD、POST など) のリクエストの総数。

**HitCount**  
CloudFront エッジキャッシュからオブジェクトが提供されたビューワーリクエストの数。

**MissCount**  
オブジェクトが現在エッジキャッシュに存在せず、CloudFront でオリジンからオブジェクトを取得する必要があるビューワーリクエストの数。

**ErrorCount**  
エラーになり、CloudFront でオブジェクトを提供できなかったビューワーリクエストの数。

**IncompleteDownloadCount**  
ビューワーがオブジェクトのダウンロードを開始したが、ダウンロードを終了できなかったビューワーリクエストの数。

**HTTP2xx**  
HTTP ステータスコードが 2xx 値 (成功) であるビューワーリクエストの数。

**HTTP3xx**  
HTTP ステータスコードが 3xx 値 (追加のアクションが必要) であるビューワーリクエストの数。

**HTTP4xx**  
HTTP ステータスコードが 4xx 値 (クライアントエラー) であるビューワーリクエストの数。

**HTTP5xx**  
HTTP ステータスコードが 5xx 値 (サーバーエラー) であるビューワーリクエストの数。

**TotalBytes**  
すべての HTTP メソッドに対するすべてのリクエストに応じて CloudFront からビューワーに提供される合計バイト数。

**BytesFromMisses**  
リクエストの発生時にエッジキャッシュに存在しなかったオブジェクトのビューワーに提供されたバイト数。この値は、オリジンから CloudFront エッジキャッシュに転送されたバイトの正確な概算です。ただし、エッジキャッシュに既に存在していても、有効期限が切れているオブジェクトのリクエストは除きます。

## キャッシュ統計のグラフと CloudFront 標準ログ (アクセスログ) のデータとの関連
<a name="cache-statistics-data"></a>

次の表は、CloudFront コンソールのキャッシュ統計のグラフと、対応する CloudFront アクセスログの値を示します。CloudFront アクセスログの詳細については、「[アクセスログ (標準ログ)](AccessLogs.md)」を参照してください。

**Total requests**  
このグラフには、すべての HTTP ステータスコード (200 または 404 など) およびすべてのメソッド (`GET`、`HEAD`、または `POST` など) のリクエストの総数が表示されます。このグラフに表示されるリクエストの総数は、同じ期間のアクセスログファイルのリクエストの総数と同じです。

**Percentage of viewer requests by result type**  
このグラフには、選択した CloudFront ディストリビューションの合計ビューワーリクエストに対するヒット、ミス、エラーの割合が表示されます。  
+ **Hit** – オブジェクトが CloudFront エッジキャッシュから提供されるビューワーリクエスト。アクセスログでは、これらのリクエストの `x-edge-response-result-type` の値は `Hit` です。
+ **Miss** – オブジェクトが現在エッジキャッシュに存在せず、CloudFront でオリジンからオブジェクトを取得する必要があるビューワーリクエスト。アクセスログでは、これらのリクエストの `x-edge-response-result-type` の値は `Miss` です。
+ **Error** – エラーになり、CloudFront でオブジェクトを提供できなかったビューワーリクエスト。アクセスログでは、これらのリクエストの `x-edge-response-result-type` の値は `Error`、`LimitExceeded` または `CapacityExceeded` です。
グラフには、エッジキャッシュに存在しても、有効期限が切れているオブジェクトのリフレッシュヒットリクエストは含まれません。アクセスログでは、リフレッシュヒットのリクエストの `x-edge-response-result-type` の値は `RefreshHit` です。

**Bytes transferred to viewers**  
このグラフには 2 つの値が表示されます。  
+ **Total bytes** – すべての HTTP メソッドに対するすべてのリクエストに応じて CloudFront からビューワーに提供される合計バイト数。CloudFront アクセスログでは、[**Total Bytes (合計バイト数)**] は、`sc-bytes` 列の同じ期間に発生したすべてのリクエストの値の合計です。
+ **Bytes from misses** – リクエストの発生時にエッジキャッシュに存在しなかったオブジェクトのビューワーに提供されたバイト数。CloudFront アクセスログでは、**[bytes from misses]**] (欠落しているオブジェクトのバイト数) は、`sc-bytes` 列で、`x-edge-result-type` の値が `Miss` であるリクエストの値の合計です。この値は、オリジンから CloudFront エッジキャッシュに転送されたバイトの正確な概算です。ただし、エッジキャッシュに既に存在していても、有効期限が切れているオブジェクトのリクエストは除きます。

**HTTP ステータスコード**  
このグラフには HTTP ステータスコードごとのビューワーリクエストが表示されます。CloudFront アクセスログでは、ステータスコードは `sc-status` 列に表示されます。  
+ **2xx** – 成功したリクエスト。
+ **3xx** – 追加のアクションが必要です。たとえば、301 (Moved Permanently) は、リクエストされたオブジェクトが異なる場所に移動されていることを意味します。
+ **4xx** – クライアント側のエラー。たとえば、404 (Not Found) は、クライアントが、検出できないオブジェクトをリクエストしたことを意味します。
+ **5xx** – オリジンサーバーがリクエストを実行しませんでした。たとえば、503 (Service Unavailable) は、オリジンサーバーが現在利用できないことを意味します。

**Percentage of GET requests that didn't finish downloading**  
このグラフでは、合計リクエストに対して、リクエストされたオブジェクトのダウンロードが終了していない、ビューワーの `GET` リクエストの割合が表示されます。通常、オブジェクトのダウンロードが完了しないのは、たとえば別のリンクをクリックしたり、ブラウザを閉じたりして、ビューワーによってキャンセルされたときです。CloudFront アクセスログでは、これらのリクエストの `200` 列の値は、`sc-status` で、`Error` 列の値は、`x-edge-result-type` です。

# CloudFront 人気オブジェクトのレポートを表示する
<a name="popular-objects-report"></a>

Amazon CloudFront 人気オブジェクトレポートを表示して、過去 60 日間の指定された日付範囲内のディストリビューションで最も人気のある 50 個のオブジェクトを確認します。これらのオブジェクトに関する統計を表示することもできます。これには、以下が含まれます。
+ オブジェクトに対するリクエストの数
+ ヒットとミスの数
+ Hit ratio
+ ミスのために供給されたバイト数
+ 供給された合計バイト数
+ 不完全なダウンロードの数
+ HTTP ステータスコード (2xx、3xx、4xx、5xx) 別のリクエスト数

これらの統計のデータは CloudFront アクセスログと同じソースから取得されます。ただし、人気オブジェクトを表示するために、[アクセスログ](AccessLogs.md)を有効にする必要はありません。

**Topics**
+ [コンソールで CloudFront 人気オブジェクトのレポートを表示する](#popular-objects-howto)
+ [CloudFront が人気オブジェクト統計を計算する方法](#popular-objects-calculate)
+ [CSV 形式でデータをダウンロードする](#popular-objects-csv)
+ [人気オブジェクトレポートのデータと CloudFront 標準ログ (アクセスログ) のデータとの関連](#popular-objects-data)

## コンソールで CloudFront 人気オブジェクトのレポートを表示する
<a name="popular-objects-howto"></a>

コンソールで CloudFront 人気オブジェクトのレポートを表示できます。<a name="popular-objects-report-procedure"></a>

**CloudFront ディストリビューションの人気オブジェクトを表示するには**

1. AWS マネジメントコンソールにサインインし、[https://console.aws.amazon.com/cloudfront/v4/home](https://console.aws.amazon.com/cloudfront/v4/home) で CloudFront コンソールを開きます。

1. ナビゲーションペインで、**[人気オブジェクト]** をクリックします。

1. [**CloudFront Popular Objects Report (CloudFront 人気オブジェクトレポート)**] ペインの [**Start Date (開始日)**] と [**End Date (終了日)**] で、人気オブジェクトのリストを表示する日付範囲を選択します。過去 60 日間の任意の日付範囲を選択できます。

   日付と時刻は協定世界時 (UTC) です。

1. [**Distribution**] リストで、人気オブジェクトのリストを表示するディストリビューションを選択します。

1. **[更新]** を選択します。

## CloudFront が人気オブジェクト統計を計算する方法
<a name="popular-objects-calculate"></a>

ディストリビューションの上位 50 件のオブジェクトの正確な数を取得するには、CloudFront で、午前 0 時から 10 分間隔ですべてのオブジェクトのリクエストをカウントし、その後 24 時間にわたって上位 150 件のオブジェクトの現在までの累計を保持します。(CloudFront は、上位 150 件のオブジェクトの毎日の合計を 60 日間保持します)。

リストの最下位に近いオブジェクトは、リストに加わったり、リストからなくなったりするため、これらのオブジェクトの合計は概算です。150 件のオブジェクトのリストの中の上位 50 件のオブジェクトもリスト内で上がったり下がったりする可能性はありますが、リストから完全になくなることはほとんどないため、これらのオブジェクトの合計は信頼できます。

オブジェクトが上位 150 件のリストからなくなり、その日のうちに再びリストに加わった場合、CloudFront で、そのオブジェクトがリストになかった期間の推定リクエスト数が追加されます。この予測は、その期間中にリストの最後にあったオブジェクトから受け取ったリクエストの数に基づいています。

オブジェクトがその日のうちに上位 50 件のオブジェクトに加わった場合、オブジェクトが上位 150 件になかった間に CloudFront が受け取ったリクエストの数の予想により、通常、人気オブジェクトレポートのリクエスト数は、そのオブジェクトのアクセスログに表示されるリクエストの数を超えます。

## CSV 形式でデータをダウンロードする
<a name="popular-objects-csv"></a>

人気オブジェクトレポートは CSV 形式でダウンロードできます。このセクションでは、レポートをダウンロードする方法と、レポートの値について説明します。<a name="popular-objects-csv-procedure"></a>

**人気オブジェクトレポートを CSV 形式でダウンロードするには**

1. 人気オブジェクトレポートを表示しているときに、**[CSV]** を選択します。

1. [**Opening *file name***] ダイアログボックスで、ファイルを開くか保存するかを選択します。

### レポートに関する情報
<a name="popular-objects-csv-header"></a>

レポートの先頭数行には次の情報が含まれます。

**バージョン**  
この CSV ファイルの形式のバージョン。

**レポート**  
レポートの名前。

**DistributionID**  
レポートを実行した対象のディストリビューションの ID。

**StartDateUTC**  
協定世界時 (UTC) によるレポートを実行した日付範囲の開始日。

**EndDateUTC**  
協定世界時 (UTC) によるレポートを実行した日付範囲の終了日。

**GeneratedTimeUTC**  
協定世界時 (UTC) によるレポートを実行した日時。

### 人気オブジェクトレポートのデータ
<a name="popular-objects-csv-data"></a>

レポートには次の値が含まれています。

**DistributionID**  
レポートを実行した対象のディストリビューションの ID。

**FriendlyName**  
ディストリビューションの代替ドメイン名 (CNAME)、(存在する場合)。ディストリビューションに代替ドメイン名がない場合、リストにはディストリビューションのオリジンドメイン名が含まれます。

**オブジェクト**  
オブジェクトの URL の最後の 500 文字。

**RequestCount**  
このオブジェクトに対するリクエストの総数。

**HitCount**  
CloudFront エッジキャッシュからオブジェクトが提供されたビューワーリクエストの数。

**MissCount**  
オブジェクトが現在エッジキャッシュに存在せず、CloudFront でオリジンからオブジェクトを取得する必要があるビューワーリクエストの数。

**HitCountPct**  
`HitCount` の値に対する `RequestCount` の値の割合。

**BytesFromMisses**  
リクエストの発生時にエッジキャッシュにオブジェクトが存在しなかった場合に、このオブジェクトについてビューワーに提供されたバイト数。

**TotalBytes**  
すべての HTTP メソッドのすべてのリクエストに応じて、このオブジェクトについて CloudFront からビューワーに提供される合計バイト数。

**IncompleteDownloadCount**  
このオブジェクトについて、ビューワーがオブジェクトのダウンロードを開始したが、ダウンロードを終了できなかったビューワーリクエストの数。

**HTTP2xx**  
HTTP ステータスコードが 2xx 値 (成功) であるビューワーリクエストの数。

**HTTP3xx**  
HTTP ステータスコードが 3xx 値 (追加のアクションが必要) であるビューワーリクエストの数。

**HTTP4xx**  
HTTP ステータスコードが 4xx 値 (クライアントエラー) であるビューワーリクエストの数。

**HTTP5xx**  
HTTP ステータスコードが 5xx 値 (サーバーエラー) であるビューワーリクエストの数。

## 人気オブジェクトレポートのデータと CloudFront 標準ログ (アクセスログ) のデータとの関連
<a name="popular-objects-data"></a>

次のリストは、CloudFront コンソールの人気オブジェクトレポートの値と、対応する CloudFront アクセスログの値を示します。CloudFront アクセスログの詳細については、「[アクセスログ (標準ログ)](AccessLogs.md)」を参照してください。

**URL**  
オブジェクトへのアクセスにビューワーが使用する URL の末尾 500 文字です。

**リクエスト**  
オブジェクトに対するリクエストの総数。一般的にこの値は、CloudFront アクセスログのオブジェクトの `GET` リクエストの数とほぼ一致します。

**Hits**  
CloudFront エッジキャッシュからオブジェクトが提供されたビューワーリクエストの数。アクセスログでは、これらのリクエストの `x-edge-response-result-type` の値は `Hit` です。

**Misses**  
オブジェクトがエッジキャッシュに存在しないため、CloudFront でオリジンからオブジェクトが取得されたビューワーリクエストの数。アクセスログでは、これらのリクエストの `x-edge-response-result-type` の値は `Miss` です。

**Hit ratio**  
[**Requests**] 列の値に対する、[**Hits**] 列の値の割合。

**Bytes from misses**  
リクエストの発生時にエッジキャッシュに存在しなかったオブジェクトのビューワーに提供されたバイト数。CloudFront アクセスログでは、**[bytes from misses]**] (欠落しているオブジェクトのバイト数) は、`sc-bytes` 列で、`x-edge-result-type` の値が `Miss` であるリクエストの値の合計です。

**Total bytes**  
すべての HTTP メソッドのオブジェクトに対するすべてのリクエストに応じて CloudFront からビューワーに提供される合計バイト数。CloudFront アクセスログでは、**[total bytes]** (合計バイト数) は、`sc-bytes` 列の同じ期間に発生したすべてのリクエストの値の合計です。

**Incomplete downloads**  
リクエストされたオブジェクトのダウンロードが終了しなかったビューワーリクエストの数。通常、ダウンロードが完了しないのは、たとえば別のリンクをクリックしたり、ブラウザを閉じたりして、ビューワーによってキャンセルされたときです。CloudFront アクセスログでは、これらのリクエストの `200` 列の値は、`sc-status` で、`Error` 列の値は、`x-edge-result-type` です。

**2xx**  
HTTP ステータスコードが `2xx`、`Successful` であるリクエストの数。CloudFront アクセスログでは、ステータスコードは `sc-status` 列に表示されます。

**3xx**  
HTTP ステータスコードが `3xx` (`Redirection`) であるリクエストの数です。`3xx` のステータスコードは追加のアクションが必要であることを表します。たとえば、301 (Moved Permanently) は、リクエストされたオブジェクトが異なる場所に移動されていることを意味します。

**4xx**  
HTTP ステータスコードが `4xx` (`Client Error`) であるリクエストの数です。`4xx` のステータスコードはクライアント側でエラーが発生したことを表します。たとえば、404 (Not Found) は、クライアントが、検出できないオブジェクトをリクエストしたことを意味します。

**5xx**  
HTTP ステータスコードが `5xx` (`Server Error`) であるリクエストの数です。`5xx` のステータスコードはオリジンサーバーでリクエストが実行されなかったことを表します。たとえば、503 (Service Unavailable) は、オリジンサーバーが現在利用できないことを意味します。

# CloudFront トップリファラーレポートを表示する
<a name="top-referrers-report"></a>

CloudFront トップリファラーレポートには、過去 60 日間の任意の日付範囲について、次の項目が含まれます。
+ 上位 25 のリファラー (CloudFront がディストリビューションに配信しているオブジェクトに対する HTTP および HTTPS リクエストが最も多いウェブサイトのドメイン）
+ リファラーからのリクエストの数
+ 指定した期間のリクエストの総数に対してリファラからのリクエストの数の割合。

トップリファラレポートのデータは、CloudFront アクセスログと同じソースから取得されます。ただし、トップリファラーを表示するために、[アクセスログ](AccessLogs.md)を有効にする必要はありません。

トップリファラーは、検索エンジン、オブジェクトに直接リンクされた他のウェブサイト、またはユーザー自身のウェブサイトである場合もあります。例えば、`https://example.com/index.html` が 10 個のグラフィックにリンクする場合、`example.com` は 10 個のグラフィックすべてのリファラです。

**注記**  
ユーザーがブラウザのアドレス行に直接 URL を入力した場合、リクエストしたオブジェクトのリファラはありません。

**Topics**
+ [コンソールで CloudFront トップリファラーレポートを表示する](#top-referrers-howto)
+ [CloudFront がトップリファラー統計を計算する方法](#top-referrers-calculate)
+ [CSV 形式でデータをダウンロードする](#top-referrers-csv)
+ [トップリファラレポートのデータと CloudFront 標準ログ (アクセスログ) のデータとの関連](#top-referrers-data)

## コンソールで CloudFront トップリファラーレポートを表示する
<a name="top-referrers-howto"></a>

CloudFront トップリファラーレポートはコンソールで表示できます。<a name="top-referrers-report-procedure"></a>

**CloudFront ディストリビューションのトップリファラーを表示するには**

1. AWS マネジメントコンソールにサインインし、[https://console.aws.amazon.com/cloudfront/v4/home](https://console.aws.amazon.com/cloudfront/v4/home) で CloudFront コンソールを開きます。

1. ナビゲーションペインで、**[トップリファラー]** を選択します。

1. [**CloudFront Top Referrers Report (CloudFront トップリファラレポート)**] ペインの [**Start Date (開始日)**] と [**End Date (終了日)**] で、トップリファラのリストを表示する日付範囲を選択します。

   日付と時刻は協定世界時 (UTC) です。

1. [**Distribution**] リストで、トップリファラのリストを表示するディストリビューションを選択します。

1. **[更新]** を選択します。

## CloudFront がトップリファラー統計を計算する方法
<a name="top-referrers-calculate"></a>

上位 25 件のリファラの正確な数を取得するには、CloudFront ですべてのオブジェクトのリクエストを 10 分間隔でカウントし、上位 75 件のリファラの現在までの累計を保持します。リストの最下位に近いリファラーは、リストに加わったり、リストからなくなったりするため、これらのリファラーの合計は概算です。

75 件のリファラーのリストの中の上位 25 件のリファラーもリスト内で上がったり下がったりする可能性はありますが、リストから完全になくなることはほとんどないため、通常これらのリファラーの合計は信頼できます。

## CSV 形式でデータをダウンロードする
<a name="top-referrers-csv"></a>

トップリファラレポートは CSV 形式でダウンロードできます。このセクションでは、レポートをダウンロードする方法と、レポートの値について説明します。<a name="top-referrers-csv-procedure"></a>

**トップリファラレポートを CSV 形式でダウンロードするには**

1. トップリファラーレポートを表示しているときに、**[CSV]** を選択します。

1. [**Opening *file name***] ダイアログボックスで、ファイルを開くか保存するかを選択します。

### レポートに関する情報
<a name="top-referrers-csv-header"></a>

レポートの先頭数行には次の情報が含まれます。

**バージョン**  
この CSV ファイルの形式のバージョン。

**レポート**  
レポートの名前。

**DistributionID**  
レポートを実行した対象のディストリビューションの ID。または、すべてのディストリビューションを対象にレポートを実行した場合は `ALL`。

**StartDateUTC**  
協定世界時 (UTC) によるレポートを実行した日付範囲の開始日。

**EndDateUTC**  
協定世界時 (UTC) によるレポートを実行した日付範囲の終了日。

**GeneratedTimeUTC**  
協定世界時 (UTC) によるレポートを実行した日時。

### トップリファラレポートのデータ
<a name="top-referrers-csv-data"></a>

レポートには次の値が含まれています。

**DistributionID**  
レポートを実行した対象のディストリビューションの ID。または、すべてのディストリビューションを対象にレポートを実行した場合は `ALL`。

**FriendlyName**  
ディストリビューションの代替ドメイン名 (CNAME)、(存在する場合)。ディストリビューションに代替ドメイン名がない場合、リストにはディストリビューションのオリジンドメイン名が含まれます。

**Referrer**  
リファラのドメイン名。

**RequestCount**  
[`Referrer`] 列のドメイン名からのリクエストの総数。

**RequestsPct**  
指定した期間のリクエストの総数に対してリファラによって送信されたリクエストの数の割合。

## トップリファラレポートのデータと CloudFront 標準ログ (アクセスログ) のデータとの関連
<a name="top-referrers-data"></a>

次のリストは、CloudFront コンソールのトップリファラレポートの値と、対応する CloudFront アクセスログの値を示します。CloudFront アクセスログの詳細については、「[アクセスログ (標準ログ)](AccessLogs.md)」を参照してください。

**Referrer**  
リファラのドメイン名。アクセスログでは、リファラは `cs(Referer)` 列に表示されます。

**Request count**  
[**Referrer**] 列のドメイン名からのリクエストの総数。一般的にこの値は、CloudFront アクセスログのリファラからの `GET` リクエストの数とほぼ一致します。

**リクエスト %**  
指定した期間のリクエストの総数に対してリファラによって送信されたリクエストの数の割合。リファラが 25 個以上あると、**[request count]** (リクエスト数) 列に指定した期間のすべてのリクエストを含めることができないため、このテーブルのデータに基づいて **[Request %]** (リクエスト %) を計算することはできません。

# CloudFront 使用状況レポートを表示する
<a name="usage-charts"></a>

CloudFront 使用状況レポートには次の情報が含まれます。
+ **Number of requests** – 指定された CloudFront ディストリビューションの時間間隔ごとに、選択されたリージョンのエッジロケーションから CloudFront が応答したリクエストの総数を示します。
+ **Data transferred by protocol** および **data transferred by destination** – どちらの場合も、指定された CloudFront ディストリビューションの時間間隔ごとに、選択されたリージョンの CloudFront エッジロケーションから転送されたデータの合計量を示します。データは、以下のように異なる方法で分けられます。
  + **プロトコル別** – プロトコル (HTTP または HTTPS) 別にデータを分けます。
  + **送信先別** – 送信先 (ビューワーまたはオリジン) 別にデータを分けます。

CloudFront 使用状況レポートは、CloudFront の AWS 使用状況レポートに基づいています。このレポートでは、追加の設定は必要ありません。詳細については、「[CloudFront の AWS 使用状況レポートを表示する](reports-billing.md#usage-report)」を参照してください。

毎時間または毎日のデータポイントを使用して、過去 60 日間の指定した日付範囲のレポートを表示できます。通常、最近 4 時間前までに CloudFront が受け取ったリクエストについてデータを表示できますが、ときにはデータが 24 時間、遅れることがあります。

詳細については、「[使用状況グラフと CloudFront 使用状況レポートのデータとの関連](#usage-charts-table)」を参照してください。

**Topics**
+ [コンソールで CloudFront 使用状況レポートを表示する](#usage-charts-howto)
+ [CSV 形式でデータをダウンロードする](#usage-csv)
+ [使用状況グラフと CloudFront 使用状況レポートのデータとの関連](#usage-charts-table)

## コンソールで CloudFront 使用状況レポートを表示する
<a name="usage-charts-howto"></a>

コンソールで CloudFront 使用状況レポートを表示できます。<a name="usage-charts-procedure"></a>

**CloudFront 使用状況レポートを表示するには**

1. AWS マネジメントコンソールにサインインし、[https://console.aws.amazon.com/cloudfront/v4/home](https://console.aws.amazon.com/cloudfront/v4/home) で CloudFront コンソールを開きます。

1. ナビゲーションペインで [**Usage Reports (使用状況レポート)**] を選択します。

1. [**CloudFront Usage Reports (CloudFront 使用状況レポート)**] ペインの [**Start Date (開始日)**] と [**End Date (終了日)**] で、使用状況グラフを表示する日付範囲を選択します。使用できる範囲は、[**Granularity**] で選択した値によって決まります。
   + **Daily** — 1 日につき 1 つのデータポイントを使用してグラフを表示するには、過去 60 日の中で任意の日付範囲を選択します。
   + **Hourly** — 1 時間につき 1 つのデータポイントを使用してグラフを表示するには、過去 60 日以内で最大 14 日間の任意の日付範囲を選択します。

   日付と時刻は協定世界時 (UTC) です。

1. [**Granularity**] では、グラフに 1 日につき 1 つのデータポイントを表示するか、1 時間につき 1 つのデータポイントを表示するかを指定します。14 日を超える日付範囲を指定した場合、1 時間につき 1 つのデータポイントを指定することはできなくなります。

1. [**Billing Region (請求リージョン)**] では、データを表示する CloudFront 請求リージョンを選択するか、[**All Regions (すべてのリージョン)**] を選択します。使用状況グラフは、指定したリージョンのエッジロケーションで CloudFront が処理するリクエストのデータを含みます。CloudFront がリクエストを処理するリージョンは、ビューワーの場所に対応している場合も、対応していない場合もあります。

   ディストリビューションの料金クラスに含まれるリージョンのみを選択します。そうしないと、使用状況グラフにデータが含まれない可能性があります。たとえば、ディストリビューションで価格クラス 200 を選択した場合、南米およびオーストラリアの請求リージョンは含まれません。そのため、CloudFront は一般にこれらのリージョンからのリクエストを処理しません。料金クラスの詳細については、「[CloudFront の料金](https://aws.amazon.com/cloudfront/pricing/)」を参照してください。

1. [**Distribution**] リストでは、使用状況グラフにデータを表示するディストリビューションを選択します。
   + **個々のディストリビューション** - 選択した CloudFront ディストリビューションのデータがグラフに表示されます。[**Distribution**] リストには、ディストリビューションのディストリビューション ID と代替ドメイン名 (CNAME) が表示されます (ある場合)。ディストリビューションに代替ドメイン名がない場合、リストにはディストリビューションのオリジンドメイン名が含まれます。
   + **All distributions (excludes deleted)** - 現在の AWS アカウントに関連付けられているすべてのディストリビューションのデータが集計されてグラフに表示されます。ただし、削除したディストリビューションは除外されます。
   + **All Deleted Distributions** - 現在の AWS アカウントに関連付けられていて過去 60 日間に削除されたすべてのディストリビューションのデータが集計されてグラフに表示されます。

1. **[グラフを更新]** を選択します。

**ヒント**  
グラフ内の毎日または毎時間のデータポイントのデータを表示するには、データポイントの上にカーソルを合わせます。
転送データを示すグラフの場合、Y 軸の単位をギガバイト、メガバイト、キロバイトのいずれかに変更できることに注意してください。

## CSV 形式でデータをダウンロードする
<a name="usage-csv"></a>

使用状況レポートは CSV 形式でダウンロードできます。このセクションでは、レポートをダウンロードする方法と、レポートの値について説明します。<a name="usage-csv-procedure"></a>

**使用状況レポートを CSV 形式でダウンロードするには**

1. 使用状況レポートを表示しているときに、**[CSV]** を選択します。

1. [**Opening *file name***] ダイアログボックスで、ファイルを開くか保存するかを選択します。

### レポートに関する情報
<a name="usage-csv-header"></a>

レポートの先頭数行には次の情報が含まれます。

**バージョン**  
この CSV ファイルの形式のバージョン。

**レポート**  
レポートの名前。

**DistributionID**  
レポートを実行した対象のディストリビューションの ID。すべてのディストリビューションを対象にレポートを実行した場合は `ALL`。削除したディストリビューションを対象にレポートを実行した場合は `ALL_DELETED`。

**StartDateUTC**  
協定世界時 (UTC) によるレポートを実行した日付範囲の開始日。

**EndDateUTC**  
協定世界時 (UTC) によるレポートを実行した日付範囲の終了日。

**GeneratedTimeUTC**  
協定世界時 (UTC) によるレポートを実行した日時。

**詳細度**  
レポートの各行が 1 時間と 1 日のどちらを表すか。

**BillingRegion**  
ビューワーリクエストが発信された大陸。または、すべての請求リージョンについてレポートをダウンロードする場合は `ALL`。

### 使用状況レポートのデータ
<a name="usage-csv-data"></a>

レポートには次の値が含まれています。

**DistributionID**  
レポートを実行した対象のディストリビューションの ID。すべてのディストリビューションを対象にレポートを実行した場合は `ALL`。削除したディストリビューションを対象にレポートを実行した場合は `ALL_DELETED`。

**FriendlyName**  
ディストリビューションの代替ドメイン名 (CNAME)、(存在する場合)。ディストリビューションに代替ドメイン名がない場合、リストにはディストリビューションのオリジンドメイン名が含まれます。

**BillingRegion**  
レポートを実行した対象の CloudFront 請求リージョン、または `ALL`。

**TimeBucket**  
協定世界時 (UTC) によるデータに該当する時間または日付。

**HTTP**  
指定した CloudFront ディストリビューションで時間間隔ごとに、CloudFront が応答する、選択したリージョンのエッジロケーションからの HTTP リクエストの数。値には以下のものが含まれます。  
+ CloudFront からビューワーへのデータ転送を引き起こす `GET` リクエストと `HEAD` リクエストの数
+ CloudFront がオリジンにデータを転送する、`DELETE`、`OPTIONS`、`PATCH`、`POST`、および `PUT` リクエストの数

**HTTPS**  
指定した CloudFront ディストリビューションで時間間隔ごとに、CloudFront が応答する、選択したリージョンのエッジロケーションからの HTTPS リクエストの数。値には以下のものが含まれます。  
+ CloudFront からビューワーへのデータ転送を引き起こす `GET` リクエストと `HEAD` リクエストの数
+ CloudFront がオリジンにデータを転送する、`DELETE`、`OPTIONS`、`PATCH`、`POST`、および `PUT` リクエストの数

**HTTPBytes**  
指定した CloudFront ディストリビューションで期間中に、選択した請求リージョンの CloudFront エッジロケーションから HTTP 経由で転送されるデータの合計量。値には以下のものが含まれます。  
+ `GET` リクエストと `HEAD` リクエストに応じて CloudFront からビューワーに転送されるデータ
+ `DELETE`、`OPTIONS`、`PATCH`、`POST`、`PUT` の各リクエストに応じて、ビューワーから CloudFront に転送されるデータ
+ `DELETE`、`OPTIONS`、`PATCH`、`POST`、`PUT` の各リクエストに応じて CloudFront からビューワーに転送されるデータ

**HTTPSBytes**  
指定した CloudFront ディストリビューションで期間中に、選択した請求リージョンの CloudFront エッジロケーションから HTTPS 経由で転送されるデータの合計量。値には以下のものが含まれます。  
+ `GET` リクエストと `HEAD` リクエストに応じて CloudFront からビューワーに転送されるデータ
+ `DELETE`、`OPTIONS`、`PATCH`、`POST`、`PUT` の各リクエストに応じて、ビューワーから CloudFront に転送されるデータ
+ `DELETE`、`OPTIONS`、`PATCH`、`POST`、`PUT` の各リクエストに応じて CloudFront からビューワーに転送されるデータ

**BytesIn**  
指定した CloudFront ディストリビューションで時間間隔ごとに、選択したリージョンの `DELETE`、`OPTIONS`、`PATCH`、`POST`、および `PUT` リクエストについて、CloudFront からオリジンに転送されるデータの合計量。

**BytesOut**  
指定した CloudFront ディストリビューションにおいて時間間隔ごとに、選択したリージョンで CloudFront からビューワーに HTTP および HTTPS 経由で転送されるデータの合計量。値には以下のものが含まれます。  
+ `GET` リクエストと `HEAD` リクエストに応じて CloudFront からビューワーに転送されるデータ
+ `DELETE`、`OPTIONS`、`PATCH`、`POST`、`PUT` の各リクエストに応じて CloudFront からビューワーに転送されるデータ

## 使用状況グラフと CloudFront 使用状況レポートのデータとの関連
<a name="usage-charts-table"></a>

次のリストは、CloudFront コンソールの使用状況グラフと、対応する CloudFront 使用状況レポートの [**Usage Type (使用タイプ)**] 列の値を示します。

**Topics**
+ [リクエストの数](#usage-charts-requests)
+ [プロトコルごとのデータ転送](#usage-charts-data-transferred-by-protocol)
+ [ディストリビューションごとのデータ転送](#usage-charts-data-transferred-by-destination)

### リクエストの数
<a name="usage-charts-requests"></a>

このグラフは、指定された CloudFront ディストリビューションの時間間隔ごとに、選択されたリージョンのエッジロケーションから CloudFront が応答したリクエストの総数を、プロトコル別 (HTTP または HTTPS) およびタイプ別 (静的、動的、またはプロキシ) に分けて示します。

**Number of HTTP requests**  
+ *region***-Requests-HTTP-Static:** TTL ≥ 3600 秒のオブジェクトのために供給された HTTP `GET` および `HEAD` リクエストの数
+ *region***-Requests-HTTP-Dynamic:** TTL < 3600 秒のオブジェクトのために供給された HTTP `GET` および `HEAD` リクエストの数
+ *region***-Requests-HTTP-Proxy:** CloudFront がお客様のオリジンに転送した HTTP `DELETE`、`OPTIONS`、`PATCH`、`POST`、`PUT` リクエストの数

**Number of HTTPS requests**  
+ *region***-Requests-HTTPS-Static:** TTL ≥ 3600 秒のオブジェクトのために供給された HTTPS `GET` および `HEAD` リクエストの数
+ *region***-Requests-HTTPS-Dynamic:** TTL < 3600 秒のオブジェクトのために供給された HTTPS `GET` および `HEAD` リクエストの数
+ *region***-Requests-HTTPS-Proxy:** CloudFront がお客様のオリジンに転送した HTTPS `DELETE`、`OPTIONS`、`PATCH`、`POST`、`PUT` リクエストの数

### プロトコルごとのデータ転送
<a name="usage-charts-data-transferred-by-protocol"></a>

このグラフは、指定した CloudFront ディストリビューションにおいて時間間隔ごとに、選択したリージョンの CloudFront エッジロケーションから転送されたデータの合計量を、プロトコル別 (HTTP または HTTPS)、タイプ別 (静的、動的、またはプロキシ)、および送信先別 (ビューワーまたはオリジン) に分けて示します。

**Data transferred over HTTP**  
+ *region***-Out-Bytes-HTTP-Static:** TTL >= 3600 秒のオブジェクトのために HTTP 経由で供給されたバイト数
+ *region***-Out-Bytes-HTTP-Dynamic:** TTL < 3600 秒のオブジェクトのために HTTP 経由で供給されたバイト数
+ *region***-Out-Bytes-HTTP-Proxy:** `DELETE`、`OPTIONS`、`PATCH`、`POST`、`PUT` リクエストへの応答として CloudFront からビューワーに HTTP 経由で返されたバイト数
+ *region***-Out-OBytes-HTTP-Proxy:** `DELETE`、`OPTIONS`、`PATCH`、`POST`、`PUT` リクエストへの応答として CloudFront エッジロケーションからオリジンに HTTP 経由で転送された合計バイト数

**Data transferred over HTTPS**  
+ *region***-Out-Bytes-HTTPS-Static:** TTL >= 3600 秒のオブジェクトのために HTTPS 経由で供給されたバイト数
+ *region***-Out-Bytes-HTTPS-Dynamic:** TTL < 3600 秒のオブジェクトのために HTTPS 経由で供給されたバイト数
+ *region***-Out-Bytes-HTTPS-Proxy:** `DELETE`、`OPTIONS`、`PATCH`、`POST`、`PUT` リクエストへの応答として CloudFront からビューワーに HTTPS 経由で返されたバイト数
+ *region***-Out-OBytes-HTTPS-Proxy:** `DELETE`、`OPTIONS`、`PATCH`、`POST`、`PUT` リクエストへの応答として CloudFront エッジロケーションからオリジンに HTTPS 経由で転送された合計バイト数

### ディストリビューションごとのデータ転送
<a name="usage-charts-data-transferred-by-destination"></a>

このグラフは、指定した CloudFront ディストリビューションにおいて時間間隔ごとに、選択したリージョンの CloudFront エッジロケーションから転送されたデータの合計量を、プロトコル別 (HTTP または HTTPS)、タイプ別 (静的、動的、またはプロキシ)、および送信先別 (ユーザーまたはオリジン) に分けて示します。

**CloudFront からビューワーに転送されたデータ**  
+ *region***-Out-Bytes-HTTP-Static:** TTL >= 3600 秒のオブジェクトのために HTTP 経由で供給されたバイト数
+ *region***-Out-Bytes-HTTPS-Static:** TTL >= 3600 秒のオブジェクトのために HTTPS 経由で供給されたバイト数
+ *region***-Out-Bytes-HTTP-Dynamic:** TTL < 3600 秒のオブジェクトのために HTTP 経由で供給されたバイト数
+ *region***-Out-Bytes-HTTPS-Dynamic:** TTL < 3600 秒のオブジェクトのために HTTPS 経由で供給されたバイト数
+ *region***-Out-Bytes-HTTP-Proxy:** `DELETE`、`OPTIONS`、`PATCH`、`POST`、`PUT` リクエストへの応答として CloudFront からビューワーに HTTP 経由で返されたバイト数
+ *region***-Out-Bytes-HTTPS-Proxy:** `DELETE`、`OPTIONS`、`PATCH`、`POST`、`PUT` リクエストへの応答として CloudFront からビューワーに HTTPS 経由で返されたバイト数

**CloudFront からオリジンに転送されるデータ**  
+ *region***-Out-OBytes-HTTP-Proxy:** `DELETE`、`OPTIONS`、`PATCH`、`POST`、`PUT` リクエストへの応答として CloudFront エッジロケーションからオリジンに HTTP 経由で転送された合計バイト数
+ *region***-Out-OBytes-HTTPS-Proxy:** `DELETE`、`OPTIONS`、`PATCH`、`POST`、`PUT` リクエストへの応答として CloudFront エッジロケーションからオリジンに HTTPS 経由で転送された合計バイト数

# CloudFront ビューワーレポートを表示する
<a name="viewers-reports"></a>

CloudFront ビューワーレポートには、過去 60 日間の任意の日付範囲について、次の情報が含まれます。
+ **デバイス** – コンテンツへのアクセスに最も頻繁に使用されるデバイスのタイプ (デスクトップやモバイルなど）
+ **ブラウザ** – コンテンツへのアクセスに最も頻繁に使用される上位 10 のブラウザ (Chrome や Firefox など）
+ **オペレーティングシステム** – コンテンツへのアクセスに最も頻繁に使用される上位 10 のオペレーティングシステム (Linux、macOS、Windows など）
+ **ロケーション** – コンテンツに最も頻繁にアクセスするビューワーの上位 50 のロケーション (国、または米国の州/準州)。
  + また、過去 60 日間における最大 14 日間の日付範囲で、時間単位のデータポイントがあるロケーションを表示することもできます。

**注記**  
ビューワーのグラフやレポートを表示するために、[アクセスログ](AccessLogs.md)を有効にする必要はありません。

**Topics**
+ [コンソールでビューワーのグラフとレポートを表示する](#viewers-reports-displaying)
+ [CSV 形式でデータをダウンロードする](#viewer-csv)
+ [ビューワーレポートに含まれるデータ](#viewer-csv-header)
+ [ロケーションレポートのデータと CloudFront 標準ログ (アクセスログ) のデータとの関連](#viewers-reports-data)

## コンソールでビューワーのグラフとレポートを表示する
<a name="viewers-reports-displaying"></a>

CloudFront ビューワーのグラフとレポートは、コンソールで表示できます。<a name="viewers-reports-procedure"></a>

**CloudFront ビューワーのグラフおよびレポートを表示するには**

1. AWS マネジメントコンソールにサインインし、[https://console.aws.amazon.com/cloudfront/v4/home](https://console.aws.amazon.com/cloudfront/v4/home) で CloudFront コンソールを開きます。

1. ナビゲーションペインで、**[ビューワー]** を選択します。

1. [**CloudFront Viewers (CloudFront ビューワー)**] ペインの [**Start Date (開始日)**] と [**End Date (終了日)**] で、ビューワーのグラフおよびレポートを表示する日付範囲を選択します。

   ロケーショングラフで使用できる範囲は、[**Granularity**] で選択した値によって異なります。
   + **Daily** – 1 日につき 1 つのデータポイントを使用してグラフを表示するには、過去 60 日の中で任意の日付範囲を選択します。
   + **Hourly** – 1 時間につき 1 つのデータポイントを使用してグラフを表示するには、過去 60 日以内で最大 14 日間の任意の日付範囲を選択します。

   日付と時刻は協定世界時 (UTC) です。

1. (ブラウザとオペレーティングシステムのグラフのみ) [**Grouping**] で、ブラウザおよびオペレーティングシステムを名前 (Chrome、Firefox) ごと、または名前とバージョン (Chrome 40.0、Firefox 35.0) ごとにグループ化するかどうかを指定します。

1. (ロケーショングラフのみ) [**Granularity**] で、グラフに 1 日につき 1 つのデータポイントを表示するか、1 時間につき 1 つのデータポイントを表示するかを指定します。14 日を超える日付範囲を指定した場合、1 時間につき 1 つのデータポイントを指定することはできなくなります。

1. (ロケーショングラフのみ) [**Details**] で、上位のロケーションを国ごとに表示するか、米国の州ごとに表示するかを指定します。

1. [**Distribution**] リストでは、使用状況グラフにデータを表示するディストリビューションを選択します。
   + **個々のディストリビューション** - 選択した CloudFront ディストリビューションのデータがグラフに表示されます。[**Distribution**] リストには、ディストリビューションのディストリビューション ID と代替ドメイン名 (CNAME) が表示されます (ある場合)。ディストリビューションに代替ドメイン名がない場合、リストにはディストリビューションのオリジンドメイン名が含まれます。
   + **All distributions (excludes deleted)** - 現在の AWS アカウントに関連付けられているすべてのディストリビューションのデータが集計されてグラフに表示されます。ただし、削除したディストリビューションは除外されます。

1. **[更新]** を選択します。

グラフ内の毎日または毎時間のデータポイントのデータを表示するには、データポイントの上にカーソルを合わせます。

## CSV 形式でデータをダウンロードする
<a name="viewer-csv"></a>

各ビューワーレポートは CSV 形式でダウンロードできます。このセクションでは、レポートをダウンロードする方法と、レポートの値について説明します。<a name="viewer-csv-procedure"></a>

**ビューワーレポートを CSV 形式でダウンロードするには**

1. ビューワーレポートを表示しているときに、**[CSV]** を選択します。

1. ダウンロードするデータ ([**Devices**] や [**Devices Trends**] など) を選択します。

1. [**Opening *file name***] ダイアログボックスで、ファイルを開くか保存するかを選択します。

## ビューワーレポートに含まれるデータ
<a name="viewer-csv-header"></a>

各レポートの先頭数行には次の情報が含まれます。

**バージョン**  
この CSV ファイルの形式のバージョン。

**レポート**  
レポートの名前。

**DistributionID**  
レポートを実行した対象のディストリビューションの ID。または、すべてのディストリビューションを対象にレポートを実行した場合は `ALL`。

**StartDateUTC**  
協定世界時 (UTC) によるレポートを実行した日付範囲の開始日。

**EndDateUTC**  
協定世界時 (UTC) によるレポートを実行した日付範囲の終了日。

**GeneratedTimeUTC**  
協定世界時 (UTC) によるレポートを実行した日時。

**Grouping (ブラウザとオペレーティングシステムのレポートのみ)**  
データをブラウザやオペレーティングシステムの名前によってグループ化するか、または名前とバージョンによってグループ化するか。

**詳細度**  
レポートの各行が 1 時間と 1 日のどちらを表すか。

**Details (ロケーションレポートのみ)**  
リクエストを国別にリストするか、米国の州別にリストするか。

以下のトピックでは、各種ビューワーレポートの情報について説明します。

**Topics**
+ [デバイスレポート](#viewer-devices-csv-data)
+ [デバイストレンドレポート](#viewer-device-trends-csv-data)
+ [ブラウザレポート](#viewer-browsers-csv-data)
+ [ブラウザトレンドレポート](#viewer-browser-trends-csv-data)
+ [オペレーティングシステムレポート](#viewer-operating-system-csv-data)
+ [オペレーティングシステムトレンドレポート](#viewer-operating-system-trends-csv-data)
+ [ロケーションレポート](#viewer-locations-csv-data)
+ [ロケーショントレンドレポート](#viewer-location-trends-csv-data)

### デバイスレポート
<a name="viewer-devices-csv-data"></a>

レポートには次の値が含まれています。

**DistributionID**  
レポートを実行した対象のディストリビューションの ID。または、すべてのディストリビューションを対象にレポートを実行した場合は `ALL`。

**FriendlyName**  
ディストリビューションの代替ドメイン名 (CNAME)、(存在する場合)。ディストリビューションに代替ドメイン名がない場合、リストにはディストリビューションのオリジンドメイン名が含まれます。

**リクエスト**  
CloudFront が各タイプのデバイスから受け取ったリクエストの数。

**RequestsPct**  
CloudFront がすべてのデバイスから受け取ったリクエストの数に対する、CloudFront が各タイプのデバイスから受け取ったリクエストの数の割合。

**カスタム**  
`User-Agent` HTTP ヘッダーの値が標準デバイスタイプのいずれか (`Desktop` や `Mobile` など) に関連付けられていなかったリクエスト。

### デバイストレンドレポート
<a name="viewer-device-trends-csv-data"></a>

レポートには次の値が含まれています。

**DistributionID**  
レポートを実行した対象のディストリビューションの ID。または、すべてのディストリビューションを対象にレポートを実行した場合は `ALL`。

**FriendlyName**  
ディストリビューションの代替ドメイン名 (CNAME)、(存在する場合)。ディストリビューションに代替ドメイン名がない場合、リストにはディストリビューションのオリジンドメイン名が含まれます。

**TimeBucket**  
協定世界時 (UTC) によるデータに該当する時間または日付。

**Desktop**  
期間中に CloudFront がデスクトップコンピュータから受け取ったリクエストの数。

**モバイル**  
期間中に CloudFront がモバイルデバイスから受け取ったリクエストの数。モバイルデバイスには、タブレットと携帯電話の両方が含まれる場合があります。CloudFront でリクエストがモバイルデバイスとタブレットのいずれから発信されたかを特定できない場合、そのリクエストは `Mobile` 列でカウントされます。

**Smart-TV**  
期間中に CloudFront がスマート TV から受け取ったリクエストの数。

**Tablet**  
期間中に CloudFront がタブレットから受け取ったリクエストの数。CloudFront でリクエストがモバイルデバイスとタブレットのいずれから発信されたかを特定できない場合、そのリクエストは `Mobile` 列でカウントされます。

**不明**  
`User-Agent` HTTP ヘッダーの値が標準デバイスタイプのいずれか (`Desktop` や `Mobile` など) に関連付けられていなかったリクエスト。

**Empty**  
期間中に CloudFront が受け取ったリクエストで、HTTP `User-Agent` ヘッダーに値が含まれていなかったリクエストの数。

### ブラウザレポート
<a name="viewer-browsers-csv-data"></a>

レポートには次の値が含まれています。

**DistributionID**  
レポートを実行した対象のディストリビューションの ID。または、すべてのディストリビューションを対象にレポートを実行した場合は `ALL`。

**FriendlyName**  
ディストリビューションの代替ドメイン名 (CNAME)、(存在する場合)。ディストリビューションに代替ドメイン名がない場合、リストにはディストリビューションのオリジンドメイン名が含まれます。

**グループ**  
`Grouping` の値に応じて、CloudFront がリクエストを受け取ったブラウザまたはブラウザとバージョン。ブラウザ名に加えて、次の値が含まれる場合があります。  
+ **Bot/Crawler** – 主にコンテンツのインデックスを作成する検索エンジンからのリクエスト。
+ **Empty** – `User-Agent` HTTP ヘッダーの値が空であったリクエスト。
+ **Other** – CloudFront によって識別されたが、一般的ではないブラウザ。`Bot/Crawler`、`Empty`、`Unknown` が最初の 9 個の値に表示されない場合、`Other` にも含まれています。
+ **Unknown** – `User-Agent` HTTP ヘッダーの値が標準的なブラウザに関連付けられていなかったリクエスト。このカテゴリのほとんどのリクエストは、カスタムアプリケーションまたはスクリプトからのリスクエストです。

**リクエスト**  
CloudFront が各タイプのブラウザから受け取ったリクエストの数。

**RequestsPct**  
期間中に CloudFront が受け取ったすべてのリクエストの数に対する、CloudFront が各タイプのブラウザから受け取ったリクエストの数の割合。

### ブラウザトレンドレポート
<a name="viewer-browser-trends-csv-data"></a>

レポートには次の値が含まれています。

**DistributionID**  
レポートを実行した対象のディストリビューションの ID。または、すべてのディストリビューションを対象にレポートを実行した場合は `ALL`。

**FriendlyName**  
ディストリビューションの代替ドメイン名 (CNAME)、(存在する場合)。ディストリビューションに代替ドメイン名がない場合、リストにはディストリビューションのオリジンドメイン名が含まれます。

**TimeBucket**  
協定世界時 (UTC) によるデータに該当する時間または日付。

**(ブラウザ)**  
レポートの残りの列には、`Grouping` の値に応じて、ブラウザまたはブラウザとバージョンがリストされます。ブラウザ名に加えて、次の値が含まれる場合があります。  
+ **Bot/Crawler** – 主にコンテンツのインデックスを作成する検索エンジンからのリクエスト。
+ **Empty** – `User-Agent` HTTP ヘッダーの値が空であったリクエスト。
+ **Other** – CloudFront によって識別されたが、一般的ではないブラウザ。`Bot/Crawler`、`Empty`、`Unknown` が最初の 9 個の値に表示されない場合、`Other` にも含まれています。
+ **Unknown** – `User-Agent` HTTP ヘッダーの値が標準的なブラウザに関連付けられていなかったリクエスト。このカテゴリのほとんどのリクエストは、カスタムアプリケーションまたはスクリプトからのリスクエストです。

### オペレーティングシステムレポート
<a name="viewer-operating-system-csv-data"></a>

レポートには次の値が含まれています。

**DistributionID**  
レポートを実行した対象のディストリビューションの ID。または、すべてのディストリビューションを対象にレポートを実行した場合は `ALL`。

**FriendlyName**  
ディストリビューションの代替ドメイン名 (CNAME)、(存在する場合)。ディストリビューションに代替ドメイン名がない場合、リストにはディストリビューションのオリジンドメイン名が含まれます。

**グループ**  
`Grouping` の値に応じて、CloudFront がリクエストを受け取ったオペレーティングシステムまたはオペレーティングシステムとバージョン。オペレーティングシステム名に加えて、次の値が含まれる場合があります。  
+ **Bot/Crawler** – 主にコンテンツのインデックスを作成する検索エンジンからのリクエスト。
+ **Empty** – `User-Agent` HTTP ヘッダーの値が空であったリクエスト。
+ **Other** – CloudFront によって識別されたが、一般的ではないオペレーティングシステム。`Bot/Crawler`、`Empty`、`Unknown` が最初の 9 個の値に表示されない場合、`Other` にも含まれています。
+ **Unknown** – `User-Agent` HTTP ヘッダーの値が標準的なブラウザに関連付けられていなかったリクエスト。このカテゴリのほとんどのリクエストは、カスタムアプリケーションまたはスクリプトからのリスクエストです。

**リクエスト**  
CloudFront が各タイプのオペレーティングシステムから受け取ったリクエストの数。

**RequestsPct**  
期間中に CloudFront が受け取ったすべてのリクエストの数に対する、CloudFront が各タイプのオペレーティングシステムから受け取ったリクエストの数の割合。

### オペレーティングシステムトレンドレポート
<a name="viewer-operating-system-trends-csv-data"></a>

レポートには次の値が含まれています。

**DistributionID**  
レポートを実行した対象のディストリビューションの ID。または、すべてのディストリビューションを対象にレポートを実行した場合は `ALL`。

**FriendlyName**  
ディストリビューションの代替ドメイン名 (CNAME)、(存在する場合)。ディストリビューションに代替ドメイン名がない場合、リストにはディストリビューションのオリジンドメイン名が含まれます。

**TimeBucket**  
協定世界時 (UTC) によるデータに該当する時間または日付。

**(オペレーティングシステム)**  
レポートの残りの列には、`Grouping` の値に応じて、オペレーティングシステムまたはオペレーティングシステムとバージョンがリストされます。オペレーティングシステム名に加えて、次の値が含まれる場合があります。  
+ **Bot/Crawler** – 主にコンテンツのインデックスを作成する検索エンジンからのリクエスト。
+ **Empty** – `User-Agent` HTTP ヘッダーの値が空であったリクエスト。
+ **Other** – CloudFront によって識別されたが、一般的ではないオペレーティングシステム。`Bot/Crawler`、`Empty`、`Unknown` が最初の 9 個の値に表示されない場合、`Other` にも含まれています。
+ **Unknown** – `User-Agent` HTTP ヘッダーでオペレーティングシステムが指定されていないリクエスト。

### ロケーションレポート
<a name="viewer-locations-csv-data"></a>

レポートには次の値が含まれています。

**DistributionID**  
レポートを実行した対象のディストリビューションの ID。または、すべてのディストリビューションを対象にレポートを実行した場合は `ALL`。

**FriendlyName**  
ディストリビューションの代替ドメイン名 (CNAME)、(存在する場合)。ディストリビューションに代替ドメイン名がない場合、リストにはディストリビューションのオリジンドメイン名が含まれます。

**LocationCode**  
CloudFront が受け取ったリクエストの発信元のロケーションの略語。表示される可能性がある値の詳細については、「[ロケーションレポートのデータと CloudFront 標準ログ (アクセスログ) のデータとの関連](#viewers-reports-data)」のロケーションの説明を参照してください。

**LocationName**  
CloudFront が受け取ったリクエストの発信元のロケーションの名前。

**リクエスト**  
CloudFront が各ロケーションから受け取ったリクエストの数。

**RequestsPct**  
期間中に CloudFront がすべてのロケーションから受け取ったリクエストの数に対する、CloudFront が各ロケーションから受け取ったリクエストの数の割合。

**TotalBytes**  
指定したディストリビューションおよび期間に、CloudFront からこの国または州のビューワーに提供されたバイト数。

### ロケーショントレンドレポート
<a name="viewer-location-trends-csv-data"></a>

レポートには次の値が含まれています。

**DistributionID**  
レポートを実行した対象のディストリビューションの ID。または、すべてのディストリビューションを対象にレポートを実行した場合は `ALL`。

**FriendlyName**  
ディストリビューションの代替ドメイン名 (CNAME)、(存在する場合)。ディストリビューションに代替ドメイン名がない場合、リストにはディストリビューションのオリジンドメイン名が含まれます。

**TimeBucket**  
協定世界時 (UTC) によるデータに該当する時間または日付。

**(ロケーション)**  
レポートの残りの列には、CloudFront が受け取ったリクエストの発信元のロケーションがリストされます。表示される可能性がある値の詳細については、「[ロケーションレポートのデータと CloudFront 標準ログ (アクセスログ) のデータとの関連](#viewers-reports-data)」のロケーションの説明を参照してください。

## ロケーションレポートのデータと CloudFront 標準ログ (アクセスログ) のデータとの関連
<a name="viewers-reports-data"></a>

次のリストは、CloudFront コンソールのロケーションレポートの値と、対応する CloudFront アクセスログの値を示します。CloudFront アクセスログの詳細については、「[アクセスログ (標準ログ)](AccessLogs.md)」を参照してください。

**場所**  
ビューワーがいる国または米国の州。アクセスログの `c-ip` 列には、ビューワーが実行中のデバイスの IP アドレスが含まれています。位置情報データを使用して、IP アドレスに基づくデバイスの地理的場所を識別します。  
**[ロケーション]** レポートを国ごとに表示する場合、国のリストは「[ISO 3166-2、国および行政区画の名前を表すコード – パート 2: 行政区画コード](https://en.wikipedia.org/wiki/ISO_3166-2)」に基づきます。**国のリストには、以下の追加の値が含まれています。  
+ **Anonymous Proxy (匿名プロキシ)** – 匿名のプロキシからのリクエスト。
+ **Satellite Provider (衛星プロバイダー)** – 複数の国にインターネットサービスを提供している衛星プロバイダーからのリクエスト。ビューワーは、不正行為のリスクが高い国にいる可能性があります。
+ **Europe (Unknown) (欧州 (不明))** – 複数の欧州諸国で使用されているブロックの IP からのリクエスト。リクエスト元の国を特定することはできません。CloudFront では、[**Europe (Unknown) (欧州 (不明))**] はデフォルトとして使用されます。
+ **Asia/Pacific (Unknown) (アジアパシフィック (不明))** – アジアパシフィックリージョンの複数の国で使用されているブロックの IP からのリクエスト。リクエスト元の国を特定することはできません。CloudFront では、[**Asia/Pacific (Unknown) (アジアパシフィック (不明))**] はデフォルトとして使用されます。
[**Locations** (所在地)] レポートを米国の州ごとに表示している場合、レポートには以下の米国準州と米軍基地所在地域が含まれることがあります。  
CloudFront がユーザーの所在地を特定できない場合、所在地はビューワーレポートに不明と表示されます。

**Request Count**  
ビューワーがいる国または米国の州からの、指定したディストリビューションおよび期間のリクエストの総数。一般的にこの値は、CloudFront アクセスログのその国または州の IP アドレスからの `GET` リクエストの数とほぼ一致します。

**リクエスト %**  
[**Details**] で選択した値に基づき、次のうちのいずれか。  
+ **Countries** – リクエストの総数に対するこの国からのリクエストの割合。
+ **U.S. States** - 米国からのリクエストの総数に対するこの州からのリクエストの割合。
50 以上の国からリクエストがあると、[**Request Count**] 列に指定した期間のすべてのリクエストを含めることができないため、このテーブルのデータに基づいて [**Request %**] を計算することはできません。

**バイト**  
指定したディストリビューションおよび期間に、CloudFront からこの国または州のビューワーに提供されたバイト数。この列のデータの表示を KB、MB、または GB に変更するには、列見出しのリンクを選択します。

# Amazon CloudWatch で CloudFront メトリクスをモニタリングする
<a name="monitoring-using-cloudwatch"></a>

Amazon CloudFront は Amazon CloudWatch と統合されており、ディストリビューションとエッジ関数の運用メトリクスを ([Lambda@Edge と CloudFront Functions](edge-functions.md) の両方で) 自動的に公開します。これらのメトリクスを使用して、問題のトラブルシューティング、追跡、デバッグを行うことができます。これらのメトリクスの多くは、CloudFront コンソールの一連のグラフに表示され、CloudFront API または CLI を使用してアクセスすることもできます。これらのメトリクスはすべて、[CloudWatch コンソール](https://console.aws.amazon.com/cloudwatch/home)で、または CloudWatch API または CLI を介して利用できます。CloudFront メトリクスは [CloudWatch のクォータ (以前は制限と呼ばれていました)](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_limits.html) にはカウントされません。また、追加料金も発生しません。

CloudFront ディストリビューションのデフォルトメトリクスに加えて、追加のメトリクスを追加料金で有効にすることができます。追加のメトリクスは CloudFront ディストリビューションに適用され、ディストリビューションごとに個別に有効にする必要があります。料金の詳細については、「[CloudFront の追加のメトリクスに関するコストを見積もる](viewing-cloudfront-metrics.md#monitoring-console.distributions-additional-pricing)」を参照してください。





CloudFront コンソール、CloudWatch コンソール、API、または CLI で、これらのメトリクスに基づくアラームを設定することもできます。例えば、`5xxErrorRate` メトリクスに基づくアラームを設定できます。このメトリクスは、レスポンスの HTTP ステータスコードが `500` から `599` の範囲内にあるすべてのビューワーリクエストの割合 (%) を示します。エラー率が一定時間内に特定の値 (連続した 5 分以内のリクエスト数の 5% など) に達すると、アラームがトリガーされます。アラームの作成時に、アラームの値と時間単位を指定します。

**注意事項**  
CloudFront コンソールで CloudWatch アラームを作成すると、アラームは米国東部 (バージニア北部) リージョン (`us-east-1`) に自動的に作成されます。CloudWatch コンソールでアラームを作成する場合は、同じリージョンを使用する必要があります。CloudFront はグローバルサービスであるため、サービスのメトリクスは米国東部 (バージニア北部) に送信されます。
アラームを作成すると、[標準の CloudWatch 料金](https://aws.amazon.com/cloudwatch/pricing/)が適用されます。

**Topics**
+ [CloudFront およびエッジ関数のメトリクスを表示する](viewing-cloudfront-metrics.md)
+ [メトリクスの アラームの作成](receiving-notifications.md)
+ [メトリクスデータを CSV 形式でダウンロードする](cloudwatch-csv.md)
+ [CloudFront のメトリクスのタイプ](programming-cloudwatch-metrics.md)

# CloudFront およびエッジ関数のメトリクスを表示する
<a name="viewing-cloudfront-metrics"></a>

CloudFront ディストリビューションと[エッジ関数](https://aws.amazon.com/cloudfront/features/#Edge_Computing)に関する運用メトリクスは CloudFront コンソールで表示できます。

**CloudFront およびエッジ関数のメトリクスを CloudFront で表示するには**

1. AWS マネジメントコンソールにサインインし、[https://console.aws.amazon.com/cloudfront/v4/home](https://console.aws.amazon.com/cloudfront/v4/home) で CloudFront コンソールを開きます。

1. ナビゲーションペインで、[**モニタリング**] を選択します。

1. 特定の CloudFront ディストリビューションまたはエッジ関数のアクティビティに関するグラフを表示するには、いずれかを選択してから、**[View distribution metrics]** (ディストリビューションのメトリクスの表示) または **[View metrics]** (メトリクスの表示) を選択します。

1. 次の手順を実行してグラフをカスタマイズできます。

   1. グラフに表示される情報の時間範囲を変更するには、1h (1 時間)、3h (3 時間)、または別の範囲、またはカスタムの範囲を指定します。

   1. CloudFront でグラフ内の情報を更新する頻度を変更するには、最新表示アイコンの横にある下矢印を選択してから、リフレッシュレートを選択します。デフォルトの更新間隔は 1 分ですが、他のオプションを選択することもできます。

1. CloudWatch コンソールで CloudFront グラフを表示するには、**[Add to dashboard]** (ダッシュボードに追加) を選択します。CloudWatch コンソールでグラフを表示するには、米国東部 (バージニア北部) リージョンを使用する必要があります。

**Topics**
+ [CloudFront ディストリビューションのデフォルトメトリクス](#monitoring-console.distributions)
+ [CloudFront ディストリビューションの追加のメトリクスを有効にする](#monitoring-console.distributions-additional)
+ [Lambda@Edge 関数のデフォルトメトリクス](#monitoring-console.lambda-at-edge)
+ [CloudFront Functions のデフォルトメトリクス](#monitoring-console.cloudfront-functions)

## CloudFront ディストリビューションのデフォルトメトリクス
<a name="monitoring-console.distributions"></a>

すべての CloudFront ディストリビューションについて、以下のデフォルトメトリクスが追加料金なしで表示されます。

**リクエスト**  
すべての HTTP メソッド、および HTTP リクエストと HTTPS リクエストの両方について CloudFront が受信したビューワーリクエストの総数。

**ダウンロードされたバイト数**  
`GET` リクエスト、`HEAD` リクエストに対してビューワーがダウンロードしたバイト総数。

**アップロードされたバイト数**  
ビューワーが `OPTIONS` リクエスト、`POST` リクエスト、`PUT` リクエストを使用して CloudFront にアップロードしたバイトの総数。

**4xx エラー率**  
レスポンスの HTTP ステータスコードが `4xx` であるすべてのビューワーリクエストの割合 (%)。

**5xx エラー率**  
レスポンスの HTTP ステータスコードが `5xx` であるすべてのビューワーリクエストの割合 (%)。

**合計エラー率**  
レスポンスの HTTP ステータスコードが `4xx` または `5xx` であるすべてのビューワーリクエストの割合 (%)。

これらのメトリクスは、CloudFront ディストリビューションごとにグラフとして、CloudFront コンソールの **[モニタリング]** ページに表示されます。各グラフでは、総数が 1 分単位で表示されます。グラフを表示するだけでなく、[メトリクスレポートを CSV ファイルとしてダウンロード](cloudwatch-csv.md)することもできます。

## CloudFront ディストリビューションの追加のメトリクスを有効にする
<a name="monitoring-console.distributions-additional"></a>

デフォルトメトリクスに加えて、追加のメトリクスを追加料金で有効にすることができます。料金の詳細については、「[CloudFront の追加のメトリクスに関するコストを見積もる](#monitoring-console.distributions-additional-pricing)」を参照してください。

以下の追加のメトリクスは、ディストリビューションごとに個別に有効にする必要があります。

**キャッシュヒットレート**  
CloudFront がそのキャッシュからコンテンツを送信した対象のすべてのキャッシュ可能なリクエストの割合 (%)。HTTP `POST`/`PUT` リクエストおよびエラーは、キャッシュ可能なリクエストとは見なされません。

**オリジンのレイテンシー**  
CloudFront キャッシュではなくオリジンから送信されたリクエストについて、CloudFront がリクエストを受信してからネットワーク (ビューワーではなく) にレスポンスを提供し始めるまでに費やした合計時間。これは、*最初のバイトのレイテンシー*または*最初のバイトまでの時間*と呼ばれます。

**ステータスコード別のエラー率**  
レスポンスの HTTP ステータスコードが `4xx` 範囲または `5xx` 範囲内の特定のコードであるすべてのビューワーリクエストの割合 (%)。このメトリクスは、`401`、`403`、`404`、`502`、`503`、および `504` のすべてのエラーコードで使用できます。

追加のメトリクスは、CloudFront コンソール、CloudFormation、AWS Command Line Interface (AWS CLI)、または CloudFront API で有効にすることができます。

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

**追加のメトリクスを有効にするには**

1. AWS マネジメントコンソールにサインインし、[https://console.aws.amazon.com/cloudfront/v4/home](https://console.aws.amazon.com/cloudfront/v4/home) で CloudFront コンソールを開きます。

1. ナビゲーションペインで、[**モニタリング**] を選択します。

1. 追加のメトリクスを有効にするディストリビューションを選択し、**[View distribution metrics]** (ディストリビューションメトリクスの表示) を選択します。

1. **[Manage additional metrics]** (追加のメトリクスの管理) を選択します。

1. **[Manage additional metrics]** (追加のメトリクスの管理) ウィンドウで、**[Enabled]** (有効) をオンにします。追加のメトリクスを有効にしたら、**[Manage additional metrics]** (追加のメトリクスの管理) ウィンドウを閉じることができます。

   有効にした追加のメトリクスがグラフに表示されます。各グラフでは、総数が 1 分単位で表示されます。グラフを表示するだけでなく、[メトリクスレポートを CSV ファイルとしてダウンロード](cloudwatch-csv.md)することもできます。

------
#### [ CloudFormation ]

CloudFormation で追加のメトリクスを有効にするには、`AWS::CloudFront::MonitoringSubscription` リソースタイプを使用します。次の例は、追加のメトリクスを有効にするための CloudFormation テンプレート構文を YAML 形式で示しています。

```
Type: AWS::CloudFront::MonitoringSubscription
Properties: 
  DistributionId: EDFDVBD6EXAMPLE
  MonitoringSubscription:
    RealtimeMetricsSubscriptionConfig:
      RealtimeMetricsSubscriptionStatus: Enabled
```

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

AWS Command Line Interface (AWS CLI) を使用して追加のメトリクスを管理するには、次のいずれかのコマンドを使用します。

**ディストリビューションの追加のメトリクスを有効にするには**
+ 以下の例のように、**create-monitoring-subscription** コマンドを使用します。*EDFDVBD6EXAMPLE* を、追加のメトリクスを有効にするディストリビューションの ID に置き換えます。

  ```
  aws cloudfront create-monitoring-subscription --distribution-id EDFDVBD6EXAMPLE --monitoring-subscription RealtimeMetricsSubscriptionConfig={RealtimeMetricsSubscriptionStatus=Enabled}
  ```

**ディストリビューションの追加のメトリクスが有効になっているかどうかを確認するには**
+ 以下の例のように、**get-monitoring-subscription** コマンドを使用します。*EDFDVBD6EXAMPLE* を、チェックするディストリビューションの ID に置き換えます。

  ```
  aws cloudfront get-monitoring-subscription --distribution-id EDFDVBD6EXAMPLE
  ```

**ディストリビューションの追加のメトリクスを無効にするには**
+ 以下の例のように、**delete-monitoring-subscription** コマンドを使用します。*EDFDVBD6EXAMPLE* を、追加のメトリクスを無効にするディストリビューションの ID に置き換えます。

  ```
  aws cloudfront delete-monitoring-subscription --distribution-id EDFDVBD6EXAMPLE
  ```

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

CloudFront API を使用して追加メトリクスを管理するには、次の API オペレーションのいずれかを使用します。
+ ディストリビューションの追加メトリクスを有効にするには、[CreateMonitoringSubscription](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_CreateMonitoringSubscription.html) を使用します。
+ ディストリビューションの追加メトリクスが有効になっているかどうかを確認するには、[GetMonitoringSubscription](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_GetMonitoringSubscription.html) を使用します。
+ ディストリビューションの追加メトリクスを無効にするには、[DeleteMonitoringSubscription](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_DeleteMonitoringSubscription.html) を使用します。

これらの API オペレーションの詳細については、AWS SDK または他の API クライアントの API リファレンスドキュメントを参照してください。

------

### CloudFront の追加のメトリクスに関するコストを見積もる
<a name="monitoring-console.distributions-additional-pricing"></a>

ディストリビューションの追加のメトリクスを有効にすると、CloudFront は最大 8 つのメトリクスを米国東部 (バージニア北部) リージョンで CloudWatch に送信します。CloudWatch では、メトリクスごとに低い固定料金が請求されます。この料金は、メトリクスごとに毎月 1 回のみ請求されます (ディストリビューションごとに最大 8 つのメトリクス)。これは固定レートであるため、CloudFront ディストリビューションが受信または送信するリクエストまたはレスポンスの数に関係なく、コストは同じままです。メトリクスごとの料金については、[Amazon CloudWatch 料金ページ](https://aws.amazon.com/cloudwatch/pricing/)と [CloudWatch 料金計算ツール](https://aws.amazon.com/cloudwatch/pricing/#Pricing_calculator)を参照してください。CloudWatch API を使用してメトリクスを取得すると、追加の API 料金が適用されます。

## Lambda@Edge 関数のデフォルトメトリクス
<a name="monitoring-console.lambda-at-edge"></a>

CloudWatch メトリクスを使用して、Lambda@Edge 関数の問題をリアルタイムでモニタリングできます。これらのメトリクスに対する追加料金はありません。

Lambda@Edge 関数を CloudFront ディストリビューションのキャッシュ動作にアタッチすると、Lambda はメトリクスを CloudWatch に自動的に送信し始めます メトリクスはすべての Lambda リージョンで利用可能ですが、CloudWatch コンソールでメトリクスを表示したり、CloudWatch API からメトリクスデータを取得したりするには、米国東部 (バージニア北部) リージョン (`us-east-1`) を使用する必要があります。メトリクスグループ名は `AWS/CloudFront/distribution-ID` の形式になります。ここで、*distribution-ID* は Lambda@Edge 関数が関連付けられている CloudFront ディストリビューションの ID です。Amazon CloudWatch メトリクスの詳細については、「[Amazon CloudWatch ユーザーガイド](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/)」を参照してください。

以下のデフォルトメトリクスは、Lambda@Edge 関数ごとにグラフとして、CloudFront コンソールの **[モニタリング]** ページに表示されます。
+ Lambda@Edge の `5xx` エラー率
+ Lambda 実行エラー
+ Lambda 無効レスポンス
+ Lambda スロットリング

グラフには、呼び出し数、エラー数、スロットル数などが表示されます。各グラフでは、合計が 1 分単位で AWS リージョンごとにグループ化されて表示されます。

調査したいエラーが急増した場合は、問題が発生している関数と AWS リージョンを特定するまで、各関数を選択して AWS リージョン別にログファイルを表示できます。Lambda@Edge エラーのトラブルシューティングの詳細については、以下を参照してください。
+ [障害のタイプを判断する方法](lambda-edge-testing-debugging.md#lambda-edge-testing-debugging-failure-type)
+ [ でコンテンツ配信をデバッグする 4 つのステップAWS](https://aws.amazon.com/blogs/networking-and-content-delivery/four-steps-for-debugging-your-content-delivery-on-aws/)

## CloudFront Functions のデフォルトメトリクス
<a name="monitoring-console.cloudfront-functions"></a>

CloudFront Functions は Amazon CloudWatch に運用メトリクスを送信し、関数をモニタリングできるようにします。これらのメトリクスを表示すると、問題のトラブルシューティング、追跡、およびデバッグに役立ちます。CloudFront Functions は、CloudWatch に次のメトリクスを公開します。
+ **呼び出し** (`FunctionInvocations`) - 指定された期間に関数が起動 (呼び出し) された回数。
+ **検証エラー** (`FunctionValidationErrors`) - 指定した期間内に関数によって生成された検証エラーの数。検証エラーは、関数は正常に実行されたが、無効なデータ (無効な[イベントオブジェクト](functions-event-structure.md)) を返した場合に発生します。
+ **実行エラー** (`FunctionExecutionErrors`) - 特定の期間に発生した実行エラーの数。実行エラーは、関数が正常に完了しなかった場合に発生します。
+ **コンピューティング使用率** (`FunctionComputeUtilization`) - 関数の実行にかかった時間 (最大許容時間に対するパーセンテージ)。たとえば、値 35 は、関数が最大許容時間の 35% で完了したことを意味します。このメトリクスは、0から100までの数値です。

  この値が 100 に達するか、100 に近い場合、関数は許容実行時間を使い切ったか、それに近い状態であるため、以降のリクエストはスロットリングされる可能性があります。関数の使用率が 80% 以上になっている場合は、関数を見直して実行時間を短縮し、使用率を向上させることをお勧めします。例えば、エラーのみを記録したり、複雑な正規表現を単純化したり、複雑な JSON オブジェクトの不要な解析を除外したりできます。
+ **スロットリング** (`FunctionThrottles`) - 指定された期間に関数がスロットリングされた回数。関数は、次の理由でスロットリングできます。
  + この関数は、実行に許容される最大時間を継続的に超えている
  + この関数によってコンパイルエラーが発生する
  + 1 秒あたりのリクエスト数が異常に多い

CloudFront KeyValueStore は、以下のオペレーションメトリクスも Amazon CloudWatch に送信します。
+ **読み取りリクエスト** (`KvsReadRequests`) - 一定期間に関数がキー値ストアから正常に読み取った回数。
+ **読み取りエラー** (`KvsReadErrors`) - 一定期間に関数がキー値ストアからの読み取りに失敗した回数。

これらのメトリクスはすべて、米国東部 (バージニア北部) リージョン (`us-east-1`) の CloudWatch に CloudFront 名前空間で発行されます。CloudWatch コンソールでこれらのメトリクスを表示することもできます。CloudWatch コンソールでは、関数ごと、またはディストリビューションごとの関数ごとのメトリクスを表示できます。

CloudWatch を使用して、これらのメトリクスに基づいたアラームを設定することもできます。例えば、実行時間 (`FunctionComputeUtilization`) メトリクスに基づいてアラームを設定できます。このメトリクスは、関数の実行にかかった許容時間の割合を表します。実行時間が特定期間の特定の値に達したとき。例えば、連続 15 分間のうち、選択した利用可能時間が 70% を超えると、アラームがトリガーされます。アラームの作成時に、アラームの値と時間単位を指定します。

**注記**  
CloudFront Functions は、本番リクエストとレスポンスに応答して実行されるステージ `LIVE` の関数のみ、メトリクスを CloudWatch に送信します。[関数をテスト](test-function.md)するとき、CloudFront は CloudWatch にメトリクスを送信しません。テスト出力には、エラー、コンピューティング使用率、関数ログ (`console.log()` ステートメント) に関する情報が表示されますが、この情報は CloudWatch に送信されません。

CloudWatch API でメトリクスを取得する方法についての詳細は、「[CloudFront のメトリクスのタイプ](programming-cloudwatch-metrics.md)」を参照してください。

# メトリクスの アラームの作成
<a name="receiving-notifications"></a>

CloudFront コンソールで、CloudFront の特定のメトリクスに基づいて Amazon Simple Notification Service (Amazon SNS) から通知を受け取るようにアラームを設定できます。

**メトリクスのアラームを作成するには**

1. AWS マネジメントコンソールにサインインし、[https://console.aws.amazon.com/cloudfront/v4/home](https://console.aws.amazon.com/cloudfront/v4/home) で CloudFront コンソールを開きます。

1. ナビゲーションペインで、**[Alarms]** (アラーム) を選択します。

1. [**アラームの作成**] を選択します。

1. **[詳細]** で、以下を指定します。

   1. **アラーム名** — アラームの名前。

   1. **ディストリビューション** — アラームを作成する対象の CloudFront ディストリビューション。

1. **[条件]** で、以下を指定します。

   1. **メトリクス** — アラームを作成する対象のメトリクス。

   1. **"IF" <条件>** – CloudWatch でアラームをトリガーして Amazon SNS トピックに通知を送信するタイミングを示すしきい値。たとえば、`5xx` エラー率が 1% を超えた場合に通知を受け取るには、次のように指定します。

      **5xx エラー率** **> 1**

   1. **"FOR" 連続した期間** — アラームをトリガーする前に条件を満たす必要がある期間。値を選択する場合、一時的な問題に対してはアラームをトリガーしない値と、持続的な問題や実際の問題に対してはアラームをトリガーする値との間で適切なバランスを取ります。

   1. (オプション) **通知** – このメトリクスがアラームをトリガーした場合に通知を送信する先の Amazon SNS トピック。

1. [**アラームの作成**] を選択します。

**注意事項**  
条件の値を入力するときは、句読点なしで整数を使用します。たとえば、1,000 を指定する場合は、「**1000**」と入力します。
`4xx`、`5xx`、および合計エラー率の場合、指定する値は割合 (%) です。
リクエスト、ダウンロードされたバイト数、アップロードされたバイト数の場合、指定する値は単位です。例えば、1073742000 バイトと指定します。

Amazon SNS トピックの作成の詳細については、「Amazon Simple Notification Service 開発者ガイド」の「[Amazon SNS トピックの作成](https://docs.aws.amazon.com/sns/latest/dg/sns-create-topic.html)」を参照してください。**

# メトリクスデータを CSV 形式でダウンロードする
<a name="cloudwatch-csv"></a>

CloudFront ディストリビューションの CloudWatch メトリクスデータを CSV 形式でダウンロードできます。

**メトリクスデータを CSV 形式でダウンロードするには**

1. AWS マネジメントコンソールにサインインし、[https://console.aws.amazon.com/cloudfront/v4/home](https://console.aws.amazon.com/cloudfront/v4/home) で CloudFront コンソールを開きます。

1. ナビゲーションペインで、[**モニタリング**] を選択します。

1. ディストリビューションを選択し、**[ディストリビューションメトリクスを表示]** を選択します。

1. **[CSV をダウンロード]** を選択し、期間を選択します (**過去 1 日 (1 時間)** など)。

1. ファイルをダウンロードしたら、開いて以下の情報を確認します。

**Topics**
+ [レポートに関する情報](#cloudwatch-csv-header)
+ [メトリクスレポートのデータ](#cloudwatch-csv-data)

## レポートに関する情報
<a name="cloudwatch-csv-header"></a>

レポートの先頭数行には次の情報が含まれます。

**バージョン**  
CloudFront レポート機能のバージョン。

**レポート**  
レポートの名前。

**DistributionID**  
レポートを実行した対象のディストリビューションの ID。

**StartDateUTC**  
協定世界時 (UTC) によるレポートを実行した日付範囲の開始日。

**EndDateUTC**  
協定世界時 (UTC) によるレポートを実行した日付範囲の終了日。

**GeneratedTimeUTC**  
協定世界時 (UTC) によるレポートを実行した日時。

**詳細度**  
レポートの行ごとの期間 (`ONE_MINUTE` など)。

## メトリクスレポートのデータ
<a name="cloudwatch-csv-data"></a>

レポートには次の値が含まれています。

**DistributionID**  
レポートを実行した対象のディストリビューションの ID。

**FriendlyName**  
ディストリビューションの代替ドメイン名 (CNAME)、(存在する場合)。ディストリビューションに代替ドメイン名がない場合、リストにはディストリビューションのオリジンドメイン名が含まれます。

**TimeBucket**  
協定世界時 (UTC) によるデータに該当する時間または日付。

**リクエスト**  
該当期間中のすべての HTTP ステータスコード (`200`、`404` など) およびすべてのメソッド (`GET`、`HEAD`、`POST` など) に対するリクエストの総数。

**BytesDownloaded**  
期間中に指定したディストリビューションについてビューワーがダウンロードしたバイト数。

**BytesUploaded**  
指定したディストリビューションについて、該当期間中にビューワーがダウンロードしたバイト数。

**TotalErrorRatePct**  
指定したディストリビューションについて、該当期間中に HTTP ステータスコードが `4xx` または `5xx` エラーであったリクエストの割合 (%)。

**4xxErrorRatePct**  
指定したディストリビューションについて、該当期間中に HTTP ステータスコードが `4xx` エラーであったリクエストの割合 (%)。

**5xxErrorRatePct**  
指定したディストリビューションについて、該当期間中に HTTP ステータスコードが `5xx` エラーであったリクエストの割合 (%)。

ディストリビューションの[追加のメトリクスを有効化](viewing-cloudfront-metrics.md#monitoring-console.distributions-additional)している場合、レポートには以下の追加の値も表示されます。

**401ErrorRatePct**  
指定したディストリビューションについて、該当期間中に HTTP ステータスコードが `401` エラーであったリクエストの割合 (%)。

**403ErrorRatePct**  
指定したディストリビューションについて、該当期間中に HTTP ステータスコードが `403` エラーであったリクエストの割合 (%)。

**404ErrorRatePct**  
指定したディストリビューションについて、該当期間中に HTTP ステータスコードが `404` エラーであったリクエストの割合 (%)。

**502ErrorRatePct**  
指定したディストリビューションについて、該当期間中に HTTP ステータスコードが `502` エラーであったリクエストの割合 (%)。

**503ErrorRatePct**  
指定したディストリビューションについて、該当期間中に HTTP ステータスコードが `503` エラーであったリクエストの割合 (%)。

**504ErrorRatePct**  
指定したディストリビューションについて、該当期間中に HTTP ステータスコードが `504` エラーであったリクエストの割合 (%)。

**OriginLatency**  
CloudFront キャッシュではなくオリジンから送信されたリクエストについて、CloudFront がリクエストを受信してからネットワーク (ビューワーではなく) にレスポンスを提供し始めるまでに費やした合計時間 (ミリ秒単位)。これは、*最初のバイトのレイテンシー*または*最初のバイトまでの時間*と呼ばれます。

**CacheHitRate**  
CloudFront がそのキャッシュからコンテンツを送信した対象のすべてのキャッシュ可能なリクエストの割合 (%)。HTTP `POST`/`PUT` リクエストおよびエラーは、キャッシュ可能なリクエストとは見なされません。

# CloudFront のメトリクスのタイプ
<a name="programming-cloudwatch-metrics"></a>

Amazon CloudWatch API または AWS Command Line Interface (AWS CLI) を使用して、構築したプログラムやアプリケーションで CloudFront メトリクスを取得できます。raw データを使用して、独自のカスタムダッシュボードや独自のアラームツールなどを構築できます。

詳細については、「AWS CLI コマンドリファレンス」の [get-metric-data](https://docs.aws.amazon.com/cli/latest/reference/cloudwatch/get-metric-data.html) または「Amazon CloudWatch API リファレンス」の [GetMetricData](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_GetMetricData.html) API オペレーションを参照してください。****

**Topics**
+ [すべての CloudFront メトリクスの値](#cloudfront-metrics-global-values)
+ [CloudFront ディストリビューションメトリクスの値](#cloudfront-metrics-distribution-values)
+ [CloudFront 関数メトリクスの値](#cloudfront-metrics-function-values)

**注記**  
CloudWatch API から CloudFront メトリクスを取得するには、米国東部 (バージニア北部) リージョン (`us-east-1`) を使用する必要があります。また、各メトリクスの特定の値とタイプも知っておく必要があります。

## すべての CloudFront メトリクスの値
<a name="cloudfront-metrics-global-values"></a>

以下の値は、すべての CloudFront メトリクスに適用されます。

**`Namespace`**  
`Namespace` の値は常に `AWS/CloudFront` です。

**ディメンション**  
CloudFront の各メトリクスには、以下のディメンションがあります。    
**`DistributionId`**  
メトリクスを取得する対象の CloudFront ディストリビューションの ID。  
**`FunctionName`**  
メトリクスを取得する対象の (CloudFront Functions の) 関数の名前。  
このディメンジョンは、関数にのみ適用されます。  
**`Region`**  
`Region` の値は常に `Global` です。CloudFront はグローバルサービスであるためです。

## CloudFront ディストリビューションメトリクスの値
<a name="cloudfront-metrics-distribution-values"></a>

次のリストの情報を使用して、CloudWatch API から特定の CloudFront ディストリビューションメトリクスに関する詳細を取得します。これらのメトリクスの一部は、ディストリビューションで追加のメトリクスを有効にしている場合にのみ使用できます。

**注記**  
各メトリクスには 1 つの統計 (`Average` または `Sum`) のみを適用できます。次のリストは、各メトリクスに適用できる統計を示しています。

**4xx エラー率**  
レスポンスの HTTP ステータスコードが `4xx` であるすべてのビューワーリクエストの割合 (%)。  
+ メトリクス名: `4xxErrorRate`
+ 有効な統計: `Average`
+ 単位: `Percent`

**401 エラー率**  
レスポンスの HTTP ステータスコードが `401` であるすべてのビューワーリクエストの割合 (%)。このメトリクスを取得するには、まず[追加のメトリクスを有効にする](viewing-cloudfront-metrics.md#monitoring-console.distributions-additional)必要があります。  
+ メトリクス名: `401ErrorRate`
+ 有効な統計: `Average`
+ 単位: `Percent`

**403 エラー率**  
レスポンスの HTTP ステータスコードが `403` であるすべてのビューワーリクエストの割合 (%)。このメトリクスを取得するには、まず[追加のメトリクスを有効にする](viewing-cloudfront-metrics.md#monitoring-console.distributions-additional)必要があります。  
+ メトリクス名: `403ErrorRate`
+ 有効な統計: `Average`
+ 単位: `Percent`

**404 エラー率**  
レスポンスの HTTP ステータスコードが `404` であるすべてのビューワーリクエストの割合 (%)。このメトリクスを取得するには、まず[追加のメトリクスを有効にする](viewing-cloudfront-metrics.md#monitoring-console.distributions-additional)必要があります。  
+ メトリクス名: `404ErrorRate`
+ 有効な統計: `Average`
+ 単位: `Percent`

**5xx エラー率**  
レスポンスの HTTP ステータスコードが `5xx` であるすべてのビューワーリクエストの割合 (%)。  
+ メトリクス名: `5xxErrorRate`
+ 有効な統計: `Average`
+ 単位: `Percent`

**502 エラー率**  
レスポンスの HTTP ステータスコードが `502` であるすべてのビューワーリクエストの割合 (%)。このメトリクスを取得するには、まず[追加のメトリクスを有効にする](viewing-cloudfront-metrics.md#monitoring-console.distributions-additional)必要があります。  
+ メトリクス名: `502ErrorRate`
+ 有効な統計: `Average`
+ 単位: `Percent`

**503 エラー率**  
レスポンスの HTTP ステータスコードが `503` であるすべてのビューワーリクエストの割合 (%)。このメトリクスを取得するには、まず[追加のメトリクスを有効にする](viewing-cloudfront-metrics.md#monitoring-console.distributions-additional)必要があります。  
+ メトリクス名: `503ErrorRate`
+ 有効な統計: `Average`
+ 単位: `Percent`

**504 エラー率**  
レスポンスの HTTP ステータスコードが `504` であるすべてのビューワーリクエストの割合 (%)。このメトリクスを取得するには、まず[追加のメトリクスを有効にする](viewing-cloudfront-metrics.md#monitoring-console.distributions-additional)必要があります。  
+ メトリクス名: `504ErrorRate`
+ 有効な統計: `Average`
+ 単位: `Percent`

**ダウンロードされたバイト数**  
`GET` リクエスト、`HEAD` リクエストに対してビューワーがダウンロードしたバイト総数。  
+ メトリクス名: `BytesDownloaded`
+ 有効な統計: `Sum`
+ 単位: `None`

**アップロードされたバイト数**  
ビューワーが `OPTIONS` リクエスト、`POST` リクエスト、`PUT` リクエストを使用して CloudFront にアップロードしたバイトの総数。  
+ メトリクス名: `BytesUploaded`
+ 有効な統計: `Sum`
+ 単位: `None`

**キャッシュヒットレート**  
CloudFront がそのキャッシュからコンテンツを送信した対象のすべてのキャッシュ可能なリクエストの割合 (%)。HTTP `POST`/`PUT` リクエストおよびエラーは、キャッシュ可能なリクエストとは見なされません。このメトリクスを取得するには、まず[追加のメトリクスを有効にする](viewing-cloudfront-metrics.md#monitoring-console.distributions-additional)必要があります。  
+ メトリクス名: `CacheHitRate`
+ 有効な統計: `Average`
+ 単位: `Percent`

**オリジンのレイテンシー**  
CloudFront キャッシュではなくオリジンから送信されたリクエストについて、CloudFront がリクエストを受信してからネットワーク (ビューワーではなく) にレスポンスを提供し始めるまでに費やした合計時間 (ミリ秒単位)。これは、*最初のバイトのレイテンシー*または*最初のバイトまでの時間*と呼ばれます。このメトリクスを取得するには、まず[追加のメトリクスを有効にする](viewing-cloudfront-metrics.md#monitoring-console.distributions-additional)必要があります。  
+ メトリクス名: `OriginLatency`
+ 有効な統計: `Percentile`
+ 単位: `Milliseconds`
CloudWatch API から `Percentile` 統計情報を取得するには、`ExtendedStatistics` ではなく `Statistics` パラメータを使用します。詳細については、*Amazon CloudWatch API リファレンス*の「[GetMetricStatistics](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_GetMetricStatistics.html)」、または [AWS SDK](https://docs.aws.amazon.com/#sdks) のリファレンスドキュメントを参照してください。

**リクエスト**  
すべての HTTP メソッド、および HTTP リクエストと HTTPS リクエストの両方について CloudFront が受信したビューワーリクエストの総数。  
+ メトリクス名: `Requests`
+ 有効な統計: `Sum`
+ 単位: `None`

**合計エラー率**  
レスポンスの HTTP ステータスコードが `4xx` または `5xx` であるすべてのビューワーリクエストの割合 (%)。  
+ メトリクス名: `TotalErrorRate`
+ 有効な統計: `Average`
+ 単位: `Percent`

## CloudFront 関数メトリクスの値
<a name="cloudfront-metrics-function-values"></a>

次のリストの情報を使用して、CloudWatch API から特定の CloudFront 関数メトリクスに関する詳細を取得します。

**注記**  
各メトリクスには 1 つの統計 (`Average` または `Sum`) のみを適用できます。次のリストは、各メトリクスに適用できる統計を示しています。

**呼び出し**  
指定された期間に関数が起動 (呼び出し) された回数。  
+ メトリクス名: `FunctionInvocations`
+ 有効な統計: `Sum`
+ 単位: `None`

**検証エラー**  
指定された期間に関数によって生成された検証エラーの数。検証エラーは、関数は正常に実行されたが、無効なデータ (無効なイベントオブジェクト) を返した場合に発生します。  
+ メトリクス名: `FunctionValidationErrors`
+ 有効な統計: `Sum`
+ 単位: `None`

**実行エラー**  
特定の期間に発生した実行エラーの数。実行エラーは、関数が正常に完了しなかった場合に発生します。  
+ メトリクス名: `FunctionExecutionErrors`
+ 有効な統計: `Sum`
+ 単位: `None`

**コンピューティング使用率**  
関数の実行にかかった時間の長さ (0-100) を、最大許容時間に対するパーセンテージで示します。たとえば、値 35 は、関数が最大許容時間の 35% で完了したことを意味します。  
+ メトリクス名: `FunctionComputeUtilization`
+ 有効な統計: `Average`
+ 単位: `Percent`

**スロットリング**  
指定された期間に関数がスロットリングされた回数。  
+ メトリクス名: `FunctionThrottles`
+ 有効な統計: `Sum`
+ 単位: `None`

# CloudFront とエッジ関数のログ記録
<a name="logging"></a>

Amazon CloudFront では、さまざまな種類のログ記録が提供されます。CloudFront ディストリビューションに送信されるビューワーリクエスト、または AWS アカウントの CloudFront サービスアクティビティ (API アクティビティ) をログに記録することができます。CloudFront Functions および Lambda@Edge 関数からログを取得することもできます。

## リクエストのログ記録
<a name="logging-requests"></a>

CloudFront には、ディストリビューションに送信されるリクエストをログに記録するために、次の方法が用意されています。

**アクセスログ (標準ログ)**  
CloudFront アクセスログは、ディストリビューションに対して行われたすべてのリクエストに関する詳細なレコードを提供します。ログは、セキュリティ監査やアクセス監査などのシナリオで使用できます。  
CloudFront アクセスログは、指定した配信先に配信されます。  
次が必要な場合、アクセスログを使用します。  
+ 履歴分析とレポート
+ セキュリティ監査とコンプライアンス要件
+ 費用対効果の高い長期ログ保持
詳細については、「[アクセスログ (標準ログ)](AccessLogs.md)」を参照してください。

**リアルタイムのアクセスログ**  
CloudFront リアルタイムアクセスログはリクエストを受信してから数秒以内に配信され、ディストリビューションに対して行われたリクエストに関する情報をリアルタイムで提供します。リアルタイムのアクセスログの*サンプリングレート*、つまり、リアルタイムのアクセスログ記録を受信するリクエストの割合を選択できます。ログ記録で受信が行われる特定のフィールドを選択することもできます。リアルタイムのアクセスログは、コンテンツ配信パフォーマンスのライブモニタリングに適しています。  
CloudFront リアルタイムアクセスログは、Amazon Kinesis Data Streams で選択したデータストリームに配信されます。Kinesis Data Streams の使用料金に加えて、CloudFront でのリアルタイムアクセスログの料金が発生します。  
次が必要な場合、リアルタイムのアクセスログを使用します。  
+ リアルタイムのモニタリングとアラート
+ ライブダッシュボードと運用上のインサイト
詳細については、「[リアルタイムのアクセスログを使用する](real-time-logs.md)」を参照してください。

**接続ログ**  
接続ログは、mTLS が有効なディストリビューションのサーバーとクライアント間の接続に関する詳細情報を提供します。接続ログは、クライアント証明書情報、mTLS 認証の失敗の理由、接続が許可または拒否されたかどうかを可視化します。  
アクセスログ (標準ログ) と同様に、接続ログは指定した配信先に配信されます。  
 接続ログを有効にするには、まずディストリビューションの [mTLS を有効にする](mtls-authentication.md)必要があります。
次が必要な場合、接続ログを使用します。  
+ TLS ハンドシェイク中に接続が成功または失敗した理由 
+ クライアント証明書情報の可視性
詳細については、「[接続ログを使用したオブザーバビリティ](connection-logs.md)」を参照してください。

## エッジ関数をログ記録する
<a name="logging-edge-functions"></a>

Amazon CloudWatch Logs を使用して、Lambda@Edge 関数と CloudFront Functions の両方のエッジ関数のログを取得できます。ログには、CloudWatch コンソールまたは CloudWatch Logs API を使用してアクセスできます。詳しくは、「[エッジ関数のログ](edge-functions-logs.md)」を参照してください。

## サービスアクティビティのログ記録
<a name="logging-service-activity"></a>

AWS CloudTrail を使用して、AWS アカウントの CloudFront サービスアクティビティ (API アクティビティ) をログに記録できます。CloudTrail は、CloudFront のユーザー、ロール、または AWS のサービスによって実行された API アクションの記録を提供します。CloudTrail で収集された情報を使用して、CloudFront に対する API リクエスト、リクエスト元の IP アドレス、リクエスト者、リクエスト日時などの詳細を確認できます。

詳細については、「[AWS CloudTrail を使用した Amazon CloudFront API コールのログ記録](logging_using_cloudtrail.md)」を参照してください。

ログ記録の詳細については、以下のトピックを参照してください。

**Topics**
+ [リクエストのログ記録](#logging-requests)
+ [エッジ関数をログ記録する](#logging-edge-functions)
+ [サービスアクティビティのログ記録](#logging-service-activity)
+ [アクセスログ (標準ログ)](AccessLogs.md)
+ [リアルタイムのアクセスログを使用する](real-time-logs.md)
+ [エッジ関数のログ](edge-functions-logs.md)
+ [AWS CloudTrail を使用した Amazon CloudFront API コールのログ記録](logging_using_cloudtrail.md)

# アクセスログ (標準ログ)
<a name="AccessLogs"></a>

CloudFront で受信するすべてのユーザー (ビューワー) リクエストに関する詳細情報を含むログファイルを作成するように CloudFront を設定できます。これらは、*アクセスログ*と呼ばれます。また、*標準ログ*とも呼ばれています。

各ログには、リクエストの受信時刻、処理時間、リクエストパス、サーバーレスポンスなどの情報が含まれます。これらのアクセスログを使用して、応答時間の分析や問題のトラブルシューティングを行うことができます。

次の図は、オブジェクトのリクエストに関する情報が CloudFront によってログ記録されるしくみを示しています。この例では、Amazon S3 バケットにアクセスログを送信するようにディストリビューションを設定しています。

![\[アクセスログの基本フロー\]](http://docs.aws.amazon.com/ja_jp/AmazonCloudFront/latest/DeveloperGuide/images/Logging.png)


1. この例には、2 つのウェブサイト (A、B) と 2 つの対応する CloudFront ディストリビューションがあります。ユーザーは、ディストリビューションに関連付けられている URL を使用してオブジェクトをリクエストします。

1. CloudFront は、各リクエストを適切なエッジロケーションにルーティングします。

1. CloudFront は、各リクエストに関するデータを、そのディストリビューション専用のログファイルに書き込みます。この例では、ディストリビューション A に関連するリクエストの情報はディストリビューション A のログファイルに書き込まれます。ディストリビューション B に関連するリクエストの情報はディストリビューション B のログファイルに書き込まれます。

1. ログ記録を有効にした際に指定した Amazon S3 バケットに、ディストリビューションのログファイルが CloudFront によって定期的に保存されます。後続のリクエストに関する情報は、CloudFront によってディストリビューションの新しいログファイルに保存されます。

   ビューワーが、特定の時間内にコンテンツにアクセスしなかった場合、その時間内のログファイルは受信しません。

**注記**  
ログは、すべてのリクエストを完全に課金するためのものではなく、コンテンツに対するリクエストの本質を把握するものとして使用することをお勧めします。CloudFront はベストエフォートベースでアクセスログを提供します。特定のリクエストのログエントリが、リクエストが実際に処理されてからかなり後に配信されることも、(まれに) 一切配信されないこともあります。ログエントリをアクセスログから省略すると、アクセスログ内のエントリ数は AWS の請求と使用状況レポートに表示される使用量と一致しなくなります。

CloudFront は、2 つのバージョンの標準ログ記録をサポートしています。標準ログ記録 (レガシー) は、Amazon S3 *のみ*へのアクセスログの送信をサポートしています。標準ログ記録 (v2) は、その他の配信先もサポートしています。ディストリビューションには、両方またはいずれかのログ記録オプションを設定できます。詳細については、以下の各トピックを参照してください。

**Topics**
+ [標準ログ記録 (v2) を設定する](standard-logging.md)
+ [標準ログ記録 (レガシー) を設定する](standard-logging-legacy-s3.md)
+ [標準ログ記録リファレンス](standard-logs-reference.md)

**ヒント**  
CloudFront は、リアルタイムのアクセスログも提供します。これにより、ディストリビューションに対して行われたリクエストに関する情報がリアルタイムで提供されます (ログはリクエストを受信してから数秒以内に配信されます)。リアルタイムのアクセスログを使用して、コンテンツ配信のパフォーマンスに基づいて監視、分析、アクションを実行できます。詳細については、「[リアルタイムのアクセスログを使用する](real-time-logs.md)」を参照してください。

# 標準ログ記録 (v2) を設定する
<a name="standard-logging"></a>

ディストリビューションを作成または更新するとき、アクセスログ (標準ログ) を有効にできます。標準ログ記録 (v2) には、以下の機能が含まれています。
+ アクセスログを Amazon CloudWatch Logs、Amazon Data Firehose、Amazon Simple Storage Service (Amazon S3) に送信します。
+ 必要なログフィールドを選択します。[リアルタイムのアクセスログフィールドのサブセット](#standard-logging-real-time-log-selection)を選択することもできます。
+ 追加の[出力ログファイル](#supported-log-file-format)形式を選択します。

Amazon S3 を使用している場合は、以下のオプション機能を利用できます。
+ ログをオプトイン AWS リージョン に送信します。
+ パーティショニングを使用してログを整理します。
+ Hive 互換ファイル名を有効にします。

詳細については、「[Amazon S3 にログを送信する](#send-logs-s3)」を参照してください。

標準ログ記録の使用を開始するには、次の手順を実行します。

1. ログの受信先として指定する AWS のサービスに必要なアクセス許可を設定します。

1. CloudFront コンソールまたは CloudWatch API を使用して標準ログ記録を設定します。

1. アクセスログを表示します。

**注記**  
標準ログ記録 (v2) を有効にしても、標準ログ記録 (レガシー) には影響や変更はありません。標準ログ記録 (v2) を使用しながら、標準ログ記録 (レガシー) も引き続きディストリビューションで使用できます。詳細については、「[標準ログ記録 (レガシー) を設定する](standard-logging-legacy-s3.md)」を参照してください。
標準ログ記録 (レガシー) を既に有効にしていて、Amazon S3 への標準ログ記録 (v2) を有効にする場合は、*別の* Amazon S3 バケットを指定するか、同じバケット内の*別のパス*を使用する (例: ログプレフィックスやパーティショニングを使用する) ことをお勧めします。これにより、どのログファイルがどのディストリビューションに関連付けられているかを追跡し、ログファイルが互いに上書きされるのを防ぐことができます。

## アクセス許可
<a name="permissions-standard-logging"></a>

CloudFront は CloudWatch 提供のログを使用してアクセスログを配信します。そのためには、ログ記録を配信できるように、指定した AWS のサービスへのアクセス許可が必要です。

各ログ記録先への必要なアクセス許可を確認するには、「*Amazon CloudWatch Logs User Guide*」の以下のトピックから選択します。
+ [CloudWatch Logs](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AWS-logs-and-resource-policy.html#AWS-logs-infrastructure-V2-CloudWatchLogs)
+ [Firehose](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AWS-logs-and-resource-policy.html#AWS-logs-infrastructure-V2-Firehose) – 
+ [Amazon S3](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AWS-logs-and-resource-policy.html#AWS-logs-infrastructure-V2-S3)

ログ記録先へのアクセス許可を設定したら、ディストリビューションの標準ログ記録を有効にできます。

**注記**  
CloudFront は、複数の異なる AWS アカウント (クロスアカウント) へのアクセスログの送信をサポートしています。クロスアカウント配信を有効にするには、両方のアカウント (自分のアカウントと受信アカウント) に該当するアクセス許可が必要です。詳細については、「[クロスアカウント配信の標準ログ記録を有効にする](#enable-standard-logging-cross-accounts)」セクションまたは「*Amazon CloudWatch Logs User Guide*」の「[Cross-account delivery example](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AWS-logs-and-resource-policy.html#vended-logs-crossaccount-example)」を参照してください。

## 標準ログ記録を有効にする
<a name="set-up-standard-logging"></a>

標準ログ記録を有効にするには、CloudFront コンソールまたは CloudWatch API を使用できます。

**Contents**
+ [標準ログ記録を有効にする (CloudFront コンソール）](#access-logging-console)
+ [標準ログ記録を有効にする (CloudWatch API)](#enable-access-logging-api)

### 標準ログ記録を有効にする (CloudFront コンソール）
<a name="access-logging-console"></a>

**CloudFront ディストリビューションの標準ログ記録を有効にするには (コンソール)**

1. CloudFront コンソールを使用して、[既存のディストリビューションを更新します](HowToUpdateDistribution.md#HowToUpdateDistributionProcedure)。

1. **[Logging]** (ログ) タブを選択します。

1. **[追加]** を選択し、ログを受信するサービスを選択します。
   + CloudWatch Logs
   + Firehose
   + Amazon S3

1. **[送信先]** で、サービスのリソースを選択します。リソースをまだ作成していない場合は、**[作成]** を選択するか、次のドキュメントを参照することができます。
   + CloudWatch Logs の場合は、**[[ロググループ名]](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/Working-with-log-groups-and-streams.html)** に入力します。
   + Firehose の場合は、**[[Firehose 配信ストリーム]](https://docs.aws.amazon.com/firehose/latest/dev/basic-create.html)** に入力します。
   + Amazon S3 の場合は、**[[バケット名]](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html)** に入力します。
**ヒント**  
プレフィックスを指定するには、バケット名の後にプレフィックスを入力します (例: `amzn-s3-demo-bucket.s3.amazonaws.com/MyLogPrefix`)。プレフィックスを指定しないと、CloudFront が自動的にプレフィックスを追加します。詳細については、「[Amazon S3 にログを送信する](#send-logs-s3)」を参照してください。

1. **[追加設定 – *オプション*]** で、以下のオプションを指定できます。

   1. **[フィールド選択]** で、送信先に配信するログのフィールド名を選択します。[アクセスログフィールド](standard-logs-reference.md#BasicDistributionFileFormat)と、[リアルタイムアクセスログフィールド](#standard-logging-real-time-log-selection)のサブセットを選択できます。

   1. (Amazon S3 のみ) **[パーティショニング]** で、ログファイルデータをパーティション分割するパスを指定します。

   1. (Amazon S3 のみ) **[Hive 互換ファイル形式]** でチェックボックスをオンにして、Hive 互換 S3 パスを使用できます。これにより、Hive 互換ツールへの新しいデータのロードを簡素化できます。

   1. **[出力形式]** で、希望する形式を指定します。
**注記**  
**[Parquet]** を選択した場合、このオプションではアクセスログを Apache Parquet に変換するための CloudWatch 料金が発生します。詳細については、[「CloudWatch 料金表」の「Vended Logs」セクション](https://aws.amazon.com/cloudwatch/pricing/)を参照してください。

   1. **[フィールド区切り文字]** で、ログフィールドを区切る方法を指定します。

1. ディストリビューションを更新または作成するステップを完了します。

1. 別の送信先を追加するには、ステップ 3～6 を繰り返します。

1. **[ログ]** ページで、標準ログのステータスが、ディストリビューションの横で **[有効]** になっていることを確認します。

1. (オプション) Cookie ログ記録を有効にするには、**[管理]**、**[設定]** を選択し、**[cookie ログ記録]** をオンにしてから、**[変更を保存]** を選択します。
**ヒント**  
cookie ログ記録は、ディストリビューションの*すべて*の標準ログ記録に適用されるグローバル設定です。この設定を個別の配信先で上書きすることはできません。

標準ログ記録の配信とログフィールドの詳細については、「[標準ログ記録リファレンス](standard-logs-reference.md)」を参照してください。

### 標準ログ記録を有効にする (CloudWatch API)
<a name="enable-access-logging-api"></a>

CloudWatch API を使用して、ディストリビューションの標準ログ記録を有効にすることもできます。

**注意事項**  
CloudWatch API を呼び出して標準ログ記録を有効にする場合は、別の送信先へのクロスリージョン配信を有効にするときでも、米国東部 (バージニア北部) リージョン (`us-east-1`) を指定する必要があります。例えば、アクセスログを欧州 (アイルランド) リージョン (`eu-west-1`) の S3 バケットに送信する場合、`us-east-1` リージョンで CloudWatch API を使用します。
標準ログ記録に cookie を含めるための追加オプションがあります。CloudFront API の場合、これは `IncludeCookies` パラメータです。CloudWatch API を使用してアクセスログ記録を設定し、cookie を含めるように指定する場合は、CloudFront コンソールまたは CloudFront API を使用して cookie を含めるようにディストリビューションを更新する必要があります。そうしないと、CloudFront はログ送信先に cookie を送信できません。詳細については、「[cookie のログ作成](DownloadDistValuesGeneral.md#DownloadDistValuesCookieLogging)」を参照してください。

**ディストリビューションの標準ログ記録を有効にするには (CloudWatch API)**

1. ディストリビューションを作成したら、Amazon リソースネーム (ARN) を取得します。

   ARN は、CloudFront コンソールの **[ディストリビューション]** ページで見つけるか、[GetDistribution](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_GetDistribution.html) API オペレーションを使用して見つけることができます。ディストリビューション ARN は次の形式に従います: `arn:aws:cloudfront::123456789012:distribution/d111111abcdef8` 

1. 次に、CloudWatch [PutDeliverySource](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_PutDeliverySource.html) API オペレーションを使用して、ディストリビューションの配信ソースを作成します。

   1. 配信ソースの名前を入力します。

   1. ディストリビューションの `resourceArn` を渡します。

   1. `logType` で、収集するログのタイプとして `ACCESS_LOGS` を指定します。

   1.   
**Example AWS CLI put-delivery-source コマンドの例**  

      次に示すのは、ディストリビューションの配信ソースを設定する例です。

      ```
      aws logs put-delivery-source --name S3-delivery --resource-arn arn:aws:cloudfront::123456789012:distribution/d111111abcdef8 --log-type ACCESS_LOGS
      ```

      **出力**:

      ```
      {
       "deliverySource": {
       "name": "S3-delivery",
       "arn": "arn:aws:logs:us-east-1:123456789012:delivery-source:S3-delivery",
       "resourceArns": [
       "arn:aws:cloudfront::123456789012:distribution/d111111abcdef8"
       ],
       "service": "cloudfront",
       "logType": "ACCESS_LOGS"
       }
      }
      ```

1. [PutDeliveryDestination](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_PutDeliveryDestination.html) API オペレーションを使用してログの保存先を設定します。

   1. `destinationResourceArn` で、送信先の ARN を指定します。これは、CloudWatch Logs ロググループ、Firehose 配信ストリーム、Amazon S3 バケットのいずれかにすることができます。

   1. `outputFormat` で、ログの出力形式を指定します。

   1.   
**Example AWS CLI put-delivery-destination コマンドの例**  

      次に示すのは、Amazon S3 バケットを配信先として設定する例です。

      ```
      aws logs put-delivery-destination --name S3-destination --delivery-destination-configuration destinationResourceArn=arn:aws:s3:::amzn-s3-demo-bucket
      ```

      **出力**:

      ```
      {
          "name": "S3-destination",
          "arn": "arn:aws:logs:us-east-1:123456789012:delivery-destination:S3-destination",
          "deliveryDestinationType": "S3",
          "deliveryDestinationConfiguration": {
              "destinationResourceArn": "arn:aws:s3:::amzn-s3-demo-bucket"
          }
      }
      ```
**注記**  
ログをクロスアカウント配信する場合は、[PutDeliveryDestinationPolicy](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_PutDeliveryDestinationPolicy.html) API オペレーションを使用して AWS Identity and Access Management (IAM) ポリシーを送信先アカウントに割り当てる必要があります。IAM ポリシーは、あるアカウントから別のアカウントへの配信を許可します。

1. [CreateDelivery](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_CreateDelivery.html) API オペレーションを使用して、配信ソースを、前のステップで作成した送信先にリンクします。この API オペレーションは、配信ソースを最終配信先と関連付けます。

   1. `deliverySourceName` で、ソース名を指定します。

   1. `deliveryDestinationArn` で、配信先の ARN を指定します。

   1. `fieldDelimiter` で、各ログフィールドを区切る文字列を指定します。

   1. `recordFields` で、必要なログフィールドを指定します。

   1. S3 を使用している場合は、`enableHiveCompatiblePath` と `suffixPath` を使用するかどうかを指定します。  
**Example AWS CLI create-delivery コマンドの例**  

   次に示すのは、配信を作成する例です。

   ```
   aws logs create-delivery --delivery-source-name cf-delivery --delivery-destination-arn arn:aws:logs:us-east-1:123456789012:delivery-destination:S3-destination
   ```

   **出力**:

   ```
   {
       "id": "abcNegnBoTR123",
       "arn": "arn:aws:logs:us-east-1:123456789012:delivery:abcNegnBoTR123",
       "deliverySourceName": "cf-delivery",
       "deliveryDestinationArn": "arn:aws:logs:us-east-1:123456789012:delivery-destination:S3-destination",
       "deliveryDestinationType": "S3",
       "recordFields": [
           "date",
           "time",
           "x-edge-location",
           "sc-bytes",
           "c-ip",
           "cs-method",
           "cs(Host)",
           "cs-uri-stem",
           "sc-status",
           "cs(Referer)",
           "cs(User-Agent)",
           "cs-uri-query",
           "cs(Cookie)",
           "x-edge-result-type",
           "x-edge-request-id",
           "x-host-header",
           "cs-protocol",
           "cs-bytes",
           "time-taken",
           "x-forwarded-for",
           "ssl-protocol",
           "ssl-cipher",
           "x-edge-response-result-type",
           "cs-protocol-version",
           "fle-status",
           "fle-encrypted-fields",
           "c-port",
           "time-to-first-byte",
           "x-edge-detailed-result-type",
           "sc-content-type",
           "sc-content-len",
           "sc-range-start",
           "sc-range-end",
           "c-country",
           "cache-behavior-path-pattern"
       ],
        "fieldDelimiter": ""
   }
   ```

1. CloudFront コンソールの **[ログ]** ページで、ディストリビューションの横で標準ログのステータスが **[有効]** になっていることを確認します。

   標準ログ記録の配信とログフィールドの詳細については、「[標準ログ記録リファレンス](standard-logs-reference.md)」を参照してください。

**注記**  
AWS CloudFormation を使用して CloudFront の標準ログ記録 (v2) を有効にするには、以下の CloudWatch Logs プロパティを使用できます。  
[Delivery](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-logs-delivery.html)
[DeliveryDestination](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-logs-deliverydestination.html)
[DeliverySource](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-logs-deliverysource.html)
`ResourceArn` は CloudFront ディストリビューションであり、`LogType` は `ACCESS_LOGS` をサポートされているログタイプとする必要があります。

## クロスアカウント配信の標準ログ記録を有効にする
<a name="enable-standard-logging-cross-accounts"></a>

AWS アカウントの標準ログ記録を有効にし、アクセスログを別のアカウントに配信する場合は、送信元アカウントと送信先アカウントを正しく設定します。CloudFront ディストリビューションの*送信元アカウント*は、アクセスログを*送信先アカウント*に送信します。

この手順の例では、送信元アカウント (*111111111111*) がアクセスログを送信先アカウント (*222222222222*) の Amazon S3 バケットに送信します。アクセスログを送信先アカウントの Amazon S3 バケットに送信するには、AWS CLI を使用します。

### 送信先アカウントを設定する
<a name="steps-destination-account"></a>

送信先アカウントの場合は、次の手順を実行します。

**送信先アカウントを設定するには**

1. ログ配信先を作成するには、次の AWS CLI コマンドを入力します。この例では、`MyLogPrefix` 文字列を使用してアクセスログのプレフィックスを作成します。

   ```
   aws logs put-delivery-destination --name cloudfront-delivery-destination --delivery-destination-configuration "destinationResourceArn=arn:aws:s3:::amzn-s3-demo-bucket-cloudfront-logs/MyLogPrefix"
   ```

   **出力**:

   ```
   {
       "deliveryDestination": {
           "name": "cloudfront-delivery-destination",
           "arn": "arn:aws:logs:us-east-1:222222222222:delivery-destination:cloudfront-delivery-destination",
           "deliveryDestinationType": "S3",
           "deliveryDestinationConfiguration": {"destinationResourceArn": "arn:aws:s3:::amzn-s3-demo-bucket-cloudfront-logs/MyLogPrefix"}
       }
   }
   ```
**注記**  
プレフィックス*なし*で S3 バケットを指定すると、CloudFront は `AWSLogs/<account-ID>/CloudFront` をプレフィックスとして自動的に追加します。このプレフィックスは S3 配信先の `suffixPath` に表示されます。詳細については、「[S3DeliveryConfiguration](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_S3DeliveryConfiguration.html)」を参照してください。

1. ログ配信先のリソースポリシーを追加して、送信元アカウントでログ配信を作成できるようにします。

   次のポリシーでは、*111111111111* を送信元アカウント ID に置き換え、ステップ 1 の出力から配信先 ARN を指定します。

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "AllowCreateDelivery",
               "Effect": "Allow",
               "Principal": {"AWS": "111111111111"},
               "Action": ["logs:CreateDelivery"],
               "Resource": "arn:aws:logs:us-east-1:222222222222:delivery-destination:cloudfront-delivery-destination"
           }
       ]
   }
   ```

------

1. ファイル (`deliverypolicy.json` など) を保存します。

1. 前のポリシーを配信先にアタッチするには、次の AWS CLI コマンドを入力します。

   ```
   aws logs put-delivery-destination-policy --delivery-destination-name cloudfront-delivery-destination --delivery-destination-policy file://deliverypolicy.json
   ```

1. 次のステートメントを送信先の Amazon S3 バケットポリシーに追加し、リソース ARN と送信元アカウント ID を置き換えます。このポリシーは、`delivery.logs.amazonaws.com` サービスプリンシパルに `s3:PutObject` アクションの実行を許可します。

   ```
   {
       "Sid": "AWSLogsDeliveryWrite",
       "Effect": "Allow",
       "Principal": {"Service": "delivery.logs.amazonaws.com"},
       "Action": "s3:PutObject",
       "Resource": "arn:aws:s3:::amzn-s3-demo-bucket-cloudfront-logs/*",
       "Condition": {
           "StringEquals": {
               "s3:x-amz-acl": "bucket-owner-full-control",
               "aws:SourceAccount": "111111111111"
           },
           "ArnLike": {"aws:SourceArn": "arn:aws:logs:us-east-1:111111111111:delivery-source:*"}
       }
   }
   ```

1. バケットに AWS KMS を使用している場合は、次のステートメントを KMS キーポリシーに追加して、`delivery.logs.amazonaws.com` サービスプリンシパルにアクセス許可を付与します。

   ```
   {
       "Sid": "Allow Logs Delivery to use the key",
       "Effect": "Allow",
       "Principal": {"Service": "delivery.logs.amazonaws.com"},
       "Action": [
           "kms:Encrypt",
           "kms:Decrypt",
           "kms:ReEncrypt*",
           "kms:GenerateDataKey*",
           "kms:DescribeKey"
       ],
       "Resource": "*",
       "Condition": {
           "StringEquals": {"aws:SourceAccount": "111111111111"},
           "ArnLike": {"aws:SourceArn": "arn:aws:logs:us-east-1:111111111111:delivery-source:*"}
       }
   }
   ```

### 送信元アカウントを設定する
<a name="steps-source-account"></a>

送信先アカウントを設定したら、次の手順に従って配信ソースを作成し、送信元アカウントでディストリビューションのログ記録を有効にします。

**送信元アカウントを設定するには**

1. CloudFront 標準ログ記録の配信ソースを作成し、ログファイルを CloudWatch Logs に送信できるようにします。

   次の AWS CLI コマンドを入力できます。名前とディストリビューション ARN は置き換えます。

   ```
   aws logs put-delivery-source --name s3-cf-delivery --resource-arn arn:aws:cloudfront::111111111111:distribution/E1TR1RHV123ABC --log-type ACCESS_LOGS
   ```

   **出力**:

   ```
   {
       "deliverySource": {
           "name": "s3-cf-delivery",
           "arn": "arn:aws:logs:us-east-1:111111111111:delivery-source:s3-cf-delivery",
           "resourceArns": ["arn:aws:cloudfront::111111111111:distribution/E1TR1RHV123ABC"],
           "service": "cloudfront",
           "logType": "ACCESS_LOGS"
       }
   }
   ```

1. 送信元アカウントのログ配信元と送信先アカウントのログ配信先をマッピングする配信を作成します。

   次の AWS CLI コマンドで、[「ステップ 1: 送信先アカウントを設定する」](#steps-destination-account)の出力から配信先 ARN を指定します。

   ```
   aws logs create-delivery --delivery-source-name s3-cf-delivery --delivery-destination-arn arn:aws:logs:us-east-1:222222222222:delivery-destination:cloudfront-delivery-destination
   ```

   **出力**:

   ```
   {
       "delivery": {
           "id": "OPmOpLahVzhx1234",
           "arn": "arn:aws:logs:us-east-1:111111111111:delivery:OPmOpLahVzhx1234",
           "deliverySourceName": "s3-cf-delivery",
           "deliveryDestinationArn": "arn:aws:logs:us-east-1:222222222222:delivery-destination:cloudfront-delivery-destination",
           "deliveryDestinationType": "S3",
           "recordFields": [
               "date",
               "time",
               "x-edge-location",
               "sc-bytes",
               "c-ip",
               "cs-method",
               "cs(Host)",
               "cs-uri-stem",
               "sc-status",
               "cs(Referer)",
               "cs(User-Agent)",
               "cs-uri-query",
               "cs(Cookie)",
               "x-edge-result-type",
               "x-edge-request-id",
               "x-host-header",
               "cs-protocol",
               "cs-bytes",
               "time-taken",
               "x-forwarded-for",
               "ssl-protocol",
               "ssl-cipher",
               "x-edge-response-result-type",
               "cs-protocol-version",
               "fle-status",
               "fle-encrypted-fields",
               "c-port",
               "time-to-first-byte",
               "x-edge-detailed-result-type",
               "sc-content-type",
               "sc-content-len",
               "sc-range-start",
               "sc-range-end",
               "c-country",
               "cache-behavior-path-pattern"
           ],
           "fieldDelimiter": "\t"
       }
   }
   ```

1. クロスアカウント配信が成功したことを確認します。

   1. *source* アカウントから、CloudFront コンソールにサインインし、ディストリビューションを選択します。**[ログ記録]** タブの **[タイプ]** に、S3 クロスアカウントログ配信用に作成されたエントリが表示されます。

   1. *destination* アカウントから、Amazon S3 コンソールにサインインし、Amazon S3 バケットを選択します。バケット名にプレフィックス `MyLogPrefix` と、そのフォルダに配信されたアクセスログが表示されます。

## 出力ファイル形式
<a name="supported-log-file-format"></a>

選択した配信先に応じて、ログファイルに以下のいずれかの形式を指定できます。
+ JSON
+ Plain
+ w3c
+ Raw
+ Parquet (Amazon S3 のみ）

**注記**  
出力形式を設定できるのは、配信先を初めて作成するときのみです。後で更新することはできません。出力形式を変更するには、配信を削除し、別の配信を作成します。

詳細については、「*Amazon CloudWatch Logs API Reference*」の「[PutDeliveryDestination](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_PutDeliveryDestination.html)」を参照してください。

## 標準ログ記録設定を編集する
<a name="standard-logs-v2-edit-settings"></a>

[CloudFront コンソール](https://console.aws.amazon.com/cloudfront/v4/home)または CloudWatch API を使用して、ログ記録を有効または無効にしたり、他のログ設定を更新したりできます。ログ作成設定の変更は 12 時間以内に有効になります。

詳細については、以下の各トピックを参照してください。
+ CloudFront コンソールを使用してディストリビューションを更新するには、「[ディストリビューションを更新する](HowToUpdateDistribution.md)」を参照してください。
+ CloudFront API を使用してディストリビューションを更新するには、「*Amazon CloudFront API Reference*」の「[UpdateDistribution](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_UpdateDistribution.html)」を参照してください。
+ CloudWatch Logs の API オペレーションの詳細については、「[Amazon CloudWatch Logs API Reference](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/Welcome.html)」を参照してください。

## アクセスログフィールド
<a name="standard-logging-real-time-log-selection"></a>

標準ログ記録 (レガシー) がサポートしているものと同じログフィールドを選択できます。詳細については、「[ログファイルフィールド](standard-logs-reference.md#BasicDistributionFileFormat)」を参照してください。

さらに、以下の[リアルタイムのアクセスログフィールド](real-time-logs.md#understand-real-time-log-config)を選択できます。

1. `timestamp(ms)` – タイムスタンプ (ミリ秒単位)。

1. `origin-fbl` – CloudFront とオリジン間の先頭バイトのレイテンシーの秒数。

1. `origin-lbl` – CloudFront とオリジン間の最終バイトのレイテンシーの秒数。

1. `asn` – ビューワーの AS 番号 (ASN)。

1. `c-country` – ビューワーの IP アドレスによって決定される、ビューワーの地理的位置を表す国コード。国コードの一覧については、「[ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)」を参照してください。

1. `cache-behavior-path-pattern` – ビューワーリクエストに一致したキャッシュ動作を識別するパスパターン。

## CloudWatch Logs にログを送信する
<a name="send-logs-cloudwatch-logs"></a>

CloudWatch Logs にログを送信するには、CloudWatch Logs ロググループを作成するか、既存のものを使用します。CloudWatch Logs ロググループの設定の詳細については、「[Working with Log Groups and Log Streams](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/Working-with-log-groups-and-streams.html)」を参照してください。

ロググループを作成したら、標準ログ記録を許可するために必要なアクセス許可が必要です。必要なアクセス許可の詳細については、「*Amazon CloudWatch Logs User Guide*」の「[Logs sent to CloudWatch Logs](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AWS-logs-and-resource-policy.html#AWS-logs-infrastructure-V2-CloudWatchLogs)」を参照してください。

**注意事項**  
CloudWatch Logs ロググループの名前を指定する場合は、正規表現パターン `[\w-]` のみを使用します。詳細については、「*Amazon CloudWatch Logs API Reference*」の「[PutDeliveryDestination](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_PutDeliveryDestination.html#API_PutDeliveryDestination_RequestSyntax)」 API オペレーションを参照してください。
ロググループリソースポリシーがサイズ制限を超えていないことを確認します。CloudWatch Logs トピックの「[Log group resource policy size limit considerations](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AWS-logs-and-resource-policy.html#AWS-logs-infrastructure-V2-CloudWatchLogs)」セクションを参照してください。

### CloudWatch Logs に送信されたアクセスログの例
<a name="example-access-logs-cwl"></a>

```
{ 
"date": "2024-11-14", 
"time": "21:34:06", 
"x-edge-location": "SOF50-P2", 
"asn": "16509", 
"timestamp(ms)": "1731620046814", 
"origin-fbl": "0.251", 
"origin-lbl": "0.251", 
"x-host-header": "d111111abcdef8.cloudfront.net", 
"cs(Cookie)": "examplecookie=value" 
}
```

## Firehose にログを送信する
<a name="send-logs-kinesis"></a>

Firehose にログを送信するには、Firehose 配信ストリームを作成するか、既存のものを使用します。次に、Firehose 配信ストリームをログ配信先として指定します。米国東部 (バージニア北部) us-east-1 リージョンで Firehose 配信ストリームを指定する必要があります。

配信ストリームの作成の詳細については、「[Creating an Amazon Data Firehose delivery stream](https://docs.aws.amazon.com/firehose/latest/dev/basic-create.html)」を参照してください。

配信ストリームを作成したら、標準ログ記録を許可するために必要なアクセス許可が必要です。詳細については「*Amazon CloudWatch Logs User Guide*」の「[Logs sent to Firehose](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AWS-logs-and-resource-policy.html#AWS-logs-infrastructure-V2-Firehose)」を参照してください。

**注記**  
Firehose ストリームの名前を指定する場合は、正規表現パターン `[\w-]` のみを使用します。詳細については、「*Amazon CloudWatch Logs API Reference*」の「[PutDeliveryDestination](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_PutDeliveryDestination.html#API_PutDeliveryDestination_RequestSyntax)」 API オペレーションを参照してください。

### Firehose に送信されたアクセスログの例
<a name="example-access-logs-firehose"></a>

```
{"date":"2024-11-15","time":"19:45:51","x-edge-location":"SOF50-P2","asn":"16509","timestamp(ms)":"1731699951183","origin-fbl":"0.254","origin-lbl":"0.254","x-host-header":"d111111abcdef8.cloudfront.net","cs(Cookie)":"examplecookie=value"}
{"date":"2024-11-15","time":"19:45:52","x-edge-location":"SOF50-P2","asn":"16509","timestamp(ms)":"1731699952950","origin-fbl":"0.125","origin-lbl":"0.125","x-host-header":"d111111abcdef8.cloudfront.net","cs(Cookie)":"examplecookie=value"}
```

## Amazon S3 にログを送信する
<a name="send-logs-s3"></a>

Amazon S3 にアクセスログを送信するには、S3 バケットを作成するか、既存のものを使用します。CloudFront でログ記録を有効にする場合は、バケット名を指定します。バケットの作成方法については、「*Amazon Simple Storage Service ユーザーガイド*」の「[バケットの作成](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html)」を参照してください。

バケットを作成したら、標準ログ記録を許可するために必要なアクセス許可が必要です。詳細については「*Amazon CloudWatch Logs User Guide*」の「[Logs sent to Amazon S3](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AWS-logs-and-resource-policy.html#AWS-logs-infrastructure-V2-S3)」を参照してください。
+ ログ記録を有効にすると、必要なバケットポリシーを AWS が自動的に追加します。
+ [オプトイン AWS リージョン](https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-regions.html)で S3 バケットを使用することもできます。

**注記**  
標準ログ記録 (レガシー) を既に有効にしていて、Amazon S3 への標準ログ記録 (v2) を有効にする場合は、*別の* Amazon S3 バケットを指定するか、同じバケット内の*別のパス*を使用する (例: ログプレフィックスやパーティショニングを使用する) ことをお勧めします。これにより、どのログファイルがどのディストリビューションに関連付けられているかを追跡し、ログファイルが互いに上書きされるのを防ぐことができます。

**Topics**
+ [S3 バケットを指定する](#prefix-s3-buckets)
+ [パーティション](#partitioning)
+ [Hive 互換ファイル名形式](#hive-compatible-file-name-format)
+ [アクセスログへのパスの例](#bucket-path-examples)
+ [Amazon S3 に送信されたアクセスログの例](#example-access-logs-s3)

### S3 バケットを指定する
<a name="prefix-s3-buckets"></a>

S3 バケットを配信先として指定する場合は、次の点に注意してください。

S3 バケット名には正規表現パターン `[\w-]` のみを使用できます。詳細については、「*Amazon CloudWatch Logs API Reference*」の「[PutDeliveryDestination](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_PutDeliveryDestination.html#API_PutDeliveryDestination_RequestSyntax)」 API オペレーションを参照してください。

S3 バケットにプレフィックスを指定している場合、ログはそのパスの下に表示されます。プレフィックスを指定しない場合、CloudFront は自動的に `AWSLogs/{account-id}/CloudFront` プレフィックスを追加します。

詳細については、「[アクセスログへのパスの例](#bucket-path-examples)」を参照してください。

### パーティション
<a name="partitioning"></a>

CloudFront がアクセスログを S3 バケットに送信するときに、パーティショニングを使用してアクセスログを整理できます。これにより、必要なパスに基づいてアクセスログを整理して見つけることができます。

以下の変数を使用してフォルダパスを作成できます。
+ `{DistributionId}`-または-`{distributionid}`
+ `{yyyy}`
+ `{MM}`
+ `{dd}`
+ `{HH}`
+ `{accountid}`

任意の数の変数を使用し、パスにフォルダ名を指定できます。次に、CloudFront はこのパスを使用して S3 バケットにフォルダ構造を自動的に作成します。

**例**
+ `my_distribution_log_data/{DistributionId}/logs`
+ `/cloudfront/{DistributionId}/my_distribution_log_data/{yyyy}/{MM}/{dd}/{HH}/logs `

**注記**  
 サフィックスパスのディストリビューション ID には、いずれかの変数を使用できます。ただし、アクセスログを AWS Glue に送信する場合は、AWS Glue がパーティション名を小文字と想定するため、`{distributionid}` 変数を使用する必要があります。CloudFront の既存のログ設定を更新して、`{DistributionId}` を `{distributionid}` に置き換えます。

### Hive 互換ファイル名形式
<a name="hive-compatible-file-name-format"></a>

このオプションを使用すると、配信されたアクセスログを含む S3 オブジェクトが、Apache Hive との統合を可能にするプレフィックス構造を使用できるようになります。詳細については、[CreateDelivery](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_CreateDelivery.html) API オペレーションを参照してください。

**Example 例**  

```
/cloudfront/DistributionId={DistributionId}/my_distribution_log_data/year={yyyy}/month={MM}/day={dd}/hour={HH}/logs
```

パーティショニングと Hive 互換オプションの詳細については、「*Amazon CloudWatch Logs API Reference*」の「[S3DeliveryConfiguration](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_S3DeliveryConfiguration.html)」要素を参照してください。

### アクセスログへのパスの例
<a name="bucket-path-examples"></a>

S3 バケットを送信先として指定する場合、以下のオプションを使用してアクセスログへのパスを作成できます。
+ Amazon S3 バケット (プレフィックス付き、またはプレフィックスなし)
+ パーティショニング (CloudFront が提供する変数を使用するか、独自の変数を入力)
+ Hive 互換オプションの有効化

以下の表は、選択したオプションに応じて、アクセスログがバケット内でどのように表示されるかを示しています。

#### Amazon S3 バケット (プレフィックス付き)
<a name="bucket-with-prefix"></a>


| Amazon S3 バケット名 | サフィックスパスで指定したパーティション | サフィックスパスの更新 | Hive 互換の有効化? | アクセスログの送信先 | 
| --- | --- | --- | --- | --- | 
| amzn-s3-demo-bucket/MyLogPrefix | なし | なし | いいえ | amzn-s3-demo-bucket/MyLogPrefix/ | 
| amzn-s3-demo-bucket/MyLogPrefix | myFolderA/ | myFolderA/ | なし | amzn-s3-demo-bucket/MyLogPrefix/myFolderA/ | 
| amzn-s3-demo-bucket/MyLogPrefix | myFolderA/\$1yyyy\$1 | myFolderA/\$1yyyy\$1 | はい | amzn-s3-demo-bucket/MyLogPrefix/myFolderA/year=2025 | 

#### Amazon S3 バケット (プレフィックスなし)
<a name="bucket-without-prefix"></a>


| Amazon S3 バケット名 | サフィックスパスで指定したパーティション | サフィックスパスの更新 | Hive 互換の有効化? | アクセスログの送信先 | 
| --- | --- | --- | --- | --- | 
| amzn-s3-demo-bucket | なし | AWSLogs/\$1account-id\$1/CloudFront/ | いいえ | amzn-s3-demo-bucket/AWSLogs/<your-account-ID>/CloudFront/ | 
| amzn-s3-demo-bucket | myFolderA/ | AWSLogs/\$1account-id\$1/CloudFront/myFolderA/ | なし | amzn-s3-demo-bucket/AWSLogs/<your-account-ID>/CloudFront/myFolderA/ | 
| amzn-s3-demo-bucket | myFolderA/ | AWSLogs/\$1account-id\$1/CloudFront/myFolderA/ | はい | amzn-s3-demo-bucket/AWSLogs/aws-account-id=<your-account-ID>/CloudFront/myFolderA/ | 
| amzn-s3-demo-bucket | myFolderA/\$1yyyy\$1 | AWSLogs/\$1account-id\$1/CloudFront/myFolderA/\$1yyyy\$1 | はい | amzn-s3-demo-bucket/AWSLogs/aws-account-id=<your-account-ID>/CloudFront/myFolderA/year=2025 | 

#### パーティションとしての AWS アカウント ID
<a name="bucket-account-id-partition"></a>


| Amazon S3 バケット名 | サフィックスパスで指定したパーティション | サフィックスパスの更新 | Hive 互換の有効化? | アクセスログの送信先 | 
| --- | --- | --- | --- | --- | 
| amzn-s3-demo-bucket | なし | AWSLogs/\$1account-id\$1/CloudFront/ | はい | amzn-s3-demo-bucket/AWSLogs/aws-account-id=<your-account-ID>/CloudFront/ | 
| amzn-s3-demo-bucket | myFolderA/\$1accountid\$1 | AWSLogs/\$1account-id\$1/CloudFront/myFolderA/\$1accountid\$1 | はい | amzn-s3-demo-bucket/AWSLogs/aws-account-id=<your-account-ID>/CloudFront/myFolderA/accountid=<your-account-ID> | 

**注意事項**  
`{account-id}` 変数は CloudFront 用に予約されています。Amazon S3 バケットをプレフィックス*なし*で指定すると、CloudFront はこの変数をサフィックスパスに自動的に追加します。ログが Hive 互換である場合、この変数は `aws-account-id` として表示されます。
`{accountid}` 変数を使用すると、CloudFront がアカウント ID をサフィックスパスに追加できます。ログが Hive 互換である場合、この変数は `accountid` として表示されます。
サフィックスパスの詳細については、「[S3DeliveryConfiguration](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_S3DeliveryConfiguration.html)」を参照してください。

### Amazon S3 に送信されたアクセスログの例
<a name="example-access-logs-s3"></a>

```
#Fields: date time x-edge-location asn timestamp(ms) x-host-header cs(Cookie)
2024-11-14    22:30:25    SOF50-P2    16509    1731623425421    
d111111abcdef8.cloudfront.net    examplecookie=value2
```

## 標準ログ記録を無効にする
<a name="delete-standard-log-destination"></a>

不要になった場合は、ディストリビューションの標準ログ記録を無効にすることができます。

**標準ログ記録を無効にするには**

1. CloudFront コンソールにサインインします。

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

1. **[ログ記録]** を選択し、**[アクセスログ送信先]** で送信先を選択します。

1. **[管理]**、**[削除]** の順に選択します。

1. 複数の標準ログ記録がある場合は、前のステップを繰り返します。

**注記**  
CloudFront コンソールから標準ログ記録を削除すると、このアクションは配信と配信先のみを削除します。配信ソースは AWS アカウントから削除されません。配信ソースを削除するには、`aws logs delete-delivery-source --name DeliverySourceName` コマンドで配信ソース名を指定します。詳細については、「*Amazon CloudWatch Logs API Reference*」の「[DeleteDeliverySource](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_DeleteDeliverySource.html)」を参照してください。

## トラブルシューティング
<a name="troubleshooting-access-logs-v2"></a>

CloudFront 標準ログ記録 (v2) を使用する際の一般的な問題を修正するには、次の情報を使用します。

### 配信ソースが既に存在している
<a name="access-logging-resource-already-used"></a>

ディストリビューションの標準ログ記録を有効にすると、配信ソースが作成されます。次に、この配信ソースを使用して、必要な送信先タイプ (CloudWatch Logs、Firehose、Amazon S3) への配信を作成します。現在、配信ソースはディストリビューションごとに 1 つだけ持つことができます。同じディストリビューションに対して別の配信ソースを作成しようとすると、次のエラーメッセージが表示されます。

```
This ResourceId has already been used in another Delivery Source in this account
```

別の配信ソースを作成するには、まず既存のものを削除します。詳細については、「*Amazon CloudWatch Logs API Reference*」の「[DeleteDeliverySource](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_DeleteDeliverySource.html)」を参照してください。

### サフィックスパスを変更したら、Amazon S3 バケットがログを受信できなくなった
<a name="access-logging-s3-permission"></a>

標準ログ記録 (v2) を有効にし、プレフィックスなしでバケット ARN を指定すると、CloudFront はサフィックスパスに以下のデフォルトを追加します。`AWSLogs/{account-id}/CloudFront`。CloudFront コンソールまたは [UpdateDeliveryConfiguration](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_UpdateDeliveryConfiguration.html) API オペレーションを使用して別のサフィックスパスを指定する場合は、同じパスを使用するように Amazon S3 バケットポリシーを更新する必要があります。

**Example 例: サフィックスパスの更新**  

1. デフォルトのサフィックスパスは `AWSLogs/{account-id}/CloudFront` で、`myFolderA` に置き換えます。

1. 新しいサフィックスパスは Amazon S3 バケットポリシーで指定されたパスとは異なるため、アクセスログは配信されません。

1. 次のいずれかの手順を実行します。
   + Amazon S3 バケットのアクセス許可を `amzn-s3-demo-bucket/AWSLogs/<your-account-ID>/CloudFront/*` から `amzn-s3-demo-bucket/myFolderA/*` に更新します。
   + ログ記録設定を更新して、デフォルトのサフィックス (`AWSLogs/{account-id}/CloudFront`) を再度使用します。
詳細については、「[アクセス許可](#permissions-standard-logging)」を参照してください。

## ログファイルを削除する
<a name="standard-logs-v2-delete"></a>

CloudFront は、送信先からログファイルを自動的には削除しません。ログファイルの削除方法については、以下のトピックを参照してください。

**Amazon S3**
+ 「*Amazon Simple Storage Service Console ユーザーガイド*」の「[オブジェクトの削除](https://docs.aws.amazon.com/AmazonS3/latest/userguide/DeletingObjects.html)」

**CloudWatch Logs**
+ 「*Amazon CloudWatch Logs User Guide*」の「[Working with log groups and log streams](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/Working-with-log-groups-and-streams.html)」
+ 「*Amazon CloudWatch Logs API Reference*」の「[DeleteLogGroup](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_DeleteLogGroup.html)」

**Firehose**
+ 「*Amazon Data Firehose API Reference*」の「[DeleteDeliveryStream](https://docs.aws.amazon.com/firehose/latest/APIReference/API_DeleteDeliveryStream.html)」

## 料金
<a name="pricing-standard-logs"></a>

CloudFront では、標準ログの有効化には料金がかかりません。ただし、選択したログ配信先によっては、配信、取り込み、ストレージ、またはアクセスに対して料金が発生する場合があります。詳細については、「[Amazon CloudWatch Logs 料金表](https://aws.amazon.com/cloudwatch/pricing/)」を参照してください。**[有料利用枠]** で **[ログ]** タブを選択し、次に **[Vended Logs]** で各配信先に関する情報を確認します。

各 AWS のサービスの料金の詳細については、以下のトピックを参照してください。
+ [Amazon CloudWatch Logs 料金](https://aws.amazon.com/cloudwatch/pricing/)
+ [Amazon Data Firehose 料金](https://aws.amazon.com/kinesis/data-firehose/pricing/)
+ [Amazon S3 料金](https://aws.amazon.com/s3/pricing/) 
**注記**  
Amazon S3 へのログ配信に追加料金はかかりませんが、ログファイルの保存とアクセスには Amazon S3 料金が発生します。**[Parquet]** オプションを有効にしてアクセスログを Apache Parquet に変換すると、このオプションには CloudWatch 料金が発生します。詳細については、[「CloudWatch 料金表」の「Vended Logs」セクション](https://aws.amazon.com/cloudwatch/pricing/)を参照してください。

# 標準ログ記録 (レガシー) を設定する
<a name="standard-logging-legacy-s3"></a>

**注意事項**  
このトピックでは、以前のバージョンの標準ログ記録について説明します。最新バージョンについては、「[標準ログ記録 (v2) を設定する](standard-logging.md)」を参照してください。
標準ログ記録 (レガシー) を既に有効にしていて、Amazon S3 への標準ログ記録 (v2) を有効にする場合は、*別の* Amazon S3 バケットを指定するか、同じバケット内の*別のパス*を使用する (例: ログプレフィックスやパーティショニングを使用する) ことをお勧めします。これにより、どのログファイルがどのディストリビューションに関連付けられているかを追跡し、ログファイルが互いに上書きされるのを防ぐことができます。

標準ログ記録 (レガシー) を開始するには、次の手順を実行します。

1. ログを受信する Amazon S3 バケットを選択し、必要なアクセス許可を追加します。

1. CloudFront コンソールまたは CloudFront API を使用して標準ログ記録 (レガシー) を設定します。ログの受信先として Amazon S3 バケットのみを選択できます。

1. アクセスログを表示します。

## 標準ログ用の Amazon S3 バケットを選択する
<a name="access-logs-choosing-s3-bucket"></a>

ディストリビューションのログ記録を有効にする際には、CloudFront でログファイルを保存する Amazon S3 バケットを指定します。オリジンとして Amazon S3 を使用する場合は、ログファイル用に別のバケットを使用することをお勧めします。**

CloudFront でアクセスログを保存する先の Amazon S3 バケット (例: `amzn-s3-demo-bucket.s3.amazonaws.com`) を指定します。

複数のディストリビューションのログファイルを同じバケットに保存することもできます。ログ記録を有効にする際には、ファイル名のプレフィックスをオプションで指定できます。これにより、どのログファイルがどのディストリビューションに関連しているか追跡できます。

**S3 バケットの選択について**  
バケットでは、アクセスコントロールリスト (ACL) が有効になっている必要があります。CloudFront コンソールで ACL を有効にしていないバケットを選択すると、エラーメッセージが表示されます。「[アクセス許可](#AccessLogsBucketAndFileOwnership)」を参照してください。
**強制を行ったバケット所有者**に設定される [S3 オブジェクトの所有権](https://docs.aws.amazon.com/AmazonS3/latest/userguide/about-object-ownership.html)を使用して Amazon S3 バケットを選択してはいけません。この設定では、バケットとその中のオブジェクトの ACL が無効になり、CloudFront によるバケットへのログファイルの配信を阻止します。[標準ログ記録 V2](standard-logging.md)[AWS リージョン](https://docs.aws.amazon.com/global-infrastructure/latest/regions/aws-regions.html)

## アクセス許可
<a name="AccessLogsBucketAndFileOwnership"></a>

**重要**  
2023 年 4 月以降、CloudFront 標準ログで使用する新しい S3 バケットでは S3 の ACL を有効にする必要があります。ACL は、[バケットを作成する](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-ownership-new-bucket.html)ときに有効にするか、[既存のバケット](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-ownership-existing-bucket.html)に対して有効にすることができます。  
変更の詳細については、「*Amazon Simple Storage Service ユーザーガイド*」の「[新しい S3 バケットのデフォルト設定に関するよくある質問](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-faq.html)」と、「*AWS ニュースブログ*」の「[注意喚起: 2023 年 4 月に予定されている Amazon S3 のセキュリティ変更](https://aws.amazon.com/blogs/aws/heads-up-amazon-s3-security-changes-are-coming-in-april-of-2023/)」を参照してください。

AWS アカウントには、ログファイル用に指定するバケットに対して以下のアクセス許可が必要です。
+ バケットの ACL は `FULL_CONTROL` をユーザーに付与する必要があります バケット所有者のアカウントには、デフォルトでこのアクセス許可があります。権限がない場合、バケット所有者はバケットの ACL を更新する必要があります。
+ `s3:GetBucketAcl`
+ `s3:PutBucketAcl`

**バケットの ACL**  
ディストリビューションを作成または更新してロギングを有効にすると、CloudFront はこれらのアクセス許可を使用してバケットの ACL を更新し、`awslogsdelivery` アカウントに `FULL_CONTROL` のアクセス許可を付与します。`awslogsdelivery` アカウントはログファイルをバケットに書き込みます。アカウントに ACL を更新するために必要なアクセス許可がない場合、ディストリビューションの作成または更新は失敗します。  
状況によっては、バケットを作成するリクエストをプログラムで送信したが、指定した名前のバケットが既に存在する場合、S3 ではバケットのアクセス許可をデフォルト値にリセットします。アクセスログを S3 バケットに保存するように CloudFront を設定した後で、そのバケットでのログ受信を中止する場合は、バケットのアクセス許可をチェックして CloudFront に必要なアクセス許可があることを確認します。

**バケットの ACL を復元する**  
`awslogsdelivery` アカウントのアクセス許可を削除すると、CloudFront はログを S3 バケットに保存できません。CloudFront がディストリビューションのログ保存を再開するには、次のいずれかの操作を行って ACL アクセス許可を復元します。  
+ CloudFront ディストリビューションのログ記録を無効化してから、再度有効にします。詳細については、「[標準ログ記録](DownloadDistValuesGeneral.md#DownloadDistValuesLoggingOnOff)」を参照してください。
+ Amazon S3 コンソールで S3 バケットに移動してアクセス許可を追加することで、`awslogsdelivery` の ACL アクセス許可を手動で追加します。`awslogsdelivery` の ACL を追加するには、アカウントの正規 ID を入力する必要があります。これは次のとおりです。

  `c4c1ede66af53448b93c283ce9448c4ba468c9432aa01d700d3878632f77d2d0`

  

  ACL を S3 バケットに追加する方法の詳細については、「Amazon Simple Storage Service コンソールユーザーガイド」の「[ACL の設定](https://docs.aws.amazon.com/AmazonS3/latest/userguide/managing-acls.html)」を参照してください。**

**各ログファイルの ACL**  
バケットの ACL に加えて、各ログファイルの ACL があります。バケット所有者にはログファイルに対する `FULL_CONTROL` アクセス許可があり、ディストリビューション所有者 (バケット所有者と異なる場合) にはアクセス許可がありません。`awslogsdelivery` アカウントには読み取りアクセス許可と書き込みアクセス許可があります。

**ログ記録の無効化**  
ログ記録を無効にしても、CloudFront ではバケットやログファイルの ACL が削除されません。ACL は、必要に応じて削除できます。

### SSE-KMS バケット必須のキーポリシー
<a name="AccessLogsKMSPermissions"></a>

標準ログ用の S3 バケットで、カスタマーマネージド型キーを使用する AWS KMS keys (SSE-KMS) を用いたサーバー側の暗号化が使用されている場合は、カスタマーマネージド型キーのキーポリシーに次のステートメントを追加する必要があります。これにより、CloudFront はログファイルをバケットに書き込むことができます。AWS マネージドキー で SSE-KMS を使用することはできません (CloudFront はログファイルをバケットに書き込むことができないため)。

```
{
    "Sid": "Allow CloudFront to use the key to deliver logs",
    "Effect": "Allow",
    "Principal": {
        "Service": "delivery.logs.amazonaws.com"
    },
    "Action": "kms:GenerateDataKey*",
    "Resource": "*"
}
```

標準ログの S3 バケットで [S3 バケットキー](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucket-key.html)を有する SSE-KMS を使用する場合は、ポリシーステートメントに `kms:Decrypt` 許可を追加する必要もあります。この場合、完全なポリシーステートメントは次のようになります。

```
{
    "Sid": "Allow CloudFront to use the key to deliver logs",
    "Effect": "Allow",
    "Principal": {
        "Service": "delivery.logs.amazonaws.com"
    },
    "Action": [
        "kms:GenerateDataKey*",
        "kms:Decrypt"
    ],
    "Resource": "*"
}
```

**注記**  
S3 バケットで SSE-KMS を有効にするときは、カスタマーマネージドキーの完全な ARN を指定します。詳細については、「*Amazon Simple Storage Service ユーザーガイド*」の「[AWS KMS keys (SSE-KMS) によるサーバー側の暗号化の指定](https://docs.aws.amazon.com/AmazonS3/latest/userguide/specifying-kms-encryption.html)」を参照してください。

## 標準ログ記録 (レガシー) を有効にする
<a name="standard-logs-legacy-enable"></a>

標準ログを有効にするには、CloudFront コンソールまたは CloudFront API を使用します。

**Contents**
+ [標準ログ記録 (レガシー) を有効にする (CloudFront コンソール）](#standard-logs-legacy-enable-console)
+ [標準ログ記録 (レガシー) を有効にする (CloudFront API)](#standard-logs-legacy-enable-api)

### 標準ログ記録 (レガシー) を有効にする (CloudFront コンソール）
<a name="standard-logs-legacy-enable-console"></a>

**CloudFront ディストリビューションの標準ログを有効にするには (コンソール）**

1. CloudFront コンソールを使用して、[新しいディストリビューションを作成](distribution-web-creating-console.md)するか、[既存のディストリビューションを更新](HowToUpdateDistribution.md#HowToUpdateDistributionProcedure)します。

1. **[標準ログ記録]** セクションの **[ログ配信]** で、**[オン]** を選択します。

1. (オプション) **[cookie ログ記録]** で、ログに cookie を含める場合は **[オン]** を選択します。詳細については、「[cookie のログ作成](DownloadDistValuesGeneral.md#DownloadDistValuesCookieLogging)」を参照してください。
**ヒント**  
cookie ログ記録は、ディストリビューションの*すべて*の標準ログに適用されるグローバル設定です。この設定を個別の配信先で上書きすることはできません。

1. **[配信先]** セクションで、**[Amazon S3 (レガシー)]** を指定します。

1. Amazon S3 バケットを指定します。バケットがまだない場合は、**[作成]** を選択するか、ドキュメントを参照して[バケットを作成](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html)できます。

1. (オプション) **[ログプレフィックス]** で、このディストリビューションのアクセスログファイル名の先頭に CloudFront で追加する文字列 (ある場合) を指定します (例: `exampleprefix/`)。末尾のスラッシュ (/) はオプションですが、ログファイルの参照を容易にするためにこれを使用することをお勧めします。詳細については、「[ログのプレフィックス](DownloadDistValuesGeneral.md#DownloadDistValuesLogPrefix)」を参照してください。

1. ディストリビューションを更新または作成する手順を完了します。

1. **[ログ]** ページで、標準ログのステータスが、ディストリビューションの横で **[有効]** になっていることを確認します。

   標準ログ記録の配信とログフィールドの詳細については、「[標準ログ記録リファレンス](standard-logs-reference.md)」を参照してください。

### 標準ログ記録 (レガシー) を有効にする (CloudFront API)
<a name="standard-logs-legacy-enable-api"></a>

CloudFront API を使用して、ディストリビューションの標準ログを有効にすることもできます。

**ディストリビューションの標準ログを有効にするには (CloudFront API)**
+ [CreateDistribution](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_CreateDistribution.html) または [UpdateDistribution](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_UpdateDistribution.html) API オペレーションを使用して、[LoggingConfig](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_LoggingConfig.html) オブジェクトを設定します。

## 標準ログ記録設定を編集する
<a name="ChangeSettings"></a>

ログ記録の有効化および無効化、ログを保存する Amazon S3 バケットの変更、ログファイルのプレフィックスの変更は、[CloudFront コンソール](https://console.aws.amazon.com/cloudfront/v4/home)または CloudFront API を使用して行うことができます。ログ作成設定の変更は 12 時間以内に有効になります。

詳細については、以下のトピックを参照してください。
+ CloudFront コンソールを使用してディストリビューションを更新するには、「[ディストリビューションを更新する](HowToUpdateDistribution.md)」を参照してください。
+ CloudFront API を使用してディストリビューションを更新する方法については、*Amazon CloudFront API リファレンス*の「[UpdateDistribution](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_UpdateDistribution.html)」を参照してください。

## ログを Amazon S3 に送信する
<a name="standard-logs-in-s3"></a>

ログを Amazon S3 に送信すると、ログは次の形式で表示されます。

### ファイル名の形式
<a name="AccessLogsFileNaming"></a>

CloudFront が Amazon S3 バケットに保存する各ログファイルの名前には、次のファイル名形式が使用されます。

`<optional prefix>/<distribution ID>.YYYY-MM-DD-HH.unique-ID.gz`

日付と時刻は協定世界時 (UTC) です。

たとえば、`example-prefix` をプレフィックスとして使用している場合に、ディストリビューション ID が `EMLARXS9EXAMPLE` であれば、ファイル名は次のようになります。

`example-prefix/EMLARXS9EXAMPLE.2019-11-14-20.RT4KCN4SGK9.gz`

ディストリビューションのログ記録を有効にする際には、ファイル名のプレフィックスをオプションで指定できます。これにより、どのログファイルがどのディストリビューションに関連しているか追跡できます。ログファイルのプレフィックスの値を指定した場合、プレフィックスがスラッシュ (`/`) で終わらない場合は、CloudFront によって自動的に追加されます。プレフィックスがスラッシュで終わる場合、CloudFront はスラッシュを追加しません。

ファイル名の末尾にある `.gz` は、CloudFront によってログファイルが gzip で圧縮されたことを示しています。

## 標準ログファイル形式
<a name="LogFileFormat"></a>

ログファイルには、1 つのビューワーリクエストの詳細が 1 エントリとして記録されます。ログファイルの特性は次のとおりです。
+ [W3C 拡張ログファイル形式](https://www.w3.org/TR/WD-logfile.html)を使用します。
+ タブ区切りの値が含まれます。
+ レコードが必ずしも時系列順に含まれているとは限りません。
+ 2 つのヘッダー行が含まれます。1 つのヘッダー行にファイル形式のバージョンが示され、もう 1 つのヘッダー行に、各レコードに含まれる W3C フィールドが示されます。
+ フィールド値に URL エンコードされたスペースおよび特定の他の文字を含めます。

  URL エンコードされた同等の文字は、次の文字に使用されます。
  + ASCII 文字コード 0～32 以内
  + ASCII 文字コード 127 以上
  + 次の表のすべての文字

  URL エンコーディング標準は [RFC 1738](https://tools.ietf.org/html/rfc1738.html) で定義されています。


|  URL エンコードされた値  |  文字  | 
| --- | --- | 
|  %3C  |  <  | 
|  %3E  |  >  | 
|  %22  |  "  | 
|  %23  |  \$1  | 
|  %25  |  %  | 
|  %7B  |  \$1  | 
|  %7D  |  \$1  | 
|  %7C  |  \$1  | 
|  %5C  |  \$1  | 
|  %5E  |  ^  | 
|  %7E  |  \$1  | 
|  %5B  |  [  | 
|  %5D  |  ]  | 
|  %60  |  `  | 
|  %27  |  '  | 
|  %20  |  スペース  | 

## ログファイルを削除する
<a name="DeletingLogFiles"></a>

CloudFront は、Amazon S3 バケットからログファイルを自動的には削除しません。Amazon S3 バケットからログファイルを削除する方法については、「*Amazon Simple Storage Service コンソールユーザーガイド*」の「[オブジェクトの削除](https://docs.aws.amazon.com/AmazonS3/latest/userguide/DeletingObjects.html)」を参照してください。

## 料金
<a name="AccessLogsCharges"></a>

標準ログ記録は、CloudFront のオプション機能です。CloudFront では、標準ログの有効化には料金がかかりません。ただし、Amazon S3 でのファイルの保存とアクセスには通常の Amazon S3 料金が発生します。ファイルはいつでも削除できます。

Amazon S3 の料金に関する詳細については、「[Amazon S3 の料金](https://aws.amazon.com/s3/pricing/)」を参照してください。

CloudFront の料金の詳細については、「[CloudFront の料金](https://aws.amazon.com/cloudfront/pricing/)」を参照してください。

# 標準ログ記録リファレンス
<a name="standard-logs-reference"></a>

以下のセクションは、標準ログ記録 (v2) と標準ログ記録 (レガシー) の両方に該当します。

**Topics**
+ [ログファイル配信のタイミング](#access-logs-timing)
+ [リクエスト URL またはヘッダーが最大のサイズを超えた場合にリクエストがどのようにログに記録されるか](#access-logs-request-URL-size)
+ [ログファイルのフィールド](#BasicDistributionFileFormat)
+ [ログを分析する](#access-logs-analyzing)

## ログファイル配信のタイミング
<a name="access-logs-timing"></a>

CloudFront は、ディストリビューションのログを 1 時間に最大で数回配信します。一般的に、ログファイルには、一定期間内に CloudFront が受信したリクエストに関する情報が含まれています。CloudFront は通常、その期間のログファイルを、ログにイベントが表示されてから 1 時間以内に送信先に配信します。ただし、ある期間のログファイルエントリの一部またはすべてが、最大で 24 時間遅れることもあります。ログエントリが遅れた場合、CloudFront はこれらをログファイルに保存します。ファイル名には、ファイルの配信日時ではなく、リクエストが*発生した*期間の日時が使用されます。

CloudFront は、ログファイルを作成する場合、ログファイルに対応する期間中にオブジェクトについてリクエストを受信したすべてのエッジロケーションから、ディストリビューションの情報を集約します。

CloudFront は、ディストリビューションに関連付けられているオブジェクトについて CloudFront が受信したリクエストの数により、1 つの期間に対して複数のファイルを保存することもできます。

CloudFront によるアクセスログの出力が確実に行われるのは、ログ記録が有効になって約 4 時間後からです。この時間以前にも少しのアクセスログを取得できる場合もあります。

**注記**  
期間中にオブジェクトに対してユーザーによるリクエストがなければ、その期間のログファイルは配信されません。

## リクエスト URL またはヘッダーが最大のサイズを超えた場合にリクエストがどのようにログに記録されるか
<a name="access-logs-request-URL-size"></a>

クッキーを含むすべてのリクエストヘッダーの合計サイズが 20 KB を超える場合、または URL が 8192 バイトの URL サイズ制限を超える場合、CloudFront ではリクエストを完全に解析できないため、リクエストをログに記録できません。リクエストがログ記録されないため、返された HTTP エラーステータスコードをログファイルで表示できません。

リクエストボディが最大サイズを超えると、HTTP エラー状態コードを含むリクエストがログに記録されます。

## ログファイルのフィールド
<a name="BasicDistributionFileFormat"></a>

ディストリビューションのログファイルには、33 のフィールドが含まれています。次のリストは、各フィールド名と、そのフィールドに保持される情報の説明を順番に示しています。

1. **`date`**

   イベントが発生した日付。`YYYY-MM-DD` 形式です。例えば、`2019-06-30`。日付と時刻は協定世界時 (UTC) です。WebSocket 接続の場合、これは接続が閉じた日付です。

1. **`time`**

   CloudFront サーバーがリクエストへの対応を完了した時刻 (UTC) (`01:42:39` など)。WebSocket 接続の場合、これは接続を閉じる時間です。

1. **`x-edge-location`**

   リクエストを処理したエッジロケーション。各エッジロケーションは、3 文字コードと、割り当てられた任意の数字で識別されます (例: DFW3)。通常、この 3 文字コードは、エッジロケーションの地理的場所の近くにある空港の、国際航空運送協会 (IATA) の空港コードに対応します。(これらの略語は今後変更される可能性があります)。

1. **`sc-bytes`**

   サーバーがリクエストに応じてビューワーに送信したデータ (ヘッダーを含む) のバイトの合計数。WebSocket および gRPC 接続の場合、これは接続を経由してサーバーからクライアントに送信した合計バイト数です。

1. **`c-ip`**

   リクエスト元のビューワーの IP アドレス (`192.0.2.183` または `2001:0db8:85a3::8a2e:0370:7334` など)。ビューワーが HTTP プロキシまたはロードバランサーを使用してリクエストを送った場合、このフィールドの値はプロキシまたはロードバランサーの IP アドレスです。`x-forwarded-for` フィールドも参照してください。

1. **`cs-method`**

   ビューワーから受信した HTTP リクエストメソッド。

1. **`cs(Host)`**

   CloudFront ディストリビューションのドメイン名 (d111111abcdef8.cloudfront.net など)。

1. **`cs-uri-stem`**

   パスとオブジェクトを識別するリクエスト URL の部分 (`/images/cat.jpg` など)。URL 内の疑問符 (?) およびクエリ文字列はログに含まれません。

1. **`sc-status`**

   次のいずれかの値が含まれます。
   + サーバーのレスポンスの HTTP ステータスコード (例: `200`)。
   + `000`。この値は、サーバーがリクエストに応答する前に、ビューワーが接続を閉じたことを示します。サーバーがレスポンスの送信を開始した後にビューワーが接続を閉じた場合、このフィールドには、サーバーが送信を開始したレスポンスの HTTP ステータスコードが含まれます。

1. **`cs(Referer)`**

   リクエスト内の `Referer` ヘッダーの値。これはリクエスト元のドメインの名前です。一般的なリファラーとして、検索エンジン、オブジェクトに直接リンクされた他のウェブサイト、ユーザー自身のウェブサイトなどがあります。

1. **`cs(User-Agent)`**

   リクエスト内の `User-Agent` ヘッダーの値。`User-Agent` ヘッダーでリクエスト元 (リクエスト元のデバイスとブラウザのタイプなど) が識別されます。リクエスト元が検索エンジンの場合は、どの検索エンジンかも識別されます。

1. **`cs-uri-query`**

   リクエスト URL のクエリ文字列の部分 (ある場合)。

   URL にクエリ文字列が含まれない場合、このフィールドの値はハイフン (-) です。詳細については、「[クエリ文字列パラメータに基づいてコンテンツをキャッシュする](QueryStringParameters.md)」を参照してください。

1. **`cs(Cookie)`**

   名前と値のペアおよび関連属性を含む、リクエスト内の `Cookie` ヘッダー。

   Cookie のログ作成を有効にした場合は、どの Cookie についてオリジンの転送を指定したかに関係なく、CloudFront ではすべてのリクエスト内の Cookie がログに記録されます。リクエストに Cookie ヘッダーが含まれていない場合、このフィールドの値はハイフン (-) です。Cookie の詳細については、「[Cookie に基づいてコンテンツをキャッシュする](Cookies.md)」を参照してください。

1. **`x-edge-result-type`**

   サーバーが、最後のバイトを渡した後で、レスポンスを分類した方法。場合によっては、サーバーがレスポンスを送る準備ができたときから、サーバーがレスポンスを送り終わるまでの間に、結果タイプが変わることがあります。`x-edge-response-result-type` フィールドも参照してください。

   例えば、HTTP ストリーミングで、サーバーがキャッシュ内でストリームのセグメントを検出するとします。そのシナリオでは、このフィールドの値は、通常 `Hit` になります。この場合、サーバーがセグメント全体を配信する前にビューワーが接続を閉じると、最終結果タイプ (およびこのフィールドの値) は `Error` になります。

   WebSocket および gRPC 接続の場合、コンテンツがキャッシュ可能ではなく、オリジンに直接プロキシされるため、このフィールドの値は `Miss` になります。

   以下に示しているのは、可能な値です。
   + `Hit` – サーバーがキャッシュからビューワーにオブジェクトを渡しました。
   + `RefreshHit` – サーバーはキャッシュ内でオブジェクトを検出しましたが、オブジェクトの有効期限が切れていたため、サーバーはオリジンに問い合わせて、キャッシュ内に最新バージョンのオブジェクトがあるかどうかを確認しました。
   + `Miss` – キャッシュ内のオブジェクトでリクエストに対応できなかったため、サーバーはリクエストをオリジンに転送して結果をビューワーに返しました。
   + `LimitExceeded` – CloudFront クォータ (以前は制限と呼ばれていました) を超えたため、リクエストは拒否されました。
   + `CapacityExceeded` – リクエストの受信時にサーバーの容量不足でオブジェクトを渡すことができなかったために、サーバーから HTTP 503 ステータスコードが返されました。
   + `Error` – 通常、これはリクエストがクライアントエラーとなった (`sc-status` フィールドが `4xx` 範囲内の値となる)、またはサーバーエラーになった (`sc-status` フィールドが `5xx` 範囲内の値となる) ことを意味します。`sc-status` フィールドの値が `200` であるか、このフィールドの値が `Error` で、`x-edge-response-result-type` フィールドの値が `Error` でない場合は、HTTP リクエストは成功したが、クライアントがすべてのバイトを受信する前に切断されたことを意味します。
   + `Redirect` – サーバーは、ディストリビューション設定に従って HTTP から HTTPS にビューワーをリダイレクトしました。
   + `LambdaExecutionError` – ディストリビューションに関連付けられた Lambda@Edge 関数は、不正な関連付け、関数のタイムアウト、‭AWS の依存関係の問題、または別の一般的な可用性の問題が原因で完了しませんでした。

1. **`x-edge-request-id`**

   リクエストを一意に識別する不透明な文字列。CloudFront では、この文字列を `x-amz-cf-id` レスポンスヘッダーでも送信します。

1. **`x-host-header`**

   ビューワーが、このリクエストの `Host` ヘッダーに追加した値。オブジェクトの URL に CloudFront ドメイン名を使用している場合 (d111111abcdef8.cloudfront.net など)、このフィールドにはそのドメイン名が含まれます。代替ドメイン名 (CNAME) をオブジェクト URL (www.example.com) に使用している場合、このフィールドにはその代替ドメイン名が含まれます。

   代替ドメイン名を使っている場合には、フィールド 7 の `cs(Host)` で、ユーザーのディストリビューションに関連するドメイン名を確認します。

1. **`cs-protocol`**

   ビューワーリクエストのプロトコル (`http`、`https`、`grpcs`、`ws`、または `wss`)。

1. **`cs-bytes`**

   ビューワーがリクエストに含めたデータ (ヘッダーを含む) のバイトの合計数。WebSocket および gRPC 接続の場合、これは接続を経由してクライアントからサーバーに送信した合計バイト数です。

1. **`time-taken`**

   サーバーが、ビューワーのリクエストを受信してからレスポンスの最後のバイトを出力キューに書き込むまでの秒数。サーバーで 1,000 分の 1 秒単位まで測定されます (例: 0.082)。ビューワーから見た場合、レスポンス全体を取得する合計所要時間は、ネットワークのレイテンシーと TCP バッファリングにより、この値よりも長くなります。

1. **`x-forwarded-for`**

   ビューワーが HTTP プロキシまたはロードバランサーを使用してリクエストを送信した場合、`c-ip` フィールドの値はプロキシまたはロードバランサーの IP アドレスです。この場合、このフィールドはリクエスト元のビューワーの IP アドレスです。このフィールドには、複数の IP アドレスをカンマで区切って含めることができます。各 IP アドレスは、IPv4 アドレス (`192.0.2.183` など) または IPv6 アドレス (`2001:0db8:85a3::8a2e:0370:7334` など) にすることができます。

   ビューワーが HTTP プロキシまたはロードバランサーを使用しなかった場合、このフィールドの値はハイフン (-) です。

1. **`ssl-protocol`**

   リクエストが HTTPS を使用した場合、このフィールドには、リクエストとレスポンスを送信するためにビューワーとサーバーがネゴシエートした SSL/TLS プロトコルが含まれます。指定可能な値のリストについては、[ビューワーと CloudFront との間でサポートされているプロトコルと暗号](secure-connections-supported-viewer-protocols-ciphers.md) でサポートされている SSL/TLS プロトコルを参照してください。

   フィールド 17 の `cs-protocol` が `http` である場合、このフィールドの値はハイフン (-) です。

1. **`ssl-cipher`**

   リクエストが HTTPS を使用した場合、このフィールドには、リクエストとレスポンスを暗号化するためにビューワーとサーバーがネゴシエートした SSL/TLS 暗号が含まれます。使用できる値のリストについては、「[ビューワーと CloudFront との間でサポートされているプロトコルと暗号](secure-connections-supported-viewer-protocols-ciphers.md)」で、サポートされている SSL/TLS 暗号化を参照してください。

   フィールド 17 の `cs-protocol` が `http` である場合、このフィールドの値はハイフン (-) です。

1. **`x-edge-response-result-type`**

   ビューワーにレスポンスを返す直前にサーバーがレスポンスを分類した方法。`x-edge-result-type` フィールドも参照してください。以下に示しているのは、可能な値です。
   + `Hit` – サーバーがキャッシュからビューワーにオブジェクトを渡しました。
   + `RefreshHit` – サーバーはキャッシュ内でオブジェクトを検出しましたが、オブジェクトの有効期限が切れていたため、サーバーはオリジンに問い合わせて、キャッシュ内に最新バージョンのオブジェクトがあるかどうかを確認しました。
   + `Miss` – キャッシュ内のオブジェクトでリクエストに対応できなかったため、サーバーはリクエストをオリジンサーバーに転送して結果をビューワーに返しました。
   + `LimitExceeded` – CloudFront クォータ (以前は制限と呼ばれていました) を超えたため、リクエストは拒否されました。
   + `CapacityExceeded` – リクエストの受信時にサーバーの容量不足でオブジェクトを渡すことができなかったために、サーバーから 503 エラーが返されました。
   + `Error` – 通常、これはリクエストがクライアントエラーとなった (`sc-status` フィールドが `4xx` 範囲内の値となる)、またはサーバーエラーになった (`sc-status` フィールドが `5xx` 範囲内の値となる) ことを意味します。

     `x-edge-result-type` フィールドの値が `Error` であり、このフィールドの値が `Error` でない場合、ダウンロードが完了する前にクライアントが切断されました。
   + `Redirect` – サーバーは、ディストリビューション設定に従って HTTP から HTTPS にビューワーをリダイレクトしました。
   + `LambdaExecutionError` – ディストリビューションに関連付けられた Lambda@Edge 関数は、不正な関連付け、関数のタイムアウト、‭AWS の依存関係の問題、または別の一般的な可用性の問題が原因で完了しませんでした。

1. **`cs-protocol-version`**

   ビューワーがリクエストで指定した HTTP バージョン。指定できる値には、`HTTP/0.9`、`HTTP/1.0`、`HTTP/1.1`、`HTTP/2.0`および `HTTP/3.0` などがあります。

1. **`fle-status`**

   [フィールドレベル暗号化](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/field-level-encryption.html)がディストリビューション用に設定されている場合、このフィールドにはリクエストボディが正常に処理されたかどうかを示すコードが含まれます。サーバーがリクエストボディを正常に処理し、指定したフィールドの値を暗号化してリクエストをオリジンに転送すると、このフィールドの値は `Processed` になります。`x-edge-result-type` の値は、この場合でもクライアント側またはサーバー側のエラーを示すことができます。

   このフィールドで使用できる値は次のとおりです。
   + `ForwardedByContentType` – コンテンツタイプが設定されていないため、サーバーは解析や暗号化を行わずにリクエストをオリジンに転送しました。
   + `ForwardedByQueryArgs` – フィールドレベル暗号化の設定にないクエリ引数がリクエストに含まれているため、サーバーは解析や暗号化を行わずにリクエストをオリジンに転送しました。
   + `ForwardedDueToNoProfile` – フィールドレベル暗号化の設定でプロファイルを指定しなかったため、サーバーは解析や暗号化を行わずにリクエストをオリジンに転送しました。
   + `MalformedContentTypeClientError` `Content-Type` – ヘッダーの値が無効な形式であるため、サーバーはリクエストを拒否し、HTTP 400 ステータスコードをビューワーに返しました。
   + `MalformedInputClientError` – リクエストボディが無効な形式であるため、サーバーはリクエストを拒否し、HTTP 400 ステータスコードをビューワーに返しました。
   + `MalformedQueryArgsClientError` – クエリ引数が空であるか無効な形式であるため、サーバーはリクエストを拒否し、HTTP 400 ステータスコードをビューワーに返しました。
   + `RejectedByContentType` – フィールドレベル暗号化の設定でコンテンツタイプを指定しなかったため、サーバーはリクエストを拒否し、HTTP 400 ステータスコードをビューワーに返しました。
   + `RejectedByQueryArgs` – フィールドレベル暗号化の設定でクエリ引数を指定しなかったため、サーバーはリクエストを拒否し、HTTP 400 ステータスコードをビューワーに返しました。
   + `ServerError` – オリジンサーバーがエラーを返しました。

   リクエストがフィールドレベル暗号化のクォータ (以前は制限と呼ばれていました) を超えた場合、このフィールドには次のいずれかのエラーコードが含まれ、サーバーは HTTP ステータスコード 400 をビューワーに返します。フィールドレベル暗号化に関する最新のクォータのリストについては、「[フィールドレベル暗号化のクォータ](cloudfront-limits.md#limits-field-level-encryption)」を参照してください。
   + `FieldLengthLimitClientError` – 暗号化されるように設定されているフィールドが最大の長さを超えています。
   + `FieldNumberLimitClientError` – ディストリビューションによって暗号化されるように設定されているリクエストがフィールド数の制限を超えています。
   + `RequestLengthLimitClientError` – フィールドレベル暗号化が設定されている場合にリクエストボディが最大の長さを超えています。

   フィールドレベル暗号化がディストリビューション用に設定されていない場合、このフィールドの値はハイフン (-) です。

1. **`fle-encrypted-fields`**

   サーバーが暗号化してオリジンに転送した[フィールドレベル暗号化](field-level-encryption.md)フィールドの数。CloudFront サーバーは処理されたリクエストをオリジンにストリーミングするときにデータを暗号化するため、`fle-status` の値がエラーであっても、このフィールドに値が渡されている場合があります。

   フィールドレベル暗号化がディストリビューション用に設定されていない場合、このフィールドの値はハイフン (-) です。

1. **`c-port`**

   閲覧者からのリクエストのポート番号。

1. **`time-to-first-byte`**

   サーバー上で測定される、要求を受信してから応答の最初のバイトを書き込むまでの秒数。

1. **`x-edge-detailed-result-type`**

   このフィールドには、以下の場合を除き、`x-edge-result-type` フィールドと同じ値が含まれます。
   + オブジェクトが [Origin Shield](origin-shield.md) レイヤーからビューワーに渡された場合、このフィールドには `OriginShieldHit` が含まれています。
   + オブジェクトが CloudFront キャッシュに存在せず、レスポンスが[オリジンリクエストの Lambda@Edge 関数](lambda-at-the-edge.md)によって生成された場合、このフィールドには `MissGeneratedResponse` が含まれます。
   + `x-edge-result-type` フィールドの値が `Error` の場合、このフィールドにはエラーに関する詳細情報を含む次のいずれかの値が含まれます。
     + `AbortedOrigin` – サーバーでオリジンに関する問題が発生しました。
     + `ClientCommError` – サーバーとビューワーとの通信の問題により、ビューワーへのレスポンスが中断されました。
     + `ClientGeoBlocked` – ディストリビューションは、ビューワーの地理的位置からのリクエストを拒否するように設定されています。
     + `ClientHungUpRequest` – リクエストの送信中にビューワーが途中で停止しました。
     + `Error` – エラータイプが他のどのカテゴリにも適合しないエラーが発生しました。このエラータイプは、キャッシュからのエラーレスポンスをサーバーが渡すときに発生する可能性があります。
     + `InvalidRequest` – サーバーがビューワーから無効なリクエストを受信しました。
     + `InvalidRequestBlocked` – 要求されたリソースへのアクセスがブロックされます。
     + `InvalidRequestCertificate` – ディストリビューションが、HTTPS 接続の確立に使用した SSL/TLS 証明書と一致しません。
     + `InvalidRequestHeader` – リクエストに無効なヘッダーが含まれていました。
     + `InvalidRequestMethod` – ディストリビューションは、使用された HTTP リクエストメソッドを処理するように設定されていません。これは、ディストリビューションがキャッシュ可能なリクエストのみをサポートしている場合に発生します。
     + `OriginCommError` — オリジンに接続中、またはオリジンからデータを読み取るときに、リクエストがタイムアウトしました。
     + `OriginConnectError` – サーバーがオリジンに接続できませんでした。
     + `OriginContentRangeLengthError` – オリジンのレスポンスの `Content-Length` ヘッダーが、`Content-Range` ヘッダーの長さと一致しません。
     + `OriginDnsError` – サーバーがオリジンのドメイン名を解決できませんでした。
     + `OriginError` – オリジンが誤ったレスポンスを返しました。
     + `OriginHeaderTooBigError` – オリジンから返されたヘッダーが大きすぎてエッジサーバーで処理できません。
     + `OriginInvalidResponseError` – オリジンが無効なレスポンスを返しました。
     + `OriginReadError` – サーバーがオリジンから読み取れませんでした。
     + `OriginWriteError` – サーバーがオリジンに書き込めませんでした。
     + `OriginZeroSizeObjectError` – オリジンから送信されたサイズゼロのオブジェクトがエラーになりました。
     + `SlowReaderOriginError` – オリジンエラーの原因となったメッセージの読み取りに時間がかかりました。

1. **`sc-content-type`**

   レスポンスの HTTP `Content-Type` ヘッダーの値。

1. **`sc-content-len`**

   レスポンスの HTTP `Content-Length` ヘッダーの値。

1. **`sc-range-start`**

   レスポンスに HTTP `Content-Range` ヘッダーが含まれている場合、このフィールドには範囲の開始値が含まれます。

1. **`sc-range-end`**

   レスポンスに HTTP `Content-Range` ヘッダーが含まれている場合、このフィールドには範囲の終了値が含まれます。

1. **`distribution-tenant-id`**

   ディストリビューションテナントの ID。

1. **`connection-id`**

   TLS 接続の一意の識別子です。

   このフィールドの情報を取得する前に、ディストリビューションの mTLS を有効にする必要があります。詳細については、「[CloudFront による相互 TLS 認証 (Viewer mTLS)オリジンの相互 TLS と CloudFront](mtls-authentication.md)」を参照してください。

   

ディストリビューションのログファイルの例を以下に示します。

```
#Version: 1.0
#Fields: date time x-edge-location sc-bytes c-ip cs-method cs(Host) cs-uri-stem sc-status cs(Referer) cs(User-Agent) cs-uri-query cs(Cookie) x-edge-result-type x-edge-request-id x-host-header cs-protocol cs-bytes time-taken x-forwarded-for ssl-protocol ssl-cipher x-edge-response-result-type cs-protocol-version fle-status fle-encrypted-fields c-port time-to-first-byte x-edge-detailed-result-type sc-content-type sc-content-len sc-range-start sc-range-end
2019-12-04	21:02:31	LAX1	392	192.0.2.100	GET	d111111abcdef8.cloudfront.net	/index.html	200	-	Mozilla/5.0%20(Windows%20NT%2010.0;%20Win64;%20x64)%20AppleWebKit/537.36%20(KHTML,%20like%20Gecko)%20Chrome/78.0.3904.108%20Safari/537.36	-	-	Hit	SOX4xwn4XV6Q4rgb7XiVGOHms_BGlTAC4KyHmureZmBNrjGdRLiNIQ==	d111111abcdef8.cloudfront.net	https	23	0.001	-	TLSv1.2	ECDHE-RSA-AES128-GCM-SHA256	Hit	HTTP/2.0	-	-	11040	0.001	Hit	text/html	78	-	-
2019-12-04	21:02:31	LAX1	392	192.0.2.100	GET	d111111abcdef8.cloudfront.net	/index.html	200	-	Mozilla/5.0%20(Windows%20NT%2010.0;%20Win64;%20x64)%20AppleWebKit/537.36%20(KHTML,%20like%20Gecko)%20Chrome/78.0.3904.108%20Safari/537.36	-	-	Hit	k6WGMNkEzR5BEM_SaF47gjtX9zBDO2m349OY2an0QPEaUum1ZOLrow==	d111111abcdef8.cloudfront.net	https	23	0.000	-	TLSv1.2	ECDHE-RSA-AES128-GCM-SHA256	Hit	HTTP/2.0	-	-	11040	0.000	Hit	text/html	78	-	-
2019-12-04	21:02:31	LAX1	392	192.0.2.100	GET	d111111abcdef8.cloudfront.net	/index.html	200	-	Mozilla/5.0%20(Windows%20NT%2010.0;%20Win64;%20x64)%20AppleWebKit/537.36%20(KHTML,%20like%20Gecko)%20Chrome/78.0.3904.108%20Safari/537.36	-	-	Hit	f37nTMVvnKvV2ZSvEsivup_c2kZ7VXzYdjC-GUQZ5qNs-89BlWazbw==	d111111abcdef8.cloudfront.net	https	23	0.001	-	TLSv1.2	ECDHE-RSA-AES128-GCM-SHA256	Hit	HTTP/2.0	-	-	11040	0.001	Hit	text/html	78	-	-	
2019-12-13	22:36:27	SEA19-C1	900	192.0.2.200	GET	d111111abcdef8.cloudfront.net	/favicon.ico	502	http://www.example.com/	Mozilla/5.0%20(Windows%20NT%2010.0;%20Win64;%20x64)%20AppleWebKit/537.36%20(KHTML,%20like%20Gecko)%20Chrome/78.0.3904.108%20Safari/537.36	-	-	Error	1pkpNfBQ39sYMnjjUQjmH2w1wdJnbHYTbag21o_3OfcQgPzdL2RSSQ==	www.example.com	http	675	0.102	-	-	-	Error	HTTP/1.1	-	-	25260	0.102	OriginDnsError	text/html	507	-	-
2019-12-13	22:36:26	SEA19-C1	900	192.0.2.200	GET	d111111abcdef8.cloudfront.net	/	502	-	Mozilla/5.0%20(Windows%20NT%2010.0;%20Win64;%20x64)%20AppleWebKit/537.36%20(KHTML,%20like%20Gecko)%20Chrome/78.0.3904.108%20Safari/537.36	-	-	Error	3AqrZGCnF_g0-5KOvfA7c9XLcf4YGvMFSeFdIetR1N_2y8jSis8Zxg==	www.example.com	http	735	0.107	-	-	-	Error	HTTP/1.1	-	-	3802	0.107	OriginDnsError	text/html	507	-	-
2019-12-13	22:37:02	SEA19-C2	900	192.0.2.200	GET	d111111abcdef8.cloudfront.net	/	502	-	curl/7.55.1	-	-	Error	kBkDzGnceVtWHqSCqBUqtA_cEs2T3tFUBbnBNkB9El_uVRhHgcZfcw==	www.example.com	http	387	0.103	-	-	-	Error	HTTP/1.1	-	-	12644	0.103	OriginDnsError	text/html	507	-	-
```

## ログを分析する
<a name="access-logs-analyzing"></a>

1 時間ごとに複数のアクセスログが配信される可能性があるため、特定の期間に対して受信したすべてのログファイルをまとめて 1 つのファイルにしておくことをお勧めします。これにより、その期間のデータをより正確かつ完全に分析することができます。

アクセスログを分析する方法の 1 つとして [Amazon Athena](https://aws.amazon.com/athena/) を使用する方法があります。Athena は、CloudFront を含めた AWS のサービスのデータを分析するために役立つインタラクティブなクエリサービスです。詳細については、*Amazon Athena ユーザーガイド*の「[ Amazon CloudFront ログのクエリ](https://docs.aws.amazon.com/athena/latest/ug/cloudfront-logs.html)」を参照してください。

さらに、次の AWS ブログ投稿では、アクセスログを分析するいくつかの方法について説明しています。
+ [ Amazon CloudFront Request Logging](https://aws.amazon.com/blogs/aws/amazon-cloudfront-request-logging/) (HTTP 経由で配信するコンテンツの場合)
+ [強化された CloudFront ログにクエリ文字列機能を追加](https://aws.amazon.com/blogs/aws/enhanced-cloudfront-logs-now-with-query-strings/)

# リアルタイムのアクセスログを使用する
<a name="real-time-logs"></a>

CloudFront リアルタイムアクセスログを使用すると、ディストリビューションに対するリクエストの情報をリアルタイムで取得できます (ログはリクエストを受信してから数秒以内に配信されます)。リアルタイムのアクセスログを使用して、コンテンツ配信のパフォーマンスに基づいて監視、分析、アクションを実行できます。

CloudFront リアルタイムアクセスログは設定可能です。以下を選択することができます。
+ リアルタイムログの*サンプリング率* (リアルタイムのアクセスログ記録を受信するリクエストの割合) を選択できます。
+ ログレコードで受信する特定のフィールド。
+ リアルタイムログを受信する特定のキャッシュ動作 (パスパターン)。

CloudFront リアルタイムアクセスログは、Amazon Kinesis Data Streams で選択したデータストリームに配信されます。独自の [Kinesis データストリームコンシューマー](https://docs.aws.amazon.com/streams/latest/dev/amazon-kinesis-consumers.html)を構築することも、Amazon Data Firehose を使用してログデータを Amazon Simple Storage Service (Amazon S3)、Amazon Redshift、Amazon OpenSearch Service (OpenSearch Service)、またはサードパーティーのログ処理サービスに送信することもできます。

Kinesis Data Streams の使用料金に加えて、CloudFront でのリアルタイムアクセスログの料金が発生します。料金の詳細については、「[Amazon CloudFront の料金](https://aws.amazon.com/cloudfront/pricing/)」および「[Amazon Kinesis Data Streams の料金](https://aws.amazon.com/kinesis/data-streams/pricing/)」を参照してください。

**重要**  
ログは、すべてのリクエストを完全に課金するためのものではなく、コンテンツに対するリクエストの本質を把握するものとして使用することをお勧めします。CloudFront はベストエフォートベースでリアルタイムのアクセスログを提供します。特定のリクエストのログエントリが、リクエストが実際に処理されてからかなり後に配信されることも、(まれに) 一切配信されないこともあります。ログエントリをリアルタイムのアクセスログから省略すると、リアルタイムのアクセスログ内のエントリ数は AWS の請求と使用状況レポートに表示される使用量と一致しなくなります。

**Topics**
+ [リアルタイムのアクセスログ設定を作成および使用する](#create-real-time-log-config)
+ [リアルタイムのアクセスログ設定を理解する](#understand-real-time-log-config)
+ [Kinesis Data Streams コンシューマーを作成する](#real-time-log-consumer-guidance)
+ [リアルタイムのアクセスログのトラブルシューティング](#real-time-log-troubleshooting)

## リアルタイムのアクセスログ設定を作成および使用する
<a name="create-real-time-log-config"></a>

ディストリビューションに対して行われたリクエストに関する情報をリアルタイムで取得するには、リアルタイムのアクセスログ設定を使用できます。ログは、リクエストを受信してから数秒以内に提供されます。リアルタイムのアクセスログ設定は、CloudFront コンソール、AWS Command Line Interface (AWS CLI)、または CloudFront API を使用して作成できます。

リアルタイムのアクセスログ設定を使用するには、CloudFront ディストリビューションの 1 つ以上のキャッシュ動作にアタッチします。

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

**リアルタイムのアクセスログ設定を作成するには**

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

1. **[リアルタイム設定]** タブを選択します。

1. **[設定を作成]** を選択します。

1. **[名前]** に、設定の名前を入力します。

1. **[サンプリングレート]** に、ログレコードを受信する対象のリクエストの割合を入力します。

1. **[フィールド]** で、リアルタイムのアクセスログで受信するフィールドを選択します。
   + すべての [CMCD フィールド](#CMCD-real-time-logging-fields)をログに含めるには、**[CMCD のすべてのキー]** を選択します。

1. **[エンドポイント]** で、リアルタイムのアクセスログを受信する 1 つ以上の Kinesis データストリームを選択します。
**注記**  
CloudFront のリアルタイムのアクセスログは、Kinesis Data Streams で指定したデータストリームに配信されます。リアルタイムのアクセスログを読み取って分析するには、独自の Kinesis データストリームコンシューマーを構築できます。Firehose を使用して、ログデータを Amazon S3、Amazon Redshift、Amazon OpenSearch Service、またはサードパーティーのログ処理サービスに送信することもできます。

1. **[IAM ロール]** で、**[新しいサービスロールを作成]** を選択するか、既存のロールを選択します。ただし、IAM ロールを作成するアクセス許可が必要です。

1. (オプション) **[ディストリビューション]** で、リアルタイムのアクセスログ設定にアタッチする CloudFront ディストリビューションとキャッシュビヘイビアを選択します。

1. **[設定を作成]** を選択します。

正常に終了すると、作成したリアルタイムのアクセスログ設定の詳細がコンソールに表示されます。

詳細については、「[リアルタイムのアクセスログ設定を理解する](#understand-real-time-log-config)」を参照してください。

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

AWS CLI を使用してリアルタイムのアクセスログ設定を作成するには、**aws cloudfront create-realtime-log-config** コマンドを使用します。コマンドの入力パラメータは、コマンドライン入力として個別に指定せずに、入力ファイルを使用して指定できます。

**リアルタイムのアクセスログ設定を作成するには (入力ファイルを含む CLI)**

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

   ```
   aws cloudfront create-realtime-log-config --generate-cli-skeleton yaml-input > rtl-config.yaml
   ```

1. 先ほど作成した `rtl-config.yaml` という名前のファイルを開きます。ファイルを編集して、必要なリアルタイムのアクセスログ設定を指定し、ファイルを保存します。次の点に注意してください。
   + `StreamType` では、唯一の有効な値は、`Kinesis` です。

   リアルタイムロング設定の詳細については、「[リアルタイムのアクセスログ設定を理解する](#understand-real-time-log-config)」を参照してください。

1. 次のコマンドを使用して、`rtl-config.yaml` ファイルの入力パラメータを使用してリアルタイムのアクセスログ設定を作成します。

   ```
   aws cloudfront create-realtime-log-config --cli-input-yaml file://rtl-config.yaml
   ```

成功した場合、このコマンドの出力には、先ほど作成したリアルタイムのアクセスログ設定の詳細が表示されます。

**リアルタイムのアクセスログ設定を既存のディストリビューション (入力ファイル付き CLI) にアタッチするには**

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

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

1. 先ほど作成した `dist-config.yaml` という名前のファイルを開きます。ファイルを編集し、リアルタイムのアクセスログ設定を使用するように更新する各キャッシュ動作に次の変更を加えます。
   + キャッシュ動作で、`RealtimeLogConfigArn` という名前のフィールドを追加します。フィールドの値には、このキャッシュ動作にアタッチするリアルタイムのアクセスログ設定の ARN を使用します。
   + `ETag` フィールドの名前を `IfMatch` に変更します。ただし、フィールドの値は変更しないでください。

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

1. リアルタイムのアクセスログ設定を使用するようにディストリビューションを更新するには、次のコマンドを使用します。*distribution\$1ID* をディストリビューションの ID に置き換えます。

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

成功した場合、コマンドの出力には、先ほど更新したディストリビューションの詳細が表示されます。

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

CloudFront API を使用してリアルタイムのアクセスログ設定を作成するには、[CreateRealtimeLogConfig](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_CreateRealtimeLogConfig.html) API オペレーションを使用します。これらの API コールで指定するパラメータの詳細については、「[リアルタイムのアクセスログ設定を理解する](#understand-real-time-log-config)」と、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 オペレーションの両方について、キャッシュ動作内で、`RealtimeLogConfigArn` フィールドにリアルタイムのアクセスログ設定の ARN を指定します。これらの API コールで指定するその他フィールドの詳細については、「[すべてのディストリビューション設定リファレンス](distribution-web-values-specify.md)」と、AWS SDK またはその他 API クライアントの API リファレンスドキュメントを参照してください。

------

## リアルタイムのアクセスログ設定を理解する
<a name="understand-real-time-log-config"></a>

CloudFront リアルタイムのアクセスログを使用するには、まずリアルタイムのアクセスログ設定を作成します。リアルタイムのアクセスログ設定には、受信するログフィールド、ログレコードの *サンプリングレート*、およびログを配信する Kinesis データストリームに関する情報が含まれます。

具体的には、リアルタイムのアクセスログ設定には、次の設定が含まれます。

**Contents**
+ [名前](#real-time-logs-name)
+ [サンプリングレート](#real-time-logs-sampling-rate)
+ [フィールド](#real-time-logs-fields)
+ [エンドポイント (Kinesis Data Streams)](#real-time-logs-endpoint)
+ [IAM ロール](#real-time-logs-IAM)

### 名前
<a name="real-time-logs-name"></a>

リアルタイムのアクセスログ設定を識別する名前。

### サンプリングレート
<a name="real-time-logs-sampling-rate"></a>

サンプリングレートは、リアルタイムのアクセスログレコードとして Kinesis Data Streams に送信されるビューワーリクエストの割合を決定する 1～100 の整数です。すべてのビューワーリクエストをリアルタイムのアクセスログに含めるには、サンプリングレートに 100 を指定します。リクエストデータの代表的なサンプルをリアルタイムのアクセスログに受信しながら、コストを削減するために、より低いサンプリングレートを選択することもできます。

### フィールド
<a name="real-time-logs-fields"></a>

各リアルタイムのアクセスログレコードに含まれるフィールドのリスト。各ログレコードには、最大 40 個のフィールドを含めることができます。使用可能なすべてのフィールドを受信するか、パフォーマンスのモニタリングと分析に必要なフィールドのみを受信するかを選択できます。

次のリストは、各フィールド名と、そのフィールドに保持される情報の説明を示しています。フィールドは、Kinesis Data Streams に配信されるログレコードに表示される順序で示されています。

フィールド 46～63 は、メディアプレーヤークライアントが各リクエストで CDN に送信できる[一般的なメディアクライアントデータ (CMCD)](#CMCD-real-time-logging-fields) です。このデータを使用して、メディアタイプ (オーディオ、動画)、再生速度、ストリーミング時間など、各リクエストを確認できます。これらのフィールドは、CloudFront に送信した場合にのみ、リアルタイムのアクセスログに表示されます。

1. **`timestamp`**

   エッジサーバーがリクエストへの応答を終了した日時。

1. **`c-ip`**

   リクエスト元のビューワーの IP アドレス (`192.0.2.183` または `2001:0db8:85a3::8a2e:0370:7334` など)。ビューワーが HTTP プロキシまたはロードバランサーを使用してリクエストを送った場合、このフィールドの値はプロキシまたはロードバランサーの IP アドレスです。`x-forwarded-for` フィールドも参照してください。

1. **`s-ip`**

   リクエストを処理した CloudFront サーバーの IP アドレス。例: `192.0.2.183` または `2001:0db8:85a3::8a2e:0370:7334`。

1. **`time-to-first-byte`**

   サーバー上で測定される、要求を受信してから応答の最初のバイトを書き込むまでの秒数。

1. **`sc-status`**

   サーバーのレスポンスの HTTP ステータスコード (例: `200`)。

1. **`sc-bytes`**

   サーバーがリクエストに応じてビューワーに送信したデータ (ヘッダーを含む) のバイトの合計数。WebSocket および gRPC 接続の場合、これは接続を経由してサーバーからクライアントに送信した合計バイト数です。

1. **`cs-method`**

   ビューワーから受信した HTTP リクエストメソッド。

1. **`cs-protocol`**

   ビューワーリクエストのプロトコル (`http`、`https`、`grpcs`、`ws`、または `wss`)。

1. **`cs-host`**

   ビューワーが、このリクエストの `Host` ヘッダーに追加した値。オブジェクトの URL に CloudFront ドメイン名を使用している場合 (d111111abcdef8.cloudfront.net など)、このフィールドにはそのドメイン名が含まれます。代替ドメイン名 (CNAME) をオブジェクト URL (www.example.com) に使用している場合、このフィールドにはその代替ドメイン名が含まれます。

1. **`cs-uri-stem`**

   クエリ文字列 (存在する場合) を含むが、ドメイン名を含まないリクエスト URL 全体。例えば、`/images/cat.jpg?mobile=true`。
**注記**  
[標準ログ](AccessLogs.md)では、`cs-uri-stem` 値にクエリ文字列は含まれません。

1. **`cs-bytes`**

   ビューワーがリクエストに含めたデータ (ヘッダーを含む) のバイトの合計数。WebSocket および gRPC 接続の場合、これは接続を経由してクライアントからサーバーに送信した合計バイト数です。

1. **`x-edge-location`**

   リクエストを処理したエッジロケーション。各エッジロケーションは、3 文字コードと、割り当てられた任意の数字で識別されます (例: DFW3)。通常、この 3 文字コードは、エッジロケーションの地理的場所の近くにある空港の、国際航空運送協会 (IATA) の空港コードに対応します。(これらの略語は今後変更される可能性があります)。

1. **`x-edge-request-id`**

   リクエストを一意に識別する不透明な文字列。CloudFront では、この文字列を `x-amz-cf-id` レスポンスヘッダーでも送信します。

1. **`x-host-header`**

   CloudFront ディストリビューションのドメイン名 (d111111abcdef8.cloudfront.net など)。

1. **`time-taken`**

   サーバーが、ビューワーのリクエストを受信してからレスポンスの最後のバイトを出力キューに書き込むまでの秒数。サーバーで 1,000 分の 1 秒単位まで測定されます (例: 0.082)。ビューワーから見た場合、レスポンス全体を取得する合計所要時間は、ネットワークのレイテンシーと TCP バッファリングにより、この値よりも長くなります。

1. **`cs-protocol-version`**

   ビューワーがリクエストで指定した HTTP バージョン。指定できる値には、`HTTP/0.9`、`HTTP/1.0`、`HTTP/1.1`、`HTTP/2.0`および `HTTP/3.0` などがあります。

1. **`c-ip-version`**

   リクエストの IP バージョン (IPv4 または IPv6)。

1. **`cs-user-agent`**

   リクエスト内の `User-Agent` ヘッダーの値。`User-Agent` ヘッダーでリクエスト元 (リクエスト元のデバイスとブラウザのタイプなど) が識別されます。リクエスト元が検索エンジンの場合は、どの検索エンジンかも識別されます。

1. **`cs-referer`**

   リクエスト内の `Referer` ヘッダーの値。これはリクエスト元のドメインの名前です。一般的なリファラーとして、検索エンジン、オブジェクトに直接リンクされた他のウェブサイト、ユーザー自身のウェブサイトなどがあります。

1. **`cs-cookie`**

   名前と値のペアおよび関連属性を含む、リクエスト内の `Cookie` ヘッダー。
**注記**  
このフィールドは 800 バイトに切り捨てられます。

1. **`cs-uri-query`**

   リクエスト URL のクエリ文字列の部分 (ある場合)。

1. **`x-edge-response-result-type`**

   ビューワーにレスポンスを返す直前にサーバーがレスポンスを分類した方法。`x-edge-result-type` フィールドも参照してください。以下に示しているのは、可能な値です。
   + `Hit` – サーバーがキャッシュからビューワーにオブジェクトを渡しました。
   + `RefreshHit` – サーバーはキャッシュ内でオブジェクトを検出しましたが、オブジェクトの有効期限が切れていたため、サーバーはオリジンに問い合わせて、キャッシュ内に最新バージョンのオブジェクトがあるかどうかを確認しました。
   + `Miss` – キャッシュ内のオブジェクトでリクエストに対応できなかったため、サーバーはリクエストをオリジンサーバーに転送して結果をビューワーに返しました。
   + `LimitExceeded` – CloudFront クォータ (以前は制限と呼ばれていました) を超えたため、リクエストは拒否されました。
   + `CapacityExceeded` – リクエストの受信時にサーバーの容量不足でオブジェクトを渡すことができなかったために、サーバーから 503 エラーが返されました。
   + `Error` – 通常、これはリクエストがクライアントエラーとなった (`sc-status` フィールドが `4xx` 範囲内の値となる)、またはサーバーエラーになった (`sc-status` フィールドが `5xx` 範囲内の値となる) ことを意味します。

     `x-edge-result-type` フィールドの値が `Error` であり、このフィールドの値が `Error` でない場合、ダウンロードが完了する前にクライアントが切断されました。
   + `Redirect` – サーバーは、ディストリビューション設定に従って HTTP から HTTPS にビューワーをリダイレクトしました。
   + `LambdaExecutionError` – ディストリビューションに関連付けられた Lambda@Edge 関数は、不正な関連付け、関数のタイムアウト、‭AWS の依存関係の問題、または別の一般的な可用性の問題が原因で完了しませんでした。

1. **`x-forwarded-for`**

   ビューワーが HTTP プロキシまたはロードバランサーを使用してリクエストを送信した場合、`c-ip` フィールドの値はプロキシまたはロードバランサーの IP アドレスです。この場合、このフィールドはリクエスト元のビューワーの IP アドレスです。このフィールドには、複数の IP アドレスをカンマで区切って含めることができます。各 IP アドレスは、IPv4 アドレス (`192.0.2.183` など) または IPv6 アドレス (`2001:0db8:85a3::8a2e:0370:7334` など) にすることができます。

1. **`ssl-protocol`**

   リクエストが HTTPS を使用した場合、このフィールドには、リクエストとレスポンスを送信するためにビューワーとサーバーがネゴシエートした SSL/TLS プロトコルが含まれます。指定可能な値のリストについては、[ビューワーと CloudFront との間でサポートされているプロトコルと暗号](secure-connections-supported-viewer-protocols-ciphers.md) でサポートされている SSL/TLS プロトコルを参照してください。

1. **`ssl-cipher`**

   リクエストが HTTPS を使用した場合、このフィールドには、リクエストとレスポンスを暗号化するためにビューワーとサーバーがネゴシエートした SSL/TLS 暗号が含まれます。使用できる値のリストについては、「[ビューワーと CloudFront との間でサポートされているプロトコルと暗号](secure-connections-supported-viewer-protocols-ciphers.md)」で、サポートされている SSL/TLS 暗号化を参照してください。

1. **`x-edge-result-type`**

   サーバーが、最後のバイトを渡した後で、レスポンスを分類した方法。場合によっては、サーバーがレスポンスを送る準備ができたときから、サーバーがレスポンスを送り終わるまでの間に、結果タイプが変わることがあります。`x-edge-response-result-type` フィールドも参照してください。

   例えば、HTTP ストリーミングで、サーバーがキャッシュ内でストリームのセグメントを検出するとします。そのシナリオでは、このフィールドの値は、通常 `Hit` になります。この場合、サーバーがセグメント全体を配信する前にビューワーが接続を閉じると、最終結果タイプ (およびこのフィールドの値) は `Error` になります。

   WebSocket および gRPC 接続の場合、コンテンツがキャッシュ可能ではなく、オリジンに直接プロキシされるため、このフィールドの値は `Miss` になります。

   以下に示しているのは、可能な値です。
   + `Hit` – サーバーがキャッシュからビューワーにオブジェクトを渡しました。
   + `RefreshHit` – サーバーはキャッシュ内でオブジェクトを検出しましたが、オブジェクトの有効期限が切れていたため、サーバーはオリジンに問い合わせて、キャッシュ内に最新バージョンのオブジェクトがあるかどうかを確認しました。
   + `Miss` – キャッシュ内のオブジェクトでリクエストに対応できなかったため、サーバーはリクエストをオリジンに転送して結果をビューワーに返しました。
   + `LimitExceeded` – CloudFront クォータ (以前は制限と呼ばれていました) を超えたため、リクエストは拒否されました。
   + `CapacityExceeded` – リクエストの受信時にサーバーの容量不足でオブジェクトを渡すことができなかったために、サーバーから HTTP 503 ステータスコードが返されました。
   + `Error` – 通常、これはリクエストがクライアントエラーとなった (`sc-status` フィールドが `4xx` 範囲内の値となる)、またはサーバーエラーになった (`sc-status` フィールドが `5xx` 範囲内の値となる) ことを意味します。`sc-status` フィールドの値が `200` であるか、このフィールドの値が `Error` で、`x-edge-response-result-type` フィールドの値が `Error` でない場合は、HTTP リクエストは成功したが、クライアントがすべてのバイトを受信する前に切断されたことを意味します。
   + `Redirect` – サーバーは、ディストリビューション設定に従って HTTP から HTTPS にビューワーをリダイレクトしました。
   + `LambdaExecutionError` – ディストリビューションに関連付けられた Lambda@Edge 関数は、不正な関連付け、関数のタイムアウト、‭AWS の依存関係の問題、または別の一般的な可用性の問題が原因で完了しませんでした。

1. **`fle-encrypted-fields`**

   サーバーが暗号化してオリジンに転送した[フィールドレベル暗号化](field-level-encryption.md)フィールドの数。CloudFront サーバーは処理されたリクエストをオリジンにストリーミングするときにデータを暗号化するため、`fle-status` の値がエラーであっても、このフィールドに値が渡されている場合があります。

1. **`fle-status`**

   [フィールドレベル暗号化](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/field-level-encryption.html)がディストリビューション用に設定されている場合、このフィールドにはリクエストボディが正常に処理されたかどうかを示すコードが含まれます。サーバーがリクエストボディを正常に処理し、指定したフィールドの値を暗号化してリクエストをオリジンに転送すると、このフィールドの値は `Processed` になります。`x-edge-result-type` の値は、この場合でもクライアント側またはサーバー側のエラーを示すことができます。

   このフィールドで使用できる値は次のとおりです。
   + `ForwardedByContentType` – コンテンツタイプが設定されていないため、サーバーは解析や暗号化を行わずにリクエストをオリジンに転送しました。
   + `ForwardedByQueryArgs` – フィールドレベル暗号化の設定にないクエリ引数がリクエストに含まれているため、サーバーは解析や暗号化を行わずにリクエストをオリジンに転送しました。
   + `ForwardedDueToNoProfile` – フィールドレベル暗号化の設定でプロファイルを指定しなかったため、サーバーは解析や暗号化を行わずにリクエストをオリジンに転送しました。
   + `MalformedContentTypeClientError` `Content-Type` – ヘッダーの値が無効な形式であるため、サーバーはリクエストを拒否し、HTTP 400 ステータスコードをビューワーに返しました。
   + `MalformedInputClientError` – リクエストボディが無効な形式であるため、サーバーはリクエストを拒否し、HTTP 400 ステータスコードをビューワーに返しました。
   + `MalformedQueryArgsClientError` – クエリ引数が空であるか無効な形式であるため、サーバーはリクエストを拒否し、HTTP 400 ステータスコードをビューワーに返しました。
   + `RejectedByContentType` – フィールドレベル暗号化の設定でコンテンツタイプを指定しなかったため、サーバーはリクエストを拒否し、HTTP 400 ステータスコードをビューワーに返しました。
   + `RejectedByQueryArgs` – フィールドレベル暗号化の設定でクエリ引数を指定しなかったため、サーバーはリクエストを拒否し、HTTP 400 ステータスコードをビューワーに返しました。
   + `ServerError` – オリジンサーバーがエラーを返しました。

   リクエストがフィールドレベル暗号化のクォータ (以前は制限と呼ばれていました) を超えた場合、このフィールドには次のいずれかのエラーコードが含まれ、サーバーは HTTP ステータスコード 400 をビューワーに返します。フィールドレベル暗号化に関する最新のクォータのリストについては、「[フィールドレベル暗号化のクォータ](cloudfront-limits.md#limits-field-level-encryption)」を参照してください。
   + `FieldLengthLimitClientError` – 暗号化されるように設定されているフィールドが最大の長さを超えています。
   + `FieldNumberLimitClientError` – ディストリビューションによって暗号化されるように設定されているリクエストがフィールド数の制限を超えています。
   + `RequestLengthLimitClientError` – フィールドレベル暗号化が設定されている場合にリクエストボディが最大の長さを超えています。

1. **`sc-content-type`**

   レスポンスの HTTP `Content-Type` ヘッダーの値。

1. **`sc-content-len`**

   レスポンスの HTTP `Content-Length` ヘッダーの値。

1. **`sc-range-start`**

   レスポンスに HTTP `Content-Range` ヘッダーが含まれている場合、このフィールドには範囲の開始値が含まれます。

1. **`sc-range-end`**

   レスポンスに HTTP `Content-Range` ヘッダーが含まれている場合、このフィールドには範囲の終了値が含まれます。

1. **`c-port`**

   閲覧者からのリクエストのポート番号。

1. **`x-edge-detailed-result-type`**

   このフィールドには、以下の場合を除き、`x-edge-result-type` フィールドと同じ値が含まれます。
   + オブジェクトが [Origin Shield](origin-shield.md) レイヤーからビューワーに渡された場合、このフィールドには `OriginShieldHit` が含まれています。
   + オブジェクトが CloudFront キャッシュに存在せず、レスポンスが[オリジンリクエストの Lambda@Edge 関数](lambda-at-the-edge.md)によって生成された場合、このフィールドには `MissGeneratedResponse` が含まれます。
   + `x-edge-result-type` フィールドの値が `Error` の場合、このフィールドにはエラーに関する詳細情報を含む次のいずれかの値が含まれます。
     + `AbortedOrigin` – サーバーでオリジンに関する問題が発生しました。
     + `ClientCommError` – サーバーとビューワーとの通信の問題により、ビューワーへのレスポンスが中断されました。
     + `ClientGeoBlocked` – ディストリビューションは、ビューワーの地理的位置からのリクエストを拒否するように設定されています。
     + `ClientHungUpRequest` – リクエストの送信中にビューワーが途中で停止しました。
     + `Error` – エラータイプが他のどのカテゴリにも適合しないエラーが発生しました。このエラータイプは、キャッシュからのエラーレスポンスをサーバーが渡すときに発生する可能性があります。
     + `InvalidRequest` – サーバーがビューワーから無効なリクエストを受信しました。
     + `InvalidRequestBlocked` – 要求されたリソースへのアクセスがブロックされます。
     + `InvalidRequestCertificate` – ディストリビューションが、HTTPS 接続の確立に使用した SSL/TLS 証明書と一致しません。
     + `InvalidRequestHeader` – リクエストに無効なヘッダーが含まれていました。
     + `InvalidRequestMethod` – ディストリビューションは、使用された HTTP リクエストメソッドを処理するように設定されていません。これは、ディストリビューションがキャッシュ可能なリクエストのみをサポートしている場合に発生します。
     + `OriginCommError` — オリジンに接続中、またはオリジンからデータを読み取るときに、リクエストがタイムアウトしました。
     + `OriginConnectError` – サーバーがオリジンに接続できませんでした。
     + `OriginContentRangeLengthError` – オリジンのレスポンスの `Content-Length` ヘッダーが、`Content-Range` ヘッダーの長さと一致しません。
     + `OriginDnsError` – サーバーがオリジンのドメイン名を解決できませんでした。
     + `OriginError` – オリジンが誤ったレスポンスを返しました。
     + `OriginHeaderTooBigError` – オリジンから返されたヘッダーが大きすぎてエッジサーバーで処理できません。
     + `OriginInvalidResponseError` – オリジンが無効なレスポンスを返しました。
     + `OriginReadError` – サーバーがオリジンから読み取れませんでした。
     + `OriginWriteError` – サーバーがオリジンに書き込めませんでした。
     + `OriginZeroSizeObjectError` – オリジンから送信されたサイズゼロのオブジェクトがエラーになりました。
     + `SlowReaderOriginError` – オリジンエラーの原因となったメッセージの読み取りに時間がかかりました。

1. **`c-country`**

   ビューワーの IP アドレスによって決定される、ビューワーの地理的位置を表す国コード。国コードの一覧については、「[ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)」を参照してください。

1. **`cs-accept-encoding`**

    ビューワーリクエスト内の `Accept-Encoding` ヘッダーの値。

1. **`cs-accept`**

   ビューワーリクエスト内の `Accept` ヘッダーの値。

1. **`cache-behavior-path-pattern`**

   ビューワーリクエストに一致したキャッシュ動作を識別するパスパターン。

1. **`cs-headers`**

   ビューワーリクエスト内の HTTP ヘッダー (名前と値)。
**注記**  
このフィールドは 800 バイトに切り捨てられます。

1. **`cs-header-names`**

   ビューワーリクエスト内の HTTP ヘッダーの名前 (値ではない)。
**注記**  
このフィールドは 800 バイトに切り捨てられます。

1. **`cs-headers-count`**

    ビューワーリクエスト内の HTTP ヘッダーの数。

1. **`primary-distribution-id`**

   継続的デプロイが有効になっている場合、この ID は、どのディストリビューションが現在のディストリビューションでプライマリであるかを識別します。

1. **`primary-distribution-dns-name`**

   継続的デプロイが有効になっている場合、この値は、現在の CloudFront ディストリビューションに関連するプライマリドメイン名 (d111111abcdef8.cloudfront.net など) を示します。

1. **`origin-fbl`**

   CloudFront とオリジン間の先頭バイトのレイテンシーの秒数。

1. **`origin-lbl`**

   CloudFront とオリジン間の最終バイトのレイテンシーの秒数。

1. **`asn`**

   ビューワーの AS 番号 (ASN)。

1. <a name="CMCD-real-time-logging-fields"></a>
**リアルタイムのアクセスログの CMCD フィールド**  
これらのフィールドの詳細については、「[CTA Specification Web Application Video Ecosystem - Common Media Client Data CTA-5004](https://cdn.cta.tech/cta/media/media/resources/standards/pdfs/cta-5004-final.pdf)」ドキュメントを参照してください。

1. **`cmcd-encoded-bitrate`**

   リクエストされたオーディオまたは動画オブジェクトのエンコードされたビットレート。

1. **`cmcd-buffer-length`**

   リクエストされたメディアオブジェクトのバッファ長。

1. **`cmcd-buffer-starvation`**

   前のリクエストからオブジェクトリクエストまでの特定の時点でバッファが不足していたかどうか。これにより、プレーヤーが再バッファリング状態になり、動画またはオーディオの再生が停止する可能性があります。

1. **`cmcd-content-id`**

   現在のコンテンツを識別する一意の文字列。

1. **`cmcd-object-duration`**

   リクエストされたオブジェクトの再生時間 (ミリ秒単位)。

1. **`cmcd-deadline`**

   バッファアンダーラン状態やその他の再生問題を回避するために、このオブジェクトの最初のサンプルが利用可能でなければならない、リクエスト時点からの期限。

1. **`cmcd-measured-throughput`**

   クライアントが測定した、クライアントとサーバー間のスループット。

1. **`cmcd-next-object-request`**

   次のリクエストされたオブジェクトの相対パス。

1. **`cmcd-next-range-request`**

   次のリクエストが部分的なオブジェクトリクエストである場合、この文字列はリクエスト対象のバイト範囲を示します。

1. **`cmcd-object-type`**

   リクエスト対象の現在のオブジェクトのメディアタイプ。

1. **`cmcd-playback-rate`**

   リアルタイムの場合は 1、倍速の場合は 2、再生しない場合は 0。

1. **`cmcd-requested-maximum-throughput`**

   クライアントがアセットの配信に十分であると判断した、リクエストされた最大スループット。

1. **`cmcd-streaming-format`**

   現在のリクエストを定義するストリーミングフォーマット。

1. **`cmcd-session-id`**

   現在の再生セッションを識別する GUID。

1. **`cmcd-stream-type`**

   セグメントの可用性を識別するトークン。`v` = すべてのセグメントが使用可能です。`l` = セグメントは時間が経つと使用可能になります。

1. **`cmcd-startup`**

   起動、シーク、またはバッファが空になった後の回復中にオブジェクトが緊急に必要になった場合は、値なしでキーが含まれます。

1. **`cmcd-top-bitrate`**

   クライアントが再生できる最高ビットレートのレンディション。

1. **`cmcd-version`**

   定義されたキーの名前と値を解釈するために使用する、この仕様のバージョン。このキーを省略した場合、クライアントとサーバーは、値がバージョン 1 で定義されたものとして解釈する必要があります。**

1. **`r-host`**

   このフィールドはオリジンリクエストに送信され、オブジェクトの提供に使用されるオリジンサーバーのドメインを示します。エラーが発生した場合は、このフィールドを使用して、最後に試行されたオリジンを見つけることができます (例: `cd8jhdejh6a.mediapackagev2.us-east-1.amazonaws.com`)。

1. **`sr-reason`**

   このフィールドは、オリジンが選択された理由を示します。プライマリオリジンへのリクエストが成功した場合は、空になります。

   オリジンフェイルオーバーが発生した場合、このフィールドには、フェイルオーバーの原因となった HTTP エラーコード (`Failover:403` や `Failover:502`) が含まれます。オリジンフェイルオーバーの場合、リクエストの再試行も失敗してカスタムエラーページも設定していなければ、`r-status` は 2 番目のオリジンのレスポンスを示します。一方、オリジンフェイルオーバーと共にカスタムエラーページを設定している場合、リクエストが失敗してカスタムエラーページが代わりに返されると、これには 2 番目のオリジンのレスポンスが含まれます。

   オリジンフェイルオーバーが発生せずにメディア品質対応レジリエンス (MQAR) オリジンの選択が発生すると、これは `MediaQuality` として記録されます。詳細については、「[Media Quality-Aware Resiliency](media-quality-score.md)」を参照してください。

1. **`x-edge-mqcs`**

   このフィールドは、CloudFront が MediaPackage v2 から CMSD レスポンスヘッダーで取得したメディアセグメントのメディア品質信頼スコア (MQCS) (範囲: 0～100) を示します。このフィールドは、MQAR 対応のオリジングループを持つキャッシュ動作と一致するリクエストで使用できます。CloudFront は、オリジンリクエストに加えてキャッシュからも提供されるメディアセグメントを、このフィールドでログに記録します。詳細については、「[Media Quality-Aware Resiliency](media-quality-score.md)」を参照してください。

1. **`distribution-tenant-id`**

   ディストリビューションテナントの ID。

1. **`connection-id`**

   TLS 接続の一意の識別子です。

   このフィールドの情報を取得する前に、ディストリビューションの mTLS を有効にする必要があります。詳細については、「[CloudFront による相互 TLS 認証 (Viewer mTLS)オリジンの相互 TLS と CloudFront](mtls-authentication.md)」を参照してください。

### エンドポイント (Kinesis Data Streams)
<a name="real-time-logs-endpoint"></a>

エンドポイントには、リアルタイムログを送信する Kinesis Data Streams に関する情報が含まれています。データストリームの Amazon リソースネーム (ARN) を指定します。

Kinesis データストリームの作成の詳細については、「Amazon Kinesis Data Streams 開発者ガイド」の以下のトピックを参照してください。**
+ [ストリームの作成と管理](https://docs.aws.amazon.com/streams/latest/dev/working-with-streams.html)
+ [ を使用した基本的な Kinesis Data Streams の操作を実行するAWS CLI](https://docs.aws.amazon.com/streams/latest/dev/fundamental-stream.html)
+ [ストリームの作成](https://docs.aws.amazon.com/streams/latest/dev/kinesis-using-sdk-java-create-stream.html) (AWS SDK for Java を使用)

データストリームを作成するときは、シャードの数を指定する必要があります。次の情報を使用して、必要なシャードの数を見積もることができます。

**Kinesis データストリームのシャード数を推定するには**

1. ご使用の CloudFront ディストリビューションが受信する 1 秒あたりのリクエスト数を計算 (または概算) します。

   1 秒あたりのリクエストを計算するには、[CloudFront の使用状況レポート](https://console.aws.amazon.com/cloudfront/v4/home#/usage) (CloudFront コンソール内) と [CloudFront メトリクス](viewing-cloudfront-metrics.md#monitoring-console.distributions) (CloudFront コンソールおよび Amazon CloudWatch コンソール内) を使用します。

1. 1 つのリアルタイムのアクセスログレコードの一般的なサイズを決定します。

   一般に、1 つのログレコードは約 500 バイトです。使用可能なすべてのフィールドを含む大きなレコードは、通常、約 1 KB です。

   ログレコードのサイズが不明な場合は、サンプルレートを低く (1% などに) 設定して、リアルタイムログを有効化し、Kinesis Data Streams でのデータのモニタリングを使用して平均的なレコードサイズを割り出します (受信バイト数の合計をレコード数の合計で割ります)。

1. [Amazon Kinesis Data Streams の料金ページ](https://aws.amazon.com/kinesis/data-streams/pricing/)の AWS 料金見積りツール の下にある **[今すぐカスタム見積もりを作成する]** をクリックします。
   + 計算ツールで、1 秒あたりのリクエスト数 (レコード) を入力します。
   + 単一のログレコードの平均レコードサイズを入力します。
   + **[計算を表示]** をクリックします。

   料金見積りツールが、必要なシャード数と推定コストを表示します。

### IAM ロール
<a name="real-time-logs-IAM"></a>

Kinesis のデータストリームにリアルタイムのアクセスログを配信するための許可を CloudFront に付与する AWS Identity and Access Management (IAM) ロールです。

CloudFront コンソールでリアルタイムのアクセスログ設定を作成する場合、**[新規サービスロールの作成]** を選択して、コンソールで IAM ロールを作成させることができます。

AWS CloudFormation または CloudFront API (AWS CLI もしくは SDK) を使用してリアルタイムのアクセスログ設定を作成する場合は、独自に IAM ロールを作成して、ロール ARN を提供する必要があります。IAM ロールを自分で作成するには、次のポリシーを使用します。

**IAM ロール信頼ポリシー**

次の IAM ロール信頼ポリシーを使用するには、*111122223333* を AWS アカウント 数字に置き換えます。このポリシーの `Condition` 要素は、CloudFront が AWS アカウント 内のディストリビューションの代理としてのみこのロールを引き受けることができるため、[「混乱した代理」問題](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html)を防止するのに役立ちます。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "cloudfront.amazonaws.com"
            },
            "Action": "sts:AssumeRole",
            "Condition": {
                "StringEquals": {
                    "aws:SourceAccount": "111122223333"
                }
            }
        }
    ]
}
```

------

**暗号化されていないデータストリーム用の IAM ロールアクセス許可ポリシー**

次のポリシーを使用するには、*arn:aws:kinesis:us-east-2:123456789012:stream/StreamName* を Kinesis Data Streams の ARN に置き換えます。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "kinesis:DescribeStreamSummary",
                "kinesis:DescribeStream",
                "kinesis:PutRecord",
                "kinesis:PutRecords"
            ],
            "Resource": [
                "arn:aws:kinesis:us-east-2:123456789012:stream/StreamName"
            ]
        }
    ]
}
```

------

**暗号化されたデータストリーム用の IAM ロールアクセス許可ポリシー**

次のポリシーを使用するには、*arn:aws:kinesis:us-east-2:123456789012:stream/StreamName* を Kinesis Data Streams の ARN に、*arn:aws:kms:us-east-2:123456789012:key/e58a3d0b-fe4f-4047-a495-ae03cc73d486* を AWS KMS key の ARN に置き換えます。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "kinesis:DescribeStreamSummary",
                "kinesis:DescribeStream",
                "kinesis:PutRecord",
                "kinesis:PutRecords"
            ],
            "Resource": [
                "arn:aws:kinesis:us-east-2:123456789012:stream/StreamName"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "kms:GenerateDataKey"
            ],
            "Resource": [
                "arn:aws:kms:us-east-2:123456789012:key/e58a3d0b-fe4f-4047-a495-ae03cc73d486"
            ]
        }
    ]
}
```

------

****  

## Kinesis Data Streams コンシューマーを作成する
<a name="real-time-log-consumer-guidance"></a>

リアルタイムのアクセスログを読み取って分析するには、Kinesis Data Streams *コンシューマー*を構築または使用します。CloudFront リアルタイムのアクセスログ用のコンシューマーを構築する場合、すべてのリアルタイムログレコードのフィールドは、[フィールド](#real-time-logs-fields) セクションの一覧と常に同じ順序で配信されることを知っておくことが重要です。この固定注文に対応するためにコンシューマーを構築することを確認してください。

例えば、`time-to-first-byte`、`sc-status`、および `c-country` の 3 つのフィールドのみを含むリアルタイムのアクセスログ設定を考えてみます。このシナリオでは、最後のフィールド、`c-country` は、すべてのログレコードで常にフィールド番号 3 です。ただし、後でリアルタイムのアクセスログ設定にフィールドを追加すると、レコード内の各フィールドの配置が変更される可能性があります。

例えば、フィールド `sc-bytes` と `time-taken` をリアルタイムのアクセスログ設定に追加した場合、これらのフィールドは、[フィールド](#real-time-logs-fields) セクションに示されている順序に従って各ログレコードに挿入されます。5 つのフィールドすべての順序は `time-to-first-byte`、`sc-status`、`sc-bytes`、`time-taken`、および `c-country` です。`c-country` フィールドはもともとフィールド番号 3 でしたが、現在はフィールド番号 5 です。リアルタイムのアクセスログ設定にフィールドを追加する場合は、コンシューマーアプリケーションがログレコード内の位置を変更するフィールドを処理できることを確認してください。

## リアルタイムのアクセスログのトラブルシューティング
<a name="real-time-log-troubleshooting"></a>

リアルタイムのアクセスログ設定を作成した後、レコードが Kinesis Data Streams にまったく配信されない (または一部のレコードが配信されない) 場合があります。この場合、まず CloudFront ディストリビューションがビューワーリクエストを受信していることを確認する必要があります。その場合は、次の設定を確認してトラブルシューティングを続行できます。

**IAM ロールのアクセス許可**  
CloudFront では、リアルタイムのアクセスログレコードを Kinesis データストリームに配信するために、リアルタイムのアクセスログ設定の IAM ロールが使用されます。ロールの信頼ポリシーとロールのアクセス許可ポリシーが、[IAM ロール](#real-time-logs-IAM) に示されているポリシーと一致していることを確認してください。

**Kinesis Data Streams のスロットリング**  
CloudFront によってリアルタイムのアクセスログレコードが Kinesis データストリームに書き込まれる速度が、ストリームで処理できる速度を上回る場合、Kinesis Data Streams は CloudFront からのリクエストを抑制することがあります。この場合、Kinesis データストリームのシャードの数を増やすことができます。各シャードは、1 秒あたり 1,000 レコードまでの書き込みをサポートし、1 秒あたり 1 MB の最大データ書き込みをサポートします。

# エッジ関数のログ
<a name="edge-functions-logs"></a>

Amazon CloudWatch Logs を使用して、[Lambda@Edge](lambda-at-the-edge.md) と [CloudFront Functions](cloudfront-functions.md) の両方で、エッジ関数のログを取得できます。ログにアクセスするには、CloudWatch コンソールまたは CloudWatch Logs API を使用できます。

**重要**  
ログは、すべてのリクエストを完全に課金するためのものではなく、コンテンツに対するリクエストの本質を把握するものとして使用することをお勧めします。CloudFront はベストエフォートベースでエッジ関数のログを提供します。特定のリクエストのログエントリが、リクエストが実際に処理されてからかなり後に配信されることも、(まれに) 一切配信されないこともあります。ログエントリをエッジ関数のログから省略すると、エッジ関数のログ内のエントリ数は AWS の請求と使用状況レポートに表示される使用量と一致しなくなります。

**Topics**
+ [Lambda@Edge のログ](#lambda-at-edge-logs)
+ [CloudFront Functions のログ](#cloudfront-function-logs)

## Lambda@Edge のログ
<a name="lambda-at-edge-logs"></a>

Lambda@Edge は、関数ログを CloudWatch Logs に自動的に送信し、関数が呼び出された AWS リージョンにログストリームを作成します。AWS Lambda で関数を作成または変更するときは、デフォルトの CloudWatch ロググループ名を使用するか、カスタマイズできます。
+ デフォルトのロググループ名は `/aws/lambda/<FunctionName>` です。`<FunctionName>` は関数の作成時に指定した名前です。CloudWatch にログを送信する際、Lambda@Edge は関数名に `us-east-1` プレフィックスを自動的に追加し、ロググループ名は `/aws/lambda/us-east-1.<FunctionName>` になります。このプレフィックスは、関数が作成された AWS リージョンに対応します。このプレフィックスは、関数が呼び出される他のリージョンでも、ロググループ名の一部として残ります。
+ `/MyLogGroup` などのカスタムロググループ名を指定した場合、Lambda@Edge はリージョンプレフィックスを追加しません。ロググループ名は、関数が呼び出される他のすべてのリージョンで同じままです。

**注記**  
カスタムロググループを作成し、デフォルトの `/aws/lambda/<FunctionName>` と同じ名前を指定すると、Lambda@Edge は関数名に `us-east-1` プレフィックスを追加します。

ロググループ名をカスタマイズするだけでなく、Lambda@Edge 関数は JSON およびプレーンテキストのログ形式とログレベルのフィルタリングをサポートしています。詳細については、「*AWS Lambda デベロッパーガイド*」の「[Lambda 関数の高度なログ記録コントロールの設定](https://docs.aws.amazon.com/lambda/latest/dg/monitoring-cloudwatchlogs-advanced.html)」を参照してください。

**注記**  
Lambda@Edge は、リクエストのボリュームとログのサイズに基づいてログを調整します。

Lambda@Edge 関数ログファイルを確認するには、正しい リージョンの CloudWatch ログファイルを確認する必要があります。Lambda@Edge 関数が実行されているリージョンを確認するには、CloudFront コンソールでその関数のメトリクスのグラフを表示します。メトリックスは リージョンごとに表示されます。同じページで、リージョンを選択してそのリージョンのログファイルを表示し、問題を調査することができます。

Lambda@Edge 関数で CloudWatch Logs を使用する方法の詳細については、以下のトピックを参照してください。
+ CloudFront コンソールの [**Monitoring (モニタリング)**] セクションでのグラフ表示の詳細については、「[Amazon CloudWatch で CloudFront メトリクスをモニタリングする](monitoring-using-cloudwatch.md)」を参照してください。
+ CloudWatch Logs にデータを送信するために必要なアクセス許可については、「[Lambda@Edge 用の IAM アクセス許可とロールのセットアップ](lambda-edge-permissions.md)」を参照してください。
+ Lambda@Edge 関数のログ作成の追加については、*AWS Lambda デベロッパーガイド*の「[Node.js の AWS Lambda 関数ログ作成](https://docs.aws.amazon.com/lambda/latest/dg/nodejs-logging.html)」または「[Python の AWS Lambda 関数ログ作成](https://docs.aws.amazon.com/lambda/latest/dg/python-logging.html)」を参照してください。
+ CloudWatch Logs クォータ (以前は制限と呼ばれていました) の詳細については、*Amazon CloudWatch Logs ユーザーガイド*の「[CloudWatch Logs クォータ](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/cloudwatch_limits_cwl.html)」を参照してください。

## CloudFront Functions のログ
<a name="cloudfront-function-logs"></a>

CloudFront 関数のコードに `console.log()` ステートメントが含まれている場合、CloudFront Functions はこれらのログ行を CloudWatch Logs に自動的に送信します。`console.log()` ステートメントがない場合、CloudWatch Logs には何も送信されません。

CloudFront Functions は、関数が実行されたエッジロケーションに関係なく、常に米国東部 (バージニア北部) リージョン (`us-east-1`) にログストリームを作成します。ログストリーム名の形式は `YYYY/M/D/UUID` です。

ロググループ名は次の形式に従います。
+ キャッシュ動作レベルでの CloudFront Functions の場合、形式は `/aws/cloudfront/function/<FunctionName>` です。
+ ディストリビューションレベルの CloudFront Functions (Connection Functions) の場合、形式は `/aws/cloudfront/connection-function/<FunctionName>` です。

`<FunctionName>` は、関数の作成時に付けられた名前です。

**Example ビューワーリクエスト**  
CloudWatch Logs に送信されるログメッセージの例を次に示します。各行は、CloudFront リクエストを一意に識別する ID で始まります。メッセージは、CloudFront ディストリビューション ID を含む `START` 行で始まり、`END` 行で終わります。`START` 行と `END` 行の間には、関数の `console.log()` ステートメントによって生成されるログ行があります。  

```
U7b4hR_RaxMADupvKAvr8_m9gsGXvioUggLV5Oyq-vmAtH8HADpjhw== START DistributionID: E3E5D42GADAXZZ
U7b4hR_RaxMADupvKAvr8_m9gsGXvioUggLV5Oyq-vmAtH8HADpjhw== Example function log output
U7b4hR_RaxMADupvKAvr8_m9gsGXvioUggLV5Oyq-vmAtH8HADpjhw== END
```

**Example 接続リクエスト**  
CloudWatch Logs に送信されるログメッセージの例を次に示します。各行は、CloudFront リクエストを一意に識別する ID で始まります。メッセージは、CloudFront ディストリビューション ID を含む `START` 行で始まり、`END` 行で終わります。`START` 行と `END` 行の間には、関数の `console.log()` ステートメントによって生成されるログ行があります。  

```
U7b4hR_RaxMADupvKAvr8_m9gsGXvioUggLV5Oyq-vmAtH8HADpjhw== START DistributionID: E3E5D42GADA123
U7b4hR_RaxMADupvKAvr8_m9gsGXvioUggLV5Oyq-vmAtH8HADpjhw== 1.2.3.4
U7b4hR_RaxMADupvKAvr8_m9gsGXvioUggLV5Oyq-vmAtH8HADpjhw== END
```

**注記**  
CloudFront Functions は、本番リクエストとレスポンスに応答して実行されるステージ `LIVE` の関数のみ、ログを CloudWatch に送信します。[関数をテスト](test-function.md)するとき、CloudFront は CloudWatch にログを送信しません。テスト出力には、エラー、コンピューティング使用率、関数ログ (`console.log()` ステートメント) に関する情報が表示されますが、この情報は CloudWatch に送信されません。

CloudFront Functions は、AWS Identity and Access Management (IAM) [サービスリンクロール](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html#iam-term-service-linked-role)を使用して、アカウントの CloudWatch Logs にログを送信します。サービスリンクロールは、AWS のサービスに直接リンクされた IAM ロールです。サービスリンクロールはサービスによって事前定義されており、サービスがお客様に他の AWS のサービスを呼び出す際に必要な、すべてのアクセス許可が含まれています。CloudFront Functions は、**AWSServiceRoleForCloudFrontLogger** サービスリンクロールを使用します。このロールの詳細については、「[Lambda@Edge 用のサービスにリンクされたロール](lambda-edge-permissions.md#using-service-linked-roles-lambda-edge)」を参照してください (Lambda@Edge は同じサービスリンクされたロールを使用します)。

関数が検証エラーまたは実行エラーで失敗すると、[標準ログ](AccessLogs.md)と[リアルタイムアクセスログ](real-time-logs.md)に情報が記録されます。エラーの詳細については、`x-edge-result-type`、`x-edge-response-result-type`、および `x-edge-detailed-result-type` フィールドを参照してください。

# AWS CloudTrail を使用した Amazon CloudFront API コールのログ記録
<a name="logging_using_cloudtrail"></a>

CloudFront は、ユーザー、ロール、または AWS のサービス が実行したアクションの記録を提供するサービスである [AWS CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html) と統合されています。CloudTrail は、CloudFront のすべての API コールをイベントとしてキャプチャします。このキャプチャには、CloudFront コンソールからの呼び出しと、CloudFront API オペレーションへのコード呼び出しが含まれます。CloudTrail で収集した情報を使用して、CloudFront に対するリクエスト、リクエスト元の IP アドレス、リクエストの作成日時、その他の詳細を確認できます。

各イベントまたはログエントリには、リクエストの生成者に関する情報が含まれます。アイデンティティ情報は、以下を判別するのに役立ちます。
+ ルートユーザーまたはユーザー認証情報のどちらを使用してリクエストが送信されたか。
+ リクエストが IAM Identity Center ユーザーに代わって行われたかどうか。
+ リクエストがロールまたはフェデレーションユーザーのテンポラリなセキュリティ認証情報を使用して行われたかどうか。
+ リクエストが、別の AWS のサービス によって送信されたかどうか。

アカウントを作成すると、AWS アカウント で CloudTrail がアクティブになり、自動的に CloudTrail の**[イベント履歴]** にアクセスできるようになります。CloudTrail の **[イベント履歴]** では、AWS リージョン で過去 90 日間に記録された管理イベントの表示、検索、およびダウンロードが可能で、変更不可能な記録を確認できます。詳細については、「*AWS CloudTrail ユーザーガイド*」の「[CloudTrail イベント履歴の使用](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/view-cloudtrail-events.html)」を参照してください。**[イベント履歴]** の閲覧には CloudTrail の料金はかかりません。

AWS アカウント で過去 90 日間のイベントを継続的に記録するには、証跡または [CloudTrail Lake](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-lake.html) イベントデータストアを作成します。

**CloudTrail 証跡**  
*証跡*により、CloudTrail はログファイルを Amazon S3 バケットに配信できます。AWS マネジメントコンソール を使用して作成した証跡はマルチリージョンです。AWS CLI を使用する際は、単一リージョンまたは複数リージョンの証跡を作成できます。アカウント内のすべて AWS リージョン でアクティビティを把握するため、マルチリージョン証跡を作成することをお勧めします。単一リージョンの証跡を作成する場合、証跡の AWS リージョン に記録されたイベントのみを表示できます。証跡の詳細については、「*AWS CloudTrail ユーザーガイド*」の「[AWS アカウントの証跡の作成](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-create-and-update-a-trail.html)」および「[組織の証跡の作成](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/creating-trail-organization.html)」を参照してください。  
証跡を作成すると、進行中の管理イベントのコピーを 1 つ無料で CloudTrail から Amazon S3 バケットに配信できますが、Amazon S3 ストレージには料金がかかります。CloudTrail の料金の詳細については、「[AWS CloudTrail の料金](https://aws.amazon.com/cloudtrail/pricing/)」を参照してください。Amazon S3 の料金に関する詳細については、「[Amazon S3 の料金](https://aws.amazon.com/s3/pricing/)」を参照してください。

**CloudTrail Lake イベントデータストア**  
*[CloudTrail Lake]* を使用すると、イベントに対して SQL ベースのクエリを実行できます。CloudTrail Lake は、行ベースの JSON 形式の既存のイベントを [Apache ORC](https://orc.apache.org/) 形式に変換します。ORC は、データを高速に取得するために最適化された単票ストレージ形式です。イベントは、*イベントデータストア*に集約されます。イベントデータストアは、[高度なイベントセレクタ](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-lake-concepts.html#adv-event-selectors)を適用することによって選択する条件に基づいた、イベントのイミュータブルなコレクションです。どのイベントが存続し、クエリに使用できるかは、イベントデータストアに適用するセレクタが制御します。CloudTrail Lake の詳細については、「*AWS CloudTrail ユーザーガイド*」の「[AWS CloudTrail Lake の使用](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-lake.html)」を参照してください。  
CloudTrail Lake のイベントデータストアとクエリにはコストがかかります。イベントデータストアを作成する際に、イベントデータストアに使用する[料金オプション](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-lake-manage-costs.html#cloudtrail-lake-manage-costs-pricing-option)を選択します。料金オプションによって、イベントの取り込みと保存にかかる料金、および、そのイベントデータストアのデフォルトと最長の保持期間が決まります。CloudTrail の料金の詳細については、「[AWS CloudTrail の料金](https://aws.amazon.com/cloudtrail/pricing/)」を参照してください。

**注記**  
CloudFront はグローバルサービスです。CloudTrail は、CloudFront のイベントを米国東部 (バージニア北部) リージョンに記録します。詳細については、*AWS CloudTrail ユーザーガイド*の「[グローバルサービスイベント](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-concepts.html#cloudtrail-concepts-global-service-events)」を参照してください。  
AWS Security Token Service で一時的なセキュリティ認証情報を使用すると、`us-west-2` などのリージョンエンドポイントへの呼び出しは、CloudTrail で適切なリージョンに記録されます。  
CloudFront エンドポイントの詳細については、「AWS 全般のリファレンス」の「[CloudFront のエンドポイントとクォータ](https://docs.aws.amazon.com/general/latest/gr/cf_region.html)」を参照してください。**

## CloudTrail の CloudFront データイベント
<a name="cloudtrail-data-events"></a>

[データイベント](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/logging-data-events-with-cloudtrail.html#logging-data-events)は、リソースで実行されたリソースオペレーション (CloudFront ディストリビューションに対する読み取りや書き込みなど) に関する情報を提供します。これらのイベントは、データプレーンオペレーションとも呼ばれます。データイベントは、多くの場合、高ボリュームのアクティビティです。デフォルトでは、CloudTrail はデータイベントをログ記録しません。CloudTrail **[イベント履歴]** にはデータイベントは記録されません。

追加の変更がイベントデータに適用されます。CloudTrail の料金の詳細については、「[AWS CloudTrail の料金](https://aws.amazon.com/cloudtrail/pricing/)」を参照してください。

CloudFront リソースタイプのデータイベントは、CloudTrail コンソール、AWS CLI、または CloudTrail API オペレーションを使用してログに記録できます。データイベントをログに記録する方法の詳細については、「*AWS CloudTrail ユーザーガイド*」の「[AWS マネジメントコンソール を使用したデータイベントのログ記録](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/logging-data-events-with-cloudtrail.html#logging-data-events-console)」および「[AWS Command Line Interface を使用したデータイベントのログ記録](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/logging-data-events-with-cloudtrail.html#creating-data-event-selectors-with-the-AWS-CLI)」を参照してください。

次の表に、データイベントをログに記録できる CloudFront リソースタイプを示します。**データイベントタイプ (コンソール)** 列には、CloudTrail コンソールの**[データイベントタイプ]**リストから選択する値が表示されます。**resources.type 値**列には、AWS CLI または CloudTrail API を使用して高度なイベントセレクタを設定するときに指定する `resources.type` 値が表示されます。**CloudTrail に記録されたデータ API** 列には、リソースタイプの CloudTrail にログ記録された API コールが表示されます。


| データイベントタイプ (コンソール) | resources.type 値 | CloudTrail にログ記録されたデータ API | 
| --- | --- | --- | 
| CloudFront KeyValueStore |  AWS::CloudFront::KeyValueStore  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AmazonCloudFront/latest/DeveloperGuide/logging_using_cloudtrail.html)  | 

`eventName`、`readOnly`、および `resources.ARN` フィールドでフィルタリングして、自分にとって重要なイベントのみをログに記録するように高度なイベントセレクタを設定できます。オブジェクトの詳細については、「*AWS CloudTrail API リファレンス*」の「[https://docs.aws.amazon.com/awscloudtrail/latest/APIReference/API_AdvancedFieldSelector.html](https://docs.aws.amazon.com/awscloudtrail/latest/APIReference/API_AdvancedFieldSelector.html)」を参照してください。

## CloudTrail の CloudFront 管理イベント
<a name="cloudtrail-management-events"></a>

[管理イベント](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/logging-management-events-with-cloudtrail.html#logging-management-events)では、AWS アカウント のリソースに対して実行される管理オペレーションについての情報が得られます。これらのイベントは、コントロールプレーンオペレーションとも呼ばれます。CloudTrail は、デフォルトで管理イベントをログ記録します。

Amazon CloudFront は、すべての CloudFront コントロールプレーンオペレーションを管理イベントとして記録します。CloudFront が CloudTrail に記録する Amazon CloudFront コントロールプレーンオペレーションのリストについては、「[Amazon CloudFront API リファレンス](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_Operations_Amazon_CloudFront.html)」を参照してください。

## CloudFront イベントの例
<a name="cloudtrail-event-examples"></a>

各イベントは任意の送信元からの単一のリクエストを表し、リクエストされた API オペレーション、オペレーションの日時、リクエストパラメータなどに関する情報を含みます。CloudTrail ログファイルは、パブリック API コールの順序付けられたスタックトレースではないため、イベントは特定の順序で表示されません。

**Contents**
+ [例:UpdateDistribution](#example-cloudfront-service-cloudtrail-log)
+ [例:UpdateKeys](#example-cloudfront-kvs-cloudtrail-log)

### 例:UpdateDistribution
<a name="example-cloudfront-service-cloudtrail-log"></a>

次は、[UpdateDistribution](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_UpdateDistribution.html) オペレーションを示す CloudTrail イベントの例です。

CloudFront API への呼び出しの場合、`eventSource` は `cloudfront.amazonaws.com` です。

```
{
    "eventVersion": "1.08",
    "userIdentity": {
        "type": "AssumedRole",
        "principalId": "AIDACKCEVSQ6C2EXAMPLE:role-session-name",
        "arn": "arn:aws:sts::111122223333:assumed-role/Admin/role-session-name",
        "accountId": "111122223333",
        "accessKeyId": "ASIAIOSFODNN7EXAMPLE",
        "sessionContext": {
            "sessionIssuer": {
                "type": "Role",
                "principalId": "AIDACKCEVSQ6C2EXAMPLE",
                "arn": "arn:aws:iam::111122223333:role/Admin",
                "accountId": "111122223333",
                "userName": "Admin"
            },
            "webIdFederationData": {},
            "attributes": {
                "creationDate": "2024-02-02T19:23:50Z",
                "mfaAuthenticated": "false"
            }
        }
    },
    "eventTime": "2024-02-02T19:26:01Z",
    "eventSource": "cloudfront.amazonaws.com",
    "eventName": "UpdateDistribution",
    "awsRegion": "us-east-1",
    "sourceIPAddress": "52.94.133.137",
    "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36",
    "requestParameters": {
        "distributionConfig": {
            "defaultRootObject": "",
            "aliases": {
                "quantity": 3,
                "items": [
                    "alejandro_rosalez.awsps.myinstance.com",
                    "cross-testing.alejandro_rosalez.awsps.myinstance.com",
                    "*.alejandro_rosalez.awsps.myinstance.com"
                ]
            },
            "cacheBehaviors": {
                "quantity": 0,
                "items": []
            },
            "httpVersion": "http2and3",
            "originGroups": {
                "quantity": 0,
                "items": []
            },
            "viewerCertificate": {
                "minimumProtocolVersion": "TLSv1.2_2021",
                "cloudFrontDefaultCertificate": false,
                "aCMCertificateArn": "arn:aws:acm:us-east-1:111122223333:certificate/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111",
                "sSLSupportMethod": "sni-only"
            },
            "webACLId": "arn:aws:wafv2:us-east-1:111122223333:global/webacl/testing-acl/a1b2c3d4-5678-90ab-cdef-EXAMPLE22222",
            "customErrorResponses": {
                "quantity": 0,
                "items": []
            },
            "logging": {
                "includeCookies": false,
                "prefix": "",
                "enabled": false,
                "bucket": ""
            },
            "priceClass": "PriceClass_All",
            "restrictions": {
                "geoRestriction": {
                    "restrictionType": "none",
                    "quantity": 0,
                    "items": []
                }
            },
            "isIPV6Enabled": true,
            "callerReference": "1578329170895",
            "continuousDeploymentPolicyId": "",
            "enabled": true,
            "defaultCacheBehavior": {
                "targetOriginId": "d111111abcdef8",
                "minTTL": 0,
                "compress": false,
                "maxTTL": 31536000,
                "functionAssociations": {
                    "quantity": 0,
                    "items": []
                },
                "trustedKeyGroups": {
                    "quantity": 0,
                    "items": [],
                    "enabled": false
                },
                "smoothStreaming": false,
                "fieldLevelEncryptionId": "",
                "defaultTTL": 86400,
                "lambdaFunctionAssociations": {
                    "quantity": 0,
                    "items": []
                },
                "viewerProtocolPolicy": "redirect-to-https",
                "forwardedValues": {
                    "cookies": {"forward": "none"},
                    "queryStringCacheKeys": {
                        "quantity": 0,
                        "items": []
                    },
                    "queryString": false,
                    "headers": {
                        "quantity": 1,
                        "items": ["*"]
                    }
                },
                "trustedSigners": {
                    "items": [],
                    "enabled": false,
                    "quantity": 0
                },
                "allowedMethods": {
                    "quantity": 2,
                    "items": [
                        "HEAD",
                        "GET"
                    ],
                    "cachedMethods": {
                        "quantity": 2,
                        "items": [
                            "HEAD",
                            "GET"
                        ]
                    }
                }
            },
            "staging": false,
            "origins": {
                "quantity": 1,
                "items": [
                    {
                        "originPath": "",
                        "connectionTimeout": 10,
                        "customOriginConfig": {
                            "originReadTimeout": 30,
                            "hTTPSPort": 443,
                            "originProtocolPolicy": "https-only",
                            "originKeepaliveTimeout": 5,
                            "hTTPPort": 80,
                            "originSslProtocols": {
                                "quantity": 3,
                                "items": [
                                    "TLSv1",
                                    "TLSv1.1",
                                    "TLSv1.2"
                                ]
                            }
                        },
                        "id": "d111111abcdef8",
                        "domainName": "d111111abcdef8.cloudfront.net",
                        "connectionAttempts": 3,
                        "customHeaders": {
                            "quantity": 0,
                            "items": []
                        },
                        "originShield": {"enabled": false},
                        "originAccessControlId": ""
                    }
                ]
            },
            "comment": "HIDDEN_DUE_TO_SECURITY_REASONS"
        },
        "id": "EDFDVBD6EXAMPLE",
        "ifMatch": "E1RTLUR9YES76O"
    },
    "responseElements": {
        "distribution": {
            "activeTrustedSigners": {
                "quantity": 0,
                "enabled": false
            },
            "id": "EDFDVBD6EXAMPLE",
            "domainName": "d111111abcdef8.cloudfront.net",
            "distributionConfig": {
                "defaultRootObject": "",
                "aliases": {
                    "quantity": 3,
                    "items": [
                        "alejandro_rosalez.awsps.myinstance.com",
                        "cross-testing.alejandro_rosalez.awsps.myinstance.com",
                        "*.alejandro_rosalez.awsps.myinstance.com"
                    ]
                },
                "cacheBehaviors": {"quantity": 0},
                "httpVersion": "http2and3",
                "originGroups": {"quantity": 0},
                "viewerCertificate": {
                    "minimumProtocolVersion": "TLSv1.2_2021",
                    "cloudFrontDefaultCertificate": false,
                    "aCMCertificateArn": "arn:aws:acm:us-east-1:111122223333:certificate/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111",
                    "sSLSupportMethod": "sni-only",
                    "certificateSource": "acm",
                    "certificate": "arn:aws:acm:us-east-1:111122223333:certificate/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111"
                },
                "webACLId": "arn:aws:wafv2:us-east-1:111122223333:global/webacl/testing-acl/a1b2c3d4-5678-90ab-cdef-EXAMPLE22222",
                "customErrorResponses": {"quantity": 0},
                "logging": {
                    "includeCookies": false,
                    "prefix": "",
                    "enabled": false,
                    "bucket": ""
                },
                "priceClass": "PriceClass_All",
                "restrictions": {
                    "geoRestriction": {
                        "restrictionType": "none",
                        "quantity": 0
                    }
                },
                "isIPV6Enabled": true,
                "callerReference": "1578329170895",
                "continuousDeploymentPolicyId": "",
                "enabled": true,
                "defaultCacheBehavior": {
                    "targetOriginId": "d111111abcdef8",
                    "minTTL": 0,
                    "compress": false,
                    "maxTTL": 31536000,
                    "functionAssociations": {"quantity": 0},
                    "trustedKeyGroups": {
                        "quantity": 0,
                        "enabled": false
                    },
                    "smoothStreaming": false,
                    "fieldLevelEncryptionId": "",
                    "defaultTTL": 86400,
                    "lambdaFunctionAssociations": {"quantity": 0},
                    "viewerProtocolPolicy": "redirect-to-https",
                    "forwardedValues": {
                        "cookies": {"forward": "none"},
                        "queryStringCacheKeys": {"quantity": 0},
                        "queryString": false,
                        "headers": {
                            "quantity": 1,
                            "items": ["*"]
                        }
                    },
                    "trustedSigners": {
                        "enabled": false,
                        "quantity": 0
                    },
                    "allowedMethods": {
                        "quantity": 2,
                        "items": [
                            "HEAD",
                            "GET"
                        ],
                        "cachedMethods": {
                            "quantity": 2,
                            "items": [
                                "HEAD",
                                "GET"
                            ]
                        }
                    }
                },
                "staging": false,
                "origins": {
                    "quantity": 1,
                    "items": [
                        {
                            "originPath": "",
                            "connectionTimeout": 10,
                            "customOriginConfig": {
                                "originReadTimeout": 30,
                                "hTTPSPort": 443,
                                "originProtocolPolicy": "https-only",
                                "originKeepaliveTimeout": 5,
                                "hTTPPort": 80,
                                "originSslProtocols": {
                                    "quantity": 3,
                                    "items": [
                                        "TLSv1",
                                        "TLSv1.1",
                                        "TLSv1.2"
                                    ]
                                }
                            },
                            "id": "d111111abcdef8",
                            "domainName": "d111111abcdef8.cloudfront.net",
                            "connectionAttempts": 3,
                            "customHeaders": {"quantity": 0},
                            "originShield": {"enabled": false},
                            "originAccessControlId": ""
                        }
                    ]
                },
                "comment": "HIDDEN_DUE_TO_SECURITY_REASONS"
            },
            "aliasICPRecordals": [
                {
                    "cNAME": "alejandro_rosalez.awsps.myinstance.com",
                    "iCPRecordalStatus": "APPROVED"
                },
                {
                    "cNAME": "cross-testing.alejandro_rosalez.awsps.myinstance.com",
                    "iCPRecordalStatus": "APPROVED"
                },
                {
                    "cNAME": "*.alejandro_rosalez.awsps.myinstance.com",
                    "iCPRecordalStatus": "APPROVED"
                }
            ],
            "aRN": "arn:aws:cloudfront::111122223333:distribution/EDFDVBD6EXAMPLE",
            "status": "InProgress",
            "lastModifiedTime": "Feb 2, 2024 7:26:01 PM",
            "activeTrustedKeyGroups": {
                "enabled": false,
                "quantity": 0
            },
            "inProgressInvalidationBatches": 0
        },
        "eTag": "E1YHBLAB2BJY1G"
    },
    "requestID": "4e6b66f9-d548-11e3-a8a9-73e33example",
    "eventID": "5ab02562-0fc5-43d0-b7b6-90293example",
    "readOnly": false,
    "eventType": "AwsApiCall",
    "apiVersion": "2020_05_31",
    "managementEvent": true,
    "recipientAccountId": "111122223333",
    "eventCategory": "Management",
    "tlsDetails": {
        "tlsVersion": "TLSv1.3",
        "cipherSuite": "TLS_AES_128_GCM_SHA256",
        "clientProvidedHostHeader": "cloudfront.amazonaws.com"
    },
    "sessionCredentialFromConsole": "true"
}
```

### 例:UpdateKeys
<a name="example-cloudfront-kvs-cloudtrail-log"></a>

次は、[UpdateKeys](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_kvs_UpdateKeys.html) オペレーションを示す CloudTrail イベントの例です。

CloudFront KeyValueStore API への呼び出しの場合、`eventSource` は `cloudfront.amazonaws.com` ではなく、`edgekeyvaluestore.amazonaws.com` になります。

```
{
    "eventVersion": "1.09",
    "userIdentity": {
        "type": "AssumedRole",
        "principalId": "AIDACKCEVSQ6C2EXAMPLE:role-session-name",
        "arn": "arn:aws:sts::111122223333:assumed-role/Admin/role-session-name",
        "accountId": "111122223333",
        "accessKeyId": "ASIAIOSFODNN7EXAMPLE",
        "sessionContext": {
            "sessionIssuer": {
                "type": "Role",
                "principalId": "AIDACKCEVSQ6C2EXAMPLE",
                "arn": "arn:aws:iam::111122223333:role/Admin",
                "accountId": "111122223333",
                "userName": "Admin"
            },
            "attributes": {
                "creationDate": "2023-11-01T23:41:14Z",
                "mfaAuthenticated": "false"
            }
        }
    },
    "eventTime": "2023-11-01T23:41:28Z",
    "eventSource": "edgekeyvaluestore.amazonaws.com",
    "eventName": "UpdateKeys",
    "awsRegion": "us-east-1",
    "sourceIPAddress": "3.235.183.252",
    "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36,
    "requestParameters": {
        "kvsARN": "arn:aws:cloudfront::111122223333:key-value-store/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111",
        "ifMatch": "KV3O6B1CX531EBP",
        "deletes": [
            {"key": "key1"}
        ]
    },
    "responseElements": {
        "itemCount": 0,
        "totalSizeInBytes": 0,
        "eTag": "KVDC9VEVZ71ZGO"
    },
    "requestID": "5ccf104c-acce-4ea1-b7fc-73e33example",
    "eventID": "a0b1b5c7-906c-439d-9925-90293example",
    "readOnly": false,
    "resources": [
        {
            "accountId": "111122223333",
            "type": "AWS::CloudFront::KeyValueStore",
            "ARN": "arn:aws:cloudfront::111122223333:key-value-store/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111"
        }
    ],
    "eventType": "AwsApiCall",
    "managementEvent": false,
    "recipientAccountId": "111122223333",
    "eventCategory": "Data",
    "tlsDetails": {
        "tlsVersion": "TLSv1.3",
        "cipherSuite": "TLS_AES_128_GCM_SHA256",
        "clientProvidedHostHeader": "111122223333.cloudfront-kvs.global.api.aws"
    }
}
```

CloudTrail レコードの内容については、「*AWS CloudTrail ユーザーガイド*」の「[CloudTrail record contents](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-event-reference-record-contents.html)」を参照してください。

# AWS Config で設定変更を追跡する
<a name="TrackingChanges"></a>

AWS リソースの設定を記録および評価するには、AWS Config を使用できます。これにより、ディストリビューションの設定の詳細ビューが表示されます。これには、リソースの相互関係や、過去にどのように構成されていたかが含まれるため、変更を経時的に確認できます。

さらに、AWS Config を使用して、CloudFront ディストリビューションの設定変更を記録できます。ディストリビューションの状態、料金クラス、オリジン、地域制限の設定、および Lambda@Edge 設定の変更をキャプチャできます。

**注記**  
AWS Config では、CloudFront ストリーミングディストリビューションのキーと値のタグは記録されません。

**Contents**
+ [CloudFront で AWS Config をセットアップする](#TrackingChangesSettings)
+ [CloudFront 設定履歴の表示](#TrackingChangesGetHistory)
+ [AWS Config ルールを使用して CloudFront 設定を評価する](#cloudfront-config-rules)

## CloudFront で AWS Config をセットアップする
<a name="TrackingChangesSettings"></a>

AWS Config を設定するとき、サポートされるすべての AWS リソースを記録するか、または特定のリソースのみを指定して設定の変更を記録するか (CloudFront の変更のみを記録する、など) を選択できます。サポートされる CloudFront リソースのリストについては、「*AWS Config デベロッパーガイド*」の「サポートされるリソースタイプ」トピックの「[Amazon CloudFront](https://docs.aws.amazon.com/config/latest/developerguide/resource-config-reference.html#amazoncloudfront)」セクションを参照してください。

**注意事項**  
CloudFront ディストリビューションの設定変更を追跡するには、米国東部 (バージニア北部) AWS リージョン で CloudFront コンソールにサインする必要があります。
AWS Config でのリソースの記録には遅延が生じる可能性があります。AWS Config は、リソースを検出した後でしかリソースを記録しません。

------
#### [ Console ]<a name="HowToSetUpAWSConfigProcedure"></a>

**CloudFront で AWS Config をセットアップするには**

1. AWS マネジメントコンソール にサインインして、[AWS Config コンソール](https://console.aws.amazon.com/config/home) を開きます。

1. [**Get Started Now**] を選択します。

1. [**設定**] ページの [**記録するリソースタイプ**] で、AWS で記録する AWS Config リソースタイプを指定します。CloudFront の変化のみを記録する場合には、[**特定の型**] を選択し、[**CloudFront**] で、変更を追跡するディストリビューションまたはストリーミング配信を選択します。

   追跡するディストリビューションを追加あるいは変更するには、最初のステップを完了した後に左側で [**設定**] を選択します。

1. AWS Config で追加の必須オプションを指定する: 通知の設定、設定情報の場所の指定、リソースタイプ評価のルールの追加。

詳細については、*AWS Config デベロッパーガイド*の「[コンソールによる AWS Config の設定](https://docs.aws.amazon.com/config/latest/developerguide/gs-console.html)」を参照してください。

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

AWS CLI を使用して CloudFront で AWS Config をセットアップするには、「*AWS Config デベロッパーガイド*」の「[AWS CLI を使用した AWS Config のセットアップ](https://docs.aws.amazon.com/config/latest/developerguide/gs-cli.html)」を参照してください。

------
#### [ AWS Config API ]

AWS Config API を使用して CloudFront で AWS Config をセットアップするには、「AWS Config API リファレンス」の [StartConfigurationRecorder](https://docs.aws.amazon.com/config/latest/APIReference/API_StartConfigurationRecorder.html) API オペレーションを参照してください。**

------

## CloudFront 設定履歴の表示
<a name="TrackingChangesGetHistory"></a>

AWS Config がディストリビューションへの設定変更の記録を開始したら、CloudFront 用に設定した任意のディストリビューションの設定履歴を取得できます。

設定履歴は以下のいずれかの方法で表示できます。

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

記録されたリソースごとに、設定の詳細の履歴を示すタイムラインページを表示できます。このページを表示するには、[**Dedicated Hosts**] ページの [**設定タイムライン**] 列にあるグレーのアイコンを選択してください。

詳細については、『*AWS Config デベロッパーガイド*』の[AWS Config コンソールでの設定詳細の表示](https://docs.aws.amazon.com/config/latest/developerguide/view-manage-resource-console.html)を参照してください。

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

すべてのディストリビューションのリストを取得するには、次の例に示されているように、[list-discovered-resources](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/configservice/list-discovered-resources.html) コマンドを使用します。

```
aws configservice list-discovered-resources --resource-type AWS::CloudFront::Distribution
```

特定の期間のディストリビューションの設定詳細を取得するには、[get-resource-config-history](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/configservice/get-resource-config-history.html) コマンドを使用します。

詳細については、『*AWS Config デベロッパーガイド*』の[CLI による設定詳細の表示](https://docs.aws.amazon.com/config/latest/developerguide/resource-config-reference.html)を参照してください。

------
#### [ AWS Config API ]

すべてのディストリビューションのリストを取得するには、[ListDiscoveredResources](https://docs.aws.amazon.com/config/latest/APIReference/API_ListDiscoveredResources.html) API オペレーションを使用します。

特定の期間におけるディストリビューションの設定詳細を取得するには、[GetResourceConfigHistory](https://docs.aws.amazon.com/config/latest/APIReference/API_GetResourceConfigHistory.html) API オペレーションを使用します。詳細については、「[AWS Config API リファレンス](https://docs.aws.amazon.com/config/latest/APIReference/)」を参照してください。

------

## AWS Config ルールを使用して CloudFront 設定を評価する
<a name="cloudfront-config-rules"></a>

AWS Config ルールを使用して、設定を目的の設定と照らし合わせて評価できます。例えば、AWS Config ルールは、CloudFront リソースが一般的なセキュリティのベストプラクティスに準拠しているかどうかを評価するのに役立ちます。ビューワーポリシー HTTPS、SNI 有効、OAC 有効、オリジンフェイルオーバー有効、AWS WAF WebACL 、または設定変更時にトリガーされる AWS Shield Advanced リソースポリシーなどの管理ルールを選択できます。

マネージドルールは、選択した頻度で定期的に評価を実行できます。AWS Firewall Manager は自動アラートと修復を AWS Config に依存します。詳細については、「AWS Config デベロッパーガイド」の「[Evaluating Resources with AWS Config Rules](https://docs.aws.amazon.com/config/latest/developerguide/evaluate-config.html)」および「[List of AWS Config Managed Rules](https://docs.aws.amazon.com/config/latest/developerguide/managed-rules-by-aws-config.html)」を参照してください。**