標準ログ (アクセスログ) の設定および使用 - 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 を使用する場合は、同じバケットをログファイルに使用しないことをお勧めします。別々のバケットを使用すると、メンテナンスが容易になります。

注記

Don’t choose an Amazon S3 bucket in any of the following Regions, because CloudFront doesn’t deliver access logs to buckets in these Regions:

  • Africa (Cape Town)  af-south-1

  • Asia Pacific (Hong Kong)  ap-east-1

  • Europe (Milan)  eu-south-1

  • Middle East (Bahrain)  me-south-1

The Amazon S3 console shows the bucket’s Region.

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

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

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

  • バケットの S3 アクセスコントロールリスト (ACL) は FULL_CONTROL を付与する必要があります。バケット所有者のアカウントには、デフォルトでこのアクセス許可があります。権限がない場合、バケット所有者はバケットの ACL を更新する必要があります。

  • s3:GetBucketAcl

  • s3:PutBucketAcl

次の点に注意してください。

バケットの ACL

ディストリビューションを作成または更新してロギングを有効にすると、CloudFront はこれらのアクセス許可を使用してバケットの ACL を更新し、FULL_CONTROL アカウントに awslogsdelivery のアクセス許可を付与します。awslogsdelivery アカウントはログファイルをバケットに書き込みます。アカウントに ACL を更新するために必要なアクセス許可がない場合、ディストリビューションの作成または更新は失敗します。

状況によっては、バケットを作成するリクエストをプログラムで送信したが、指定した名前のバケットが既に存在する場合、S3 ではバケットのアクセス許可をデフォルト値にリセットします。アクセスログを S3 バケットに保存するように CloudFront を設定した後で、そのバケットでログを受け取ることを中止する場合は、バケットのアクセス許可をチェックして CloudFront に必要なアクセス許可があることを確認します。

バケットの ACL を復元する

awslogsdelivery アカウントのアクセス許可を削除した場合、CloudFront はログを S3 バケットに保存できません。CloudFront がディストリビューションのログ保存を再開するには、次のいずれかの操作を行って ACL アクセス許可を復元します。

  • CloudFront ディストリビューションのログ記録を無効化してから、再度有効にします。詳細については、「ディストリビューションを作成または更新する場合に指定する値」を参照してください。

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

    c4c1ede66af53448b93c283ce9448c4ba468c9432aa01d700d3878632f77d2d0

    S3 バケットへの ACL の追加の詳細については、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コンソールユーザーガイドの「オブジェクトの削除

  • REST API を使用する場合: Amazon Simple Storage Service API Referenceの「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

スペース

ウェブディストリビューションの標準ログファイル形式

ウェブディストリビューションのログファイルには以下のフィールドがこの順序で含まれます。

フィールド番号 フィールド名 説明
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 文字コードは、エッジロケーションの近くにある空港の、国際航空運送協会の空港コードに対応します。 (これらの略語は今後変更される可能性があります。) エッジロケーションのリストについては、「Amazon CloudFront インフラストラクチャ」ページを参照してください。
4 sc-bytes CloudFront がリクエスト (ヘッダーを含む) に応答してビューワーに渡したデータの総バイト数 (1045619 など)。WebSocket 接続の場合、これは接続を経由してサーバーからクライアントに送信した合計バイト数です。
5 c-ip リクエスト元のビューワーの IP アドレス (192.0.2.183 または 2001:0db8:85a3:0000:0000:8a2e:0370:7334 など)。ビューワーが HTTP プロキシまたはロードバランサーを使用してリクエストを送った場合、c-ip の値はプロキシまたはロードバランサーの IP アドレスです。フィールド 20 で X-Forwarded-For も確認してください。
6 cs-method HTTP リクエストメソッド: DELETEGETHEADOPTIONSPATCHPOST、または PUT
7 cs(Host) CloudFront ディストリビューションのドメイン名 (d111111abcdef8.cloudfront.net など)。
8 cs-uri-stem パスおよびオブジェクトを識別する URI の部分 (/images/cat.jpg など)。URL 内の疑問符 (?) およびクエリ文字列はログに含まれません。
9 sc-status

次のいずれかの値になります。

