標準ログ (アクセスログ) の設定および使用 - Amazon CloudFront

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

標準ログ (アクセスログ) の設定および使用

が CloudFront 受信するすべてのユーザーリクエストに関する詳細情報を含むログファイルを作成する CloudFront ように を設定できます。これらは、標準ログと呼ばれます。また、アクセスログとも呼ばれています。標準ログを有効にする場合は、ファイル CloudFront を保存する Amazon S3 バケットを指定することもできます。

ディストリビューションを作成または更新するとき、標準ログを有効にできます。詳細については、「ディストリビューションを作成または更新する場合に指定する値」を参照してください。

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

標準ログ記録のしくみ

次の図は、 がオブジェクトのリクエストに関する情報を CloudFront ログに記録する方法を示しています。


					アクセスログの基本フロー

次の図に示すように、 がオブジェクトのリクエストに関する情報を CloudFront ログに記録する方法について説明します。

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

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

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

  4. CloudFront は、ログ記録を有効にしたときに指定した Amazon S3 バケットに、ディストリビューションのログファイルを定期的に保存します。CloudFront その後、 はディストリビューションの新しいログファイルに後続のリクエストに関する情報の保存を開始します。

一定の時間、お客様のコンテンツに対してユーザーアクセスがない場合、その時間のログファイルを受け取ることはありません。

ログファイルには、1 つのリクエストの詳細が 1 エントリとして記録されます。ログファイル形式の詳細については、「標準ログファイル形式」を参照してください。

注記

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

標準ログ用の Amazon S3 バケットの選択

ディストリビューションのログ記録を有効にするときは、ログファイルを保存する Amazon S3 バケット CloudFrontを指定します。オリジンとして Amazon S3 を使用する場合は、同じバケットをログファイルに使用しないことをお勧めします。別々のバケットを使用すると、メンテナンスが容易になります。

重要

強制を行ったバケット所有者に設定される S3 オブジェクトの所有権を使用して Amazon S3 バケットを選択してはいけません。この設定により、バケットとその中のオブジェクトACLs が無効になり、 はバケットにログファイルを配信できなくなります CloudFront。

重要

は、これらのリージョンのバケットに標準ログを配信しないため、以下のリージョンでは Amazon S3 バケットを選択しないでください。 CloudFront

  • アフリカ (ケープタウン)

  • アジアパシフィック (香港)

  • アジアパシフィック (ハイデラバード)

  • アジアパシフィック (ジャカルタ)

  • アジアパシフィック (メルボルン)

  • カナダ(中部)

  • 欧州 (ミラノ)

  • 欧州 (スペイン)

  • 欧州 (チューリッヒ)

  • イスラエル (テルアビブ)

  • 中東 (バーレーン)

  • 中東 (アラブ首長国連邦)

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

標準ログ記録の設定およびログファイルへのアクセスに必要なアクセス許可

重要

2023 年 4 月から、 CloudFront 標準ログに使用される新しい S3 バケットの S3 アクセスコントロールリスト (ACLs) を有効にする必要があります。ACL は、バケット作成のステップ中、またはバケットが作成された後に有効にできます。

変更の詳細については、「Amazon Simple Storage Service ユーザーガイド」の「新しい S3 バケットのデフォルト設定に関するよくある質問」と、「AWS ニュースブログ」の「注意喚起: 2023 年 4 月に予定されている Amazon S3 のセキュリティ変更」を参照してください。

