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

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

CloudFront が受信するすべてのユーザーリクエストに関する詳細情報を含めたログファイルが作成されるように CloudFront を設定できます。これらは、標準ログと呼ばれます。また、アクセスログとも呼ばれています。これらの標準ログは、ウェブディストリビューションと RTMP ディストリビューションの両方で使用できます。標準ログを有効にする場合、CloudFront でファイルを保存する Amazon S3 バケットも指定できます。

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

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

標準ログ記録のしくみ

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


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

以下では、前の図に示すように、オブジェクトのリクエストに関する情報が CloudFront によってログ記録されるしくみを説明します。

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

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

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

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

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

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

重要

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

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

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

注記

以下のリージョンでは Amazon S3 バケットを選択しないでください。CloudFront では、これらのリージョンのバケットにアクセスログが配信されません。

  • アフリカ (ケープタウン): af-south-1

  • アジアパシフィック (香港): ap-east-1

  • 欧州 (ミラノ): eu-south-1

  • 中東 (バーレーン): me-south-1

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 ではバケットやログファイルの ACL が削除されません。これはお客様自身で行うことができます。

SSE-KMS バケットに使用する必須の CMK キーポリシー

AWS KMS で管理されたキー (SSE-KMS) とカスタマー管理のカスタマーマスターキー (CMK) を使用して Amazon S3 バケットでサーバー側の暗号化を有効にしている場合、CMK のキーポリシーに以下を追加して、バケットにログファイルを書き込めるようにする必要があります。CloudFront ではログファイルをバケットにアップロードできないため、デフォルトの CMK を使用することはできません。

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

ファイル名の形式

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 で圧縮されたことを示しています。

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

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 は、CloudFront を含む AWS のサービスのデータを分析できる対話式のクエリサービスです。詳細については、Amazon Athena ユーザーガイドの「 Amazon CloudFront ログのクエリ」を参照してください。

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

重要

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

標準ログ記録設定の編集

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

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

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

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

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

CloudFront API を使用してウェブディストリビューションのアクセスログ設定を変更するには、2009-04-02 以降のバージョンの API を使用する必要があります。CloudFront API を使用して RTMP ディストリビューションのアクセスログ設定を変更するには、2010-05-01 以降のバージョンの API を使用する必要があります。

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

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

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

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

標準ログファイル形式