10 cs(Referer) リクエスト元のドメインの名前。一般的なリファラーとして、検索エンジン、オブジェクトに直接リンクされた他のウェブサイト、ユーザー自身のウェブサイトなどがあります。
11 cs(User-Agent) リクエスト内の User-Agent ヘッダーの値。User-Agent ヘッダーでリクエスト元 (リクエスト元のデバイスとブラウザのタイプなど) が識別されます。リクエスト元が検索エンジンの場合は、どの検索エンジンかも識別されます。詳細については、「ユーザーエージェントヘッダー」を参照してください。
12 cs-uri-query

URI のクエリ文字列の部分 (ある場合)。URI にクエリ文字列が含まれない場合、このフィールドの値はハイフン (-) です。

詳細については、「クエリ文字列パラメータに基づくコンテンツのキャッシュ」を参照してください。

13 cs(Cookie)

名前値のペアおよび関連属性を含む、リクエスト内の Cookie ヘッダー。Cookie のログ作成を有効にした場合、CloudFront は、お客様がどの Cookie をオリジンに転送するように選択したかに関係なく、すべての要求内の Cookie をログに記録します。リクエストに Cookie ヘッダーが含まれていない場合、このフィールドの値はハイフン (-) です。

Cookie の詳細については、「Cookie に基づくコンテンツのキャッシュ」を参照してください。

14 x-edge-result-type

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

たとえば、HTTP ストリーミングで、CloudFront がエッジキャッシュ内にセグメントを見つけたとします。そのシナリオでは、このフィールドの値は、通常 Hit になります。ただし、CloudFront がセグメント全体を配信する前に閲覧者が接続を閉じた場合、最終結果タイプ、そしてこのフィールドの値は Error になります。

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

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

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

    オリジンからのレスポンスに Cache-Control: no-cache ヘッダーが含まれていても CloudFront が結果タイプを Hit と分類する状況の詳細については、「同じオブジェクト (トラフィックスパイク) の同時リクエスト」を参照してください。

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

  • Miss – エッジキャッシュ内のオブジェクトがリクエストに対して適切ではなかったため、CloudFront はリクエストをオリジンサーバーに転送して結果をビューワーに返しました。

  • LimitExceeded – CloudFront クォータを超えたため、要求は拒否されました。

  • CapacityExceeded – CloudFront エッジサーバーが一時的にリクエストに応答できなかったため、CloudFront から HTTP 503 ステータスコード (Service Unavailable) が返されました。

  • Error – 通常、これは、リクエストが結果的にクライアントエラー(sc-status4xx)またはサーバーエラー(sc-status5xx)になったことを意味します。sc-status200 の場合、この HTTP リクエストは成功しましたが、クライアントはすべてのバイトをダウンロードする前に切断されたことを意味します。

    このフィールドの値が Error であり、x-edge-response-result-type の値が Error でない場合、ダウンロードが完了する前にクライアントが切断されたことを意味します。

  • Redirect – CloudFront は HTTP から HTTPS にリダイレクトします。

    sc-status403 であって、お客様のコンテンツのディストリビューションを地理的に制限するように CloudFront を設定している場合、制限されている地理的な場所からリクエストが送られた可能性があります。地域制限の詳細については、「コンテンツの地理的ディストリビューションの制限」を参照してください。

15 x-edge-request-id 要求を一意に識別する暗号化された文字列。レスポンスのヘッダーでは、これは x-amz-cf-id です。
16 x-host-header

ビューワーによってこのリクエストの Host ヘッダーに追加された値。これはリクエストのドメイン名です。

  • http://d111111abcdef8.cloudfront.net/logo.png のような CloudFront のドメイン名をオブジェクト URL にお使いの場合、このフィールドにはそのドメイン名が含まれます。

  • http://example.com/logo.png のような代替ドメイン名をオブジェクト URL にお使いの場合、このフィールドには example.com のようにこの代替ドメイン名が含まれます。代替ドメイン名を使用するには、その名前をお客様のディストリビューションに追加する必要があります。詳細については、「代替ドメイン名 (CNAME) を追加してカスタム URL を使用する」を参照してください。

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