AWS アカウントには、ログファイル用に指定するバケットに対する以下の許可が必要です。

  • バケットの S3 アクセスコントロールリスト (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、再度有効にします。詳細については、「ディストリビューションを作成または更新する場合に指定する値」を参照してください。

  • Amazon S3 コンソールで S3 バケットに移動してアクセス許可を追加することで、awslogsdelivery の ACL アクセス許可を手動で追加します。awslogsdelivery の ACL を追加するには、アカウントの正規 ID を入力する必要があります。これは次のとおりです。

    c4c1ede66af53448b93c283ce9448c4ba468c9432aa01d700d3878632f77d2d0

    ACL を S3 バケットに追加する方法の詳細については、Amazon Simple Storage Service ユーザーガイドの「ACL バケットの許可を設定する方法」を参照してください。

各ログファイルの ACL

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

ログ記録の無効化

ログ記録を無効にすると、 CloudFront はバケットまたはログファイルの ACLs を削除しません。これはお客様自身で行うことができます。

SSE-KMS バケット必須のキーポリシー

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

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

標準ログの S3 バケットで S3 バケットキー を有する 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": "*" }

ファイル名の形式

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

<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 を使用してログファイルを圧縮したことを示します。

標準ログファイル配信のタイミング

CloudFront は、ディストリビューションの標準ログを 1 時間に数回配信します。一般に、ログファイルには、特定の期間中に が CloudFront 受信したリクエストに関する情報が含まれています。 CloudFront は通常、ログに表示されるイベントから 1 時間以内に、その期間のログファイルを Amazon S3 バケットに配信します。ただし、ある期間のログファイルエントリの一部またはすべてが、最大で 24 時間遅れることもあります。ログエントリが遅れた場合、 CloudFront はこれらをログファイルに保存します。そのファイル名には、ファイルが配信された日時ではなく、リクエストが発生した期間の日時が含められます。

ログファイルを作成する場合、 は、ログファイルがカバーする期間中にオブジェクトのリクエストを受信したすべてのエッジロケーションからのディストリビューションの情報を CloudFront 統合します。

CloudFront は、ディストリビューションに関連付けられたオブジェクトに対して CloudFront 受信したリクエストの数に応じて、1 つの期間に複数のファイルを保存できます。

CloudFront は、ログ記録を有効にしてから約 4 時間後にアクセスログを確実に配信し始めます。この時間以前にも少しのアクセスログを取得できる場合もあります。

注記

期間中にオブジェクトに対してユーザーによるリクエストがなければ、その期間のログファイルは配信されません。

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

リクエスト URL またはヘッダーが最大のサイズを超えた場合にリクエストがどのようにログに記録されるか

クッキーを含むすべてのリクエストヘッダーの合計サイズが 20 KB を超える場合、または URL が 8192 バイトの URL サイズ制限を超える場合、 CloudFront ではリクエストを完全に解析できないため、リクエストをログに記録できません。リクエストがログ記録されないため、返された HTTP エラーステータスコードをログファイルで表示できません。

リクエストボディが最大サイズを超えると、HTTP エラー状態コードを含むリクエストがログに記録されます。

標準ログの分析

1 時間ごとに複数のアクセスログが配信される可能性があるため、特定の期間に対して受信したすべてのログファイルをまとめて 1 つのファイルにしておくことをお勧めします。これにより、その期間のデータをより正確かつ完全に分析することができます。

アクセスログを分析する方法の 1 つとして Amazon Athena を使用する方法があります。Athena は、 AWSを含む サービスのデータの分析に役立つインタラクティブなクエリサービスです CloudFront。詳細については、「Amazon Athena ユーザーガイド」の「Amazon CloudFront Logs のクエリ」を参照してください。 Amazon Athena

さらに、次の AWS ブログ投稿では、アクセスログを分析するいくつかの方法について説明しています。

重要

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

標準ログ記録設定の編集

コンソールまたは CloudFront CloudFront API を使用して、ログ記録を有効または無効にしたり、ログが保存されている Amazon S3 バケットを変更したり、ログファイルのプレフィックスを変更したりできます。ログ作成設定の変更は 12 時間以内に有効になります。

詳細については、次のトピックを参照してください。

  • CloudFront コンソールを使用してディストリビューションを更新するには、「」を参照してくださいディストリビューションの更新

  • CloudFront API を使用してディストリビューションを更新するには、「Amazon CloudFront API リファレンス」のUpdateDistribution「」を参照してください。

Amazon S3 バケットからの標準ログファイルの削除

CloudFront は、Amazon S3 バケットからログファイルを自動的に削除しません。Amazon S3 バケットからログファイルを削除する方法については、次のトピックを参照してください。

  • Amazon S3 コンソールの使用: Amazon Simple Storage Service Console ユーザーガイドの「オブジェクトの削除」。

  • Amazon Simple Storage Service API リファレンスのDeleteObject「REST API の使用:」。

標準ログファイル形式

ログファイルには、1 つのビューワーリクエストの詳細が 1 エントリとして記録されます。ログファイルの特性は次のとおりです。

  • W3C 拡張ログファイル形式を使用します。

  • タブ区切りの値が含まれます。

  • レコードが必ずしも時系列順に含まれているとは限りません。

  • 2 つのヘッダー行が含まれます。1 つのヘッダー行にファイル形式のバージョンが示され、もう 1 つのヘッダー行に、各レコードに含まれる W3C フィールドが示されます。

  • フィールド値に URL エンコードされたスペースおよび特定の他の文字を含めます。

    URL エンコードされた同等の文字は、次の文字に使用されます。

    • ASCII 文字コード 0~32 以内

    • ASCII 文字コード 127 以上

    • 次の表のすべての文字

    URL エンコーディング標準は RFC 1738 で定義されています。

URL エンコードされた値

文字

%3C

<

%3E

>

%22

"

%23

#

%25

%

%7B

{

%7D

}

%7C

|

%5C

\

%5E

^

%7E

~

%5B

[

%5D

]

%60

`

%27

'

%20

スペース

標準ログファイルフィールド

ディストリビューションのログファイルには、33 のフィールドが含まれています。次のリストは、各フィールド名と、そのフィールドに保持される情報の説明を順番に示しています。

  1. date

    イベントが発生した日付。YYYY-MM-DD 形式です。たとえば、2019-06-30 と指定します。日付と時刻は協定世界時 (UTC) です。接続の場合 WebSocket、これは接続が閉じられた日付です。

  2. time

    CloudFront サーバーがリクエストへの応答を完了した時刻 (UTC)01:42:39。たとえば、。 WebSocket 接続の場合、これは接続が閉じられた時刻です。

  3. x-edge-location

    リクエストを処理したエッジロケーション。各エッジロケーションは、3 文字コードと、割り当てられた任意の数字で識別されます (例: DFW3)。通常、この 3 文字コードは、エッジロケーションの地理的場所の近くにある空港の、国際航空運送協会 (IATA) の空港コードに対応します。(これらの略語は今後変更される可能性があります)。

  4. sc-bytes

    サーバーがリクエストに応じてビューワーに送信したデータ (ヘッダーを含む) のバイトの合計数。 WebSocket 接続の場合、これは接続を介してサーバーからクライアントに送信された合計バイト数です。

  5. c-ip

    リクエスト元のビューワーの IP アドレス (192.0.2.183 または 2001:0db8:85a3::8a2e:0370:7334 など)。ビューワーが HTTP プロキシまたはロードバランサーを使用してリクエストを送った場合、このフィールドの値はプロキシまたはロードバランサーの IP アドレスです。x-forwarded-for フィールドも参照してください。

  6. cs-method

    ビューワーから受信した HTTP リクエストメソッド。

  7. cs(Host)

    CloudFront ディストリビューションのドメイン名 (d111111abcdef8.cloudfront.net など)。

  8. cs-uri-stem

    パスとオブジェクトを識別するリクエスト URL の部分 (/images/cat.jpg など)。URL 内の疑問符 (?) およびクエリ文字列はログに含まれません。

  9. sc-status

    次のいずれかの値が含まれます。

    • サーバーのレスポンスの HTTP ステータスコード (例: 200)。

    • 000。この値は、サーバーがリクエストに応答する前に、ビューワーが接続を閉じたことを示します。サーバーがレスポンスの送信を開始した後にビューワーが接続を閉じた場合、このフィールドには、サーバーが送信を開始したレスポンスの HTTP ステータスコードが含まれます。

  10. cs(Referer)

    リクエスト内の Referer ヘッダーの値。これはリクエスト元のドメインの名前です。一般的なリファラーとして、検索エンジン、オブジェクトに直接リンクされた他のウェブサイト、ユーザー自身のウェブサイトなどがあります。

  11. cs(User-Agent)

    リクエスト内の User-Agent ヘッダーの値。User-Agent ヘッダーでリクエスト元 (リクエスト元のデバイスとブラウザのタイプなど) が識別されます。リクエスト元が検索エンジンの場合は、どの検索エンジンかも識別されます。

  12. cs-uri-query

    リクエスト URL のクエリ文字列の部分 (ある場合)。

    URL にクエリ文字列が含まれない場合、このフィールドの値はハイフン (-) です。詳細については、「クエリ文字列パラメータに基づくコンテンツのキャッシュ」を参照してください。

  13. cs(Cookie)

    名前と値のペアおよび関連属性を含む、リクエスト内の Cookie ヘッダー。

    Cookie ログ記録を有効にする CloudFront と、 は、どの Cookie をオリジンに転送するかにかかわらず、すべてのリクエストの Cookie を記録します。リクエストに Cookie ヘッダーが含まれていない場合、このフィールドの値はハイフン (-) です。Cookie の詳細については、「Cookie に基づくコンテンツのキャッシュ」を参照してください。

  14. x-edge-result-type

    サーバーが、最後のバイトを渡した後で、レスポンスを分類した方法。場合によっては、サーバーがレスポンスを送る準備ができたときから、サーバーがレスポンスを送り終わるまでの間に、結果タイプが変わることがあります。x-edge-response-result-type フィールドも参照してください。

    例えば、HTTP ストリーミングで、サーバーがキャッシュ内でストリームのセグメントを検出するとします。そのシナリオでは、このフィールドの値は、通常 Hit になります。この場合、サーバーがセグメント全体を配信する前にビューワーが接続を閉じると、最終結果タイプ (およびこのフィールドの値) は Error になります。

    WebSocket コンテンツはキャッシュできず、オリジンに直接プロキシされるため、 接続では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 にビューワーをリダイレクトしました。

  15. x-edge-request-id

    リクエストを一意に識別する不透明な文字列。 CloudFront はx-amz-cf-idレスポンスヘッダーでもこの文字列を送信します。

  16. x-host-header

    ビューワーが、このリクエストの Host ヘッダーに追加した値。オブジェクト URL で CloudFront ドメイン名 (d111111abcdef8.cloudfront.net など) を使用している場合、このフィールドにはそのドメイン名が含まれます。 URLs 代替ドメイン名 (CNAME) をオブジェクト URL (www.example.com) に使用している場合、このフィールドにはその代替ドメイン名が含まれます。

    代替ドメイン名を使っている場合には、フィールド 7 の cs(Host) で、ユーザーのディストリビューションに関連するドメイン名を確認します。

  17. cs-protocol

    ビューワーリクエストのプロトコル (httphttpswswss のいずれか)。

  18. cs-bytes

    ビューワーがリクエストに含めたデータ (ヘッダーを含む) のバイトの合計数。 WebSocket 接続の場合、これは接続でクライアントからサーバーに送信された合計バイト数です。

  19. time-taken

    サーバーが、ビューワーのリクエストを受信してからレスポンスの最後のバイトを出力キューに書き込むまでの秒数。サーバーで 1,000 分の 1 秒単位まで測定されます (例: 0.082)。ビューワーから見た場合、レスポンス全体を取得する合計所要時間は、ネットワークのレイテンシーと TCP バッファリングにより、この値よりも長くなります。

  20. x-forwarded-for

    ビューワーが HTTP プロキシまたはロードバランサーを使用してリクエストを送信した場合、c-ip フィールドの値はプロキシまたはロードバランサーの IP アドレスです。この場合、このフィールドはリクエスト元のビューワーの IP アドレスです。このフィールドには、IPv4 アドレス (192.0.2.183 など) または IPv6 アドレス (2001:0db8:85a3::8a2e:0370:7334 など) が含まれます。

    ビューワーが HTTP プロキシまたはロードバランサーを使用しなかった場合、このフィールドの値はハイフン (-) です。

  21. ssl-protocol

    リクエストが HTTPS を使用した場合、このフィールドには、リクエストとレスポンスを送信するためにビューワーとサーバーがネゴシエートした SSL/TLS プロトコルが含まれます。指定可能な値のリストについては、ビューワーと の間でサポートされているプロトコルと暗号 CloudFront でサポートされている SSL/TLS プロトコルを参照してください。

    フィールド 17 の cs-protocolhttp である場合、このフィールドの値はハイフン (-) です。

  22. ssl-cipher

    リクエストが HTTPS を使用した場合、このフィールドには、リクエストとレスポンスを暗号化するためにビューワーとサーバーがネゴシエートした SSL/TLS 暗号が含まれます。使用できる値のリストについては、「ビューワーと の間でサポートされているプロトコルと暗号 CloudFront」で、サポートされている SSL/TLS 暗号化を参照してください。

    フィールド 17 の cs-protocolhttp である場合、このフィールドの値はハイフン (-) です。

  23. 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 にビューワーをリダイレクトしました。

  24. cs-protocol-version

    ビューワーがリクエストで指定した HTTP バージョン。指定できる値には、HTTP/0.9HTTP/1.0HTTP/1.1HTTP/2.0および HTTP/3.0 などがあります。

  25. fle-status

    フィールドレベル暗号化がディストリビューション用に設定されている場合、このフィールドにはリクエストボディが正常に処理されたかどうかを示すコードが含まれます。サーバーがリクエストボディを正常に処理し、指定したフィールドの値を暗号化してリクエストをオリジンに転送すると、このフィールドの値は 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 をビューワーに返します。フィールドレベル暗号化に関する最新のクォータのリストについては、「フィールドレベル暗号化のクォータ」を参照してください。

    • FieldLengthLimitClientError – 暗号化されるように設定されているフィールドが最大の長さを超えています。

    • FieldNumberLimitClientError – ディストリビューションによって暗号化されるように設定されているリクエストがフィールド数の制限を超えています。

    • RequestLengthLimitClientError – フィールドレベル暗号化が設定されている場合にリクエストボディが最大の長さを超えています。

    フィールドレベル暗号化がディストリビューション用に設定されていない場合、このフィールドの値はハイフン (-) です。

  26. fle-encrypted-fields

    サーバーが暗号化してオリジンに転送したフィールドレベル暗号化フィールドの数。 CloudFront サーバーfle-statusは、データを暗号化するときに処理されたリクエストをオリジンにストリーミングするため、 の値がエラーであってもこのフィールドに値を設定できます。

    フィールドレベル暗号化がディストリビューション用に設定されていない場合、このフィールドの値はハイフン (-) です。

  27. c-port

    閲覧者からのリクエストのポート番号。

  28. time-to-first-byte

    サーバー上で測定される、要求を受信してから応答の最初のバイトを書き込むまでの秒数。

  29. x-edge-detailed-result-type

    このフィールドには、以下の場合を除き、x-edge-result-type フィールドと同じ値が含まれます。

    • オブジェクトが Origin Shield レイヤーからビューワーに渡された場合、このフィールドには OriginShieldHit が含まれています。

    • オブジェクトが CloudFront キャッシュに存在せず、レスポンスがオリジンリクエストの Lambda@Edge 関数 によって生成された場合、このフィールドには が含まれます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 – オリジンエラーの原因となったメッセージの読み取りに時間がかかりました。

  30. sc-content-type

    レスポンスの HTTP Content-Type ヘッダーの値。

  31. sc-content-len

    レスポンスの HTTP Content-Length ヘッダーの値。

  32. sc-range-start

    レスポンスに HTTP Content-Range ヘッダーが含まれている場合、このフィールドには範囲の開始値が含まれます。

  33. sc-range-end

    レスポンスに HTTP Content-Range ヘッダーが含まれている場合、このフィールドには範囲の終了値が含まれます。

ディストリビューションのログファイルの例を以下に示します。

#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 - -

標準ログの料金

標準ログ記録は、 のオプション機能です CloudFront。標準ログ記録を有効にしても追加料金はかかりません。ただし、Amazon S3 でのファイルの保存とアクセス用に通常の Amazon S3 料金が発生します (ファイルはいつでも削除できます)。

Amazon S3 の料金に関する詳細については、「Amazon S3 の料金」を参照してください。

CloudFront 料金の詳細については、「 CloudFront の料金」を参照してください。