ログファイルには、1 つのビューアーリクエストの詳細が 1 エントリとして記録されます。ウェブディストリビューションと RTMP ディストリビューションのログファイルは同一ではありませんが、これらには、次に示す同じ特性があります。

  • 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:0000:0000: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 のログ作成を有効にした場合は、どの Cookie についてオリジンの転送を指定したかに関係なく、CloudFront ではすべてのリクエスト内の Cookie がログに記録されます。リクエストに Cookie ヘッダーが含まれていない場合、このフィールドの値はハイフン (-) です。Cookie の詳細については、「Cookie に基づくコンテンツのキャッシュ」を参照してください。

  14. x-edge-result-type

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

     

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

     

    WebSocket 接続の場合、コンテンツがキャッシュ可能ではなく、オリジンに直接プロキシされるため、このフィールドの値は Miss になります。

     

    以下に示しているのは、可能な値です。

    • Hit – サーバーがキャッシュからビューワーにオブジェクトを渡しました。

    • RefreshHit – サーバーはキャッシュ内でオブジェクトを検出しましたが、オブジェクトの有効期限が切れていたため、サーバーはオリジンに問い合わせて、キャッシュ内に最新バージョンのオブジェクトがあるかどうかを確認しました。

    • OriginShieldHit – オブジェクトは、Origin Shield キャッシュからビューワーに渡されました。

    • 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 など)、このフィールドにはそのドメイン名が含まれます。CNAMEs のような代替ドメイン名をオブジェクト URL (www.example.com) にお使いの場合は、このフィールドにはこの代替ドメイン名が含まれます。

     

    代替ドメイン名を使用している場合、ディストリビューションに関連付けられているドメイン名については、列 7 の cs(Host) を参照してください。

  17. cs-protocol

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

  18. cs-bytes

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

  19. time-taken

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

  20. x-forwarded-for

    ビューワーが HTTP プロキシまたはロードバランサーを使用してリクエストを送信した場合、c-ip フィールドの値はプロキシまたはロードバランサーの IP アドレスです。この場合、このフィールドはリクエスト元のビューワーの IP アドレスです。このフィールドには、IPv4 アドレス (192.0.2.183 など) または IPv6 アドレス (2001:0db8:85a3:0000:0000: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.1、および HTTP/2.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 フィールドが Error でない場合、このフィールドには x-edge-result-type と同じ値が含まれます。x-edge-result-type フィールドが Error の場合、このフィールドには特定のタイプのエラーが含まれます。以下に示しているのは、可能な値です。

    • AbortedOrigin – サーバーでオリジンに関する問題が発生しました。

    • ClientCommError – サーバーとビューワーとの通信の問題により、ビューワーへのレスポンスが中断されました。

    • ClientGeoBlocked – ディストリビューションは、ビューワーの地理的位置からのリクエストを拒否するように構成されています。

    • ClientHungUpRequest – リクエストの送信中にビューワーが途中で停止しました。

    • Error – エラータイプが他のどのカテゴリにも適合しないエラーが発生しました。このエラータイプは、キャッシュからのエラーレスポンスをサーバーが渡すときに発生する可能性があります。

    • InvalidRequest – サーバーがビューワーから無効なリクエストを受信しました。

    • InvalidRequestBlocked – 要求されたリソースへのアクセスがブロックされます。

    • InvalidRequestCertificate – ディストリビューションが、HTTPS 接続が確立された SSL/TLS 証明書と一致しません。

    • InvalidRequestHeader – リクエストに無効なヘッダーが含まれていました。

    • InvalidRequestMethod – ディストリビューションは、使用された HTTP リクエストメソッドを処理するように設定されていません。これは、ディストリビューションがキャッシュ可能なリクエストのみをサポートしている場合に発生します。

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

RTMP ディストリビューションのログファイル形式

RTMP アクセスログの各レコードは再生イベントを表します (接続、再生、一時停止、停止、切断など)。結果として CloudFront は、ビューワーがビデオを視聴するたびに複数のログレコードを生成します。同じストリーム ID に由来するログレコードを関連付けるには、x-sid フィールドを使用します。

注記

一部のフィールドはすべてのイベントで値を持ち、一部のフィールドは、再生、停止、一時停止、再開、およびシークイベントのみで値を持ちます。通常、ログファイルでフィールドの値がハイフン (-) である場合、そのフィールドは該当するイベントと無関係であることを意味します。

以下の表に、イベントのタイプに関係なく、RTMP ディストリビューションのログファイルの各レコードに表示されるフィールドを示します。これらのフィールドは、表に示された順序でログに表示されます。

フィールド番号 フィールド名 説明
1 date イベントが発生した日付。YYYY-MM-DD形式です(例: 2019-05-23)。日付と時刻は協定世界時 (UTC) です。
2 time サーバーがリクエストを受け付けた時刻 (UTC) (例: 01:42:39)。
3 x-edge-location 再生イベントが発生したエッジロケーション。各エッジロケーションは、3 文字コードと、割り当てられた任意の数字で識別されます (例: DFW3)。通常、この 3 文字コードは、エッジロケーションの近くにある空港の、国際航空運送協会の空港コードに対応します。 (これらの略語は今後変更される可能性があります。) エッジロケーションのリストについては、「Amazon CloudFront インフラストラクチャ」ページを参照してください。
4 c-ip クライアントの IP (例: 192.0.2.183)。
5 x-event イベントタイプ。接続、切断、再生、停止、一時停止、再開、またはシークイベントのいずれかです。
6 sc-bytes イベントの時間までにサーバーからクライアントに送信されたバイト数の合計。
7 x-cf-status イベントのステータスを示すコード。現在、このフィールドの唯一の値は "OK" です。今後の新しい機能によって新しいステータスコードが必要になる可能性があります。
8 x-cf-client-id

クライアントを区別するために使用できる不明瞭な文字列識別子。

この値は接続ごとに一意です。

9 cs-uri-stem アプリケーションおよびアプリケーションインスタンスを含む、URI のステム部分。これは、FMS 接続文字列と呼ばれることもあります。たとえば、rtmp://shqshne4jdp4b6.cloudfront.net/cfx/st と指定します。URL 内の疑問符 (?) およびクエリ文字列はログに含まれません。
10 cs-uri-query 接続文字列に含まれる URI のクエリ文字列部分。URL 内の疑問符 (?) およびクエリ文字列はログに含まれません。
11 c-referrer リファラーの URI。
12 x-page-url SWF のリンク元ページの URL。
13 c-user-agent リクエスト内の User-Agent ヘッダーの値。User-Agent ヘッダーは、リクエストを送信したデバイスのタイプを識別します。詳細については、「ユーザーエージェントヘッダー」を参照してください。

以下のフィールドは通常、Play、Stop、Pause、Unpause、Seek イベントのみで値を持ちます。その他のイベントの場合、フィールドの値は単一のハイフン (-) になります。これらのフィールドは、前の表で示したフィールドの後に、ここに示した順番でログに表示されます。

フィールド番号 フィールド名 説明
14 x-sname ストリーム名。
15 x-sname-query ストリームのクエリ文字列 (ある場合)。
16 x-file-ext ストリームタイプ (例: FLV)。
17 x-sid ストリーム ID。これは、接続に対する一意の整数識別子です。

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

#Version: 1.0 #Fields: date time x-edge-location c-ip x-event sc-bytes x-cf-status x-cf-client-id cs-uri-stem cs-uri-query c-referrer x-page-url​ c-user-agent x-sname x-sname-query x-file-ext x-sid 2010-03-12 23:51:20 SEA4 192.0.2.147 connect 2014 OK bfd8a98bee0840d9b871b7f6ade9908f rtmp://shqshne4jdp4b6.cloudfront.net/cfx/st​ key=value http://player.example.com/player.swf http://www.example.com/support/jw-player-setup-wizard?example=204 LNX%2010,0,32,18 - - - - 2010-03-12 23:51:21 SEA4 192.0.2.222 play 3914 OK bfd8a98bee0840d9b871b7f6ade9908f rtmp://shqshne4jdp4b6.cloudfront.net/cfx/st​ key=value http://player.example.com/player.swf http://www.example.com/support/jw-player-setup-wizard?example=204 LNX%2010,0,32,18 myvideo p=2&q=4 flv 1 2010-03-12 23:53:44 SEA4 192.0.2.4 stop 323914 OK bfd8a98bee0840d9b871b7f6ade9908f rtmp://shqshne4jdp4b6.cloudfront.net/cfx/st​ key=value http://player.example.com/player.swf http://www.example.com/support/jw-player-setup-wizard?example=204 LNX%2010,0,32,18 dir/other/myvideo p=2&q=4 flv 1 2010-03-12 23:53:44 SEA4 192.0.2.103 play 8783724 OK bfd8a98bee0840d9b871b7f6ade9908f rtmp://shqshne4jdp4b6.cloudfront.net/cfx/st​ key=value http://player.example.com/player.swf http://www.example.com/support/jw-player-setup-wizard?example=204 LNX%2010,0,32,18 dir/favs/myothervideo p=42&q=14 mp4 2 2010-03-12 23:56:21 SEA4 192.0.2.199 stop 429822014 OK bfd8a98bee0840d9b871b7f6ade9908f rtmp://shqshne4jdp4b6.cloudfront.net/cfx/st​ key=value http://player.example.com/player.swf http://www.example.com/support/jw-player-setup-wizard?example=204 LNX%2010,0,32,18 dir/favs/myothervideo p=42&q=14 mp4 2 2010-03-12 23:59:44 SEA4 192.0.2.14 disconnect 429824092 OK bfd8a98bee0840d9b871b7f6ade9908f rtmp://shqshne4jdp4b6.cloudfront.net/cfx/st​ key=value http://player.example.com/player.swf http://www.example.com/support/jw-player-setup-wizard?example=204 LNX%2010,0,32,18 - - - -

標準ログの料金

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

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

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