17 cs-protocol ビューアーによってリクエストに指定されたプロトコル: httphttpswswss
18 cs-bytes 閲覧者によりリクエストに含められたデータのバイト数(ヘッダーを含む)。WebSocket 接続の場合、これは接続でクライアントからサーバーに送信した合計バイト数です。
19 time-taken CloudFront エッジサーバーがビューワーのリクエストを受け取ってから CloudFront がレスポンスの最終バイトをエッジサーバーの出力キューに書き込むまでの秒数をサーバーで測定した値 (0.002 など 1000 分の 1 秒単位まで)。ビューワーから見た場合、オブジェクト全体を取得するのにかかる合計時間は、ネットワークのレイテンシーと TCP バッファリングにより、この値よりも長くなります。
20 x-forwarded-for

ビューワーがリクエストを送るのに HTTP プロキシやロードバランサーを使った場合、フィールド 5 の c-ip の値は、プロキシあるいはロードバランサーの IP アドレスとなります。この場合、このフィールドはリクエスト元のビューワーの IP アドレスです。このフィールドには、必要に応じて IPv4 アドレス(192.0.2.44 など)および IPv6 アドレス (2001:0db8:85a3:0000:0000:8a2e:0370:7334 など)が含まれます。

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

21 ssl-protocol

フィールド 17 のcs-protocolhttps の場合、このフィールドには、リクエストと回答の送受信についてクライアントと CloudFront が交渉した SSL/TLS プロトコルが含まれます。

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

  • SSLv3

  • TLSv1

  • TLSv1.1

  • TLSv1.2

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

22 ssl-cipher

フィールド 17 のcs-protocolhttps の場合、このフィールドには、リクエストと回答の暗号化についてクライアントと CloudFront が交渉した SSL/TLS 暗号が含まれます。

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

  • ECDHE-RSA-AES128-GCM-SHA256

  • ECDHE-RSA-AES128-SHA256

  • ECDHE-RSA-AES128-SHA

  • ECDHE-RSA-AES256-GCM-SHA384

  • ECDHE-RSA-AES256-SHA384

  • ECDHE-RSA-AES256-SHA

  • AES128-GCM-SHA256

  • AES256-GCM-SHA384

  • AES128-SHA256

  • AES256-SHA

  • AES128-SHA

  • DES-CBC3-SHA

  • RC4-MD5

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

23 x-edge-response-result-type

CloudFront がレスポンスをビューワーに返す直前に行った分類です。フィールド 14 で x-edge-result-type も確認してください。

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

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

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

  • Miss – エッジキャッシュ内のオブジェクトがリクエストに対して適切ではなかったため、CloudFront はリクエストをオリジンサーバーに転送して結果をビューワーに返しました。

  • LimitExceeded – CloudFront クォータを超えたため、要求は拒否されました。

  • CapacityExceeded – オブジェクトを渡すように要求されたときにエッジロケーションに十分な容量がなかったために、CloudFront が 503 エラーを返しました。

  • Error – 通常、これは、リクエストが結果的にクライアントエラー(sc-status4xx)またはサーバーエラー(sc-status5xx)になったことを意味します。

    x-edge-result-type の値が Error であり、このフィールドの値が Error でない場合、ダウンロードが完了する前にクライアントが切断されました。

  • Redirect – CloudFront は HTTP から HTTPS にリダイレクトします。

    sc-status403 であって、お客様のコンテンツのディストリビューションを地理的に制限するように CloudFront を設定している場合、制限されている地理的な場所からリクエストが送られた可能性があります。地域制限の詳細については、「コンテンツの地理的ディストリビューションの制限」を参照してください。

24 cs-protocol-version

ビューワーがリクエストで指定した HTTP バージョン。以下に示しているのは、可能な値です。

  • HTTP/0.9

  • HTTP/1.0

  • HTTP/1.1

  • HTTP/2.0

25 fle-status

フィールドレベル暗号化がディストリビューション用に設定されている場合、このフィールドにはリクエストボディが正常に処理されたかどうかを示すコードが含まれます。フィールドレベル暗号化がディストリビューション用に設定されていない場合、このフィールドの値はハイフン (-) です。

CloudFront がリクエストボディを正常に処理し、指定されたフィールドの値を暗号化して、リクエストをオリジンに転送すると、このフィールドの値は Processed になります。x-edge-result-type、フィールド 14 の値は、この場合でもクライアント側またはサーバー側のエラーを示すことができます。

リクエストがフィールドレベル暗号化のクォータを超えた場合、fle-status には以下のいずれかのエラーコードが含まれ、CloudFront は HTTP ステータスコード 400 をビューワーに返します。フィールドレベル暗号化に関する最新のクォータのリストについては、「フィールドレベル暗号化のクォータ」を参照してください。

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

  • FieldNumberLimitClientError – CloudFront によって暗号化されるように設定されているリクエストがフィールド数の制限を超えた。

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

このフィールドで使用できるその他の値には、次の値があります。

  • ForwardedByContentType – コンテンツタイプが設定されていないため、CloudFront が構文解析または暗号化を行わずにリクエストをオリジンに転送した。

  • ForwardedByQueryArgs – フィールドレベル暗号化の設定にないクエリ引数がリクエストに含まれているため、CloudFront が解析または暗号化を行わずにリクエストをオリジンに転送した。

  • ForwardedDueToNoProfile – フィールドレベル暗号化の設定でプロファイルを指定しなかったため、CloudFront が解析または暗号化を行わずにリクエストをオリジンに転送した。

  • MalformedContentTypeClientErrorContent-Type ヘッダーの値が無効な形式であるため、CloudFront がリクエストを拒否し、HTTP 400 ステータスコードをビューワーに返した。

  • MalformedInputClientError – リクエストボディが無効な形式であるため、CloudFront がリクエストを拒否し、HTTP 400 ステータスコードをビューワーに返した。

  • MalformedQueryArgsClientError – クエリ引数が空であるか無効な形式であるため、CloudFront がリクエストを拒否し、HTTP 400 ステータスコードをビューワーに返した。

  • RejectedByContentType – フィールドレベル暗号化の設定でコンテンツタイプを指定しなかったため、CloudFront がリクエストを拒否し、HTTP 400 ステータスコードをビューワーに返した。

  • RejectedByQueryArgs – フィールドレベル暗号化の設定でクエリ引数を指定しなかったため、CloudFront がリクエストを拒否し、HTTP 400 ステータスコードをビューワーに返した。

  • ServerError – サーバーがエラーを返した。

26 fle-encrypted-fields CloudFront が暗号化してオリジンに転送したフィールドの数。CloudFront は処理されたリクエストをオリジンにストリーミングするときにデータを暗号化するため、fle-status の値がエラーであっても、fle-encrypted-fields に値が渡されている場合があります。フィールドレベル暗号化がディストリビューション用に設定されていない場合、fle-encrypted-fields の値はハイフン (-) です。
27 c-port 閲覧者からのリクエストのポート番号。
28 time-to-first-byte サーバー上で測定される、要求を受信してから応答の最初のバイトを書き込むまでの秒数。
29 x-edge-detailed-result-type

x-edge-result-type (フィールド 14) が Error でない場合、このフィールドには x-edge-result-type と同じ値が含まれます。x-edge-result-typeError の場合、このフィールドには特定のタイプのエラーが含まれます。

このフィールドで考えられるエラータイプ値には、次のものがあります。

  • AbortedOrigin – CloudFront でオリジンに問題が発生しました。

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

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

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

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

  • InvalidRequest – CloudFront がビューワーから無効なリクエストを受け取りました。

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

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

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

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

  • OriginConnectError – CloudFront がオリジンに接続できませんでした。

  • OriginContentRangeLengthError – オリジンのレスポンスの Content-Length ヘッダーが、Content-Range ヘッダーの長さと一致しません。

  • OriginDnsError – CloudFront はオリジンのドメイン名を解決できませんでした。

  • OriginError – オリジンが誤ったレスポンスを返しました。

  • OriginHeaderTooBigError – オリジンから返されたヘッダーが大きすぎて CloudFront で処理できません。

  • OriginInvalidResponseError – オリジンが無効なレスポンスを返しました。

  • OriginReadError – CloudFront はオリジンから読み取れませんでした。

  • OriginWriteError – CloudFront はオリジンに書き込めませんでした。

  • 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 料金表」を参照してください。