標準ログ記録リファレンス
以下のセクションは、標準ログ記録 (v2) と標準ログ記録 (レガシー) の両方に該当します。
ログファイル配信のタイミング
CloudFront は、ディストリビューションのログを 1 時間に最大で数回配信します。一般的に、ログファイルには、一定期間内に CloudFront が受信したリクエストに関する情報が含まれています。CloudFront は通常、その期間のログファイルを、ログにイベントが表示されてから 1 時間以内に送信先に配信します。ただし、ある期間のログファイルエントリの一部またはすべてが、最大で 24 時間遅れることもあります。ログエントリが遅れた場合、CloudFront はこれらをログファイルに保存します。ファイル名には、ファイルの配信日時ではなく、リクエストが発生した期間の日時が使用されます。
CloudFront は、ログファイルを作成する場合、ログファイルに対応する期間中にオブジェクトについてリクエストを受信したすべてのエッジロケーションから、ディストリビューションの情報を集約します。
CloudFront は、ディストリビューションに関連付けられているオブジェクトについて CloudFront が受信したリクエストの数により、1 つの期間に対して複数のファイルを保存することもできます。
CloudFront によるアクセスログの出力が確実に行われるのは、ログ記録が有効になって約 4 時間後からです。この時間以前にも少しのアクセスログを取得できる場合もあります。
注記
期間中にオブジェクトに対してユーザーによるリクエストがなければ、その期間のログファイルは配信されません。
リクエスト URL またはヘッダーが最大のサイズを超えた場合にリクエストがどのようにログに記録されるか
クッキーを含むすべてのリクエストヘッダーの合計サイズが 20 KB を超える場合、または URL が 8192 バイトの URL サイズ制限を超える場合、CloudFront ではリクエストを完全に解析できないため、リクエストをログに記録できません。リクエストがログ記録されないため、返された HTTP エラーステータスコードをログファイルで表示できません。
リクエストボディが最大サイズを超えると、HTTP エラー状態コードを含むリクエストがログに記録されます。
ログファイルのフィールド
ディストリビューションのログファイルには、33 のフィールドが含まれています。次のリストは、各フィールド名と、そのフィールドに保持される情報の説明を順番に示しています。
-
date
イベントが発生した日付。
YYYY-MM-DD
形式です。例えば、2019-06-30
。日付と時刻は協定世界時 (UTC) です。WebSocket 接続の場合、これは接続が閉じた日付です。 -
time
CloudFront サーバーがリクエストへの対応を完了した時刻 (UTC) (
01:42:39
など)。WebSocket 接続の場合、これは接続を閉じる時間です。 -
x-edge-location
リクエストを処理したエッジロケーション。各エッジロケーションは、3 文字コードと、割り当てられた任意の数字で識別されます (例: DFW3)。通常、この 3 文字コードは、エッジロケーションの地理的場所の近くにある空港の、国際航空運送協会 (IATA) の空港コードに対応します。(これらの略語は今後変更される可能性があります)。
-
sc-bytes
サーバーがリクエストに応じてビューワーに送信したデータ (ヘッダーを含む) のバイトの合計数。WebSocket および gRPC 接続の場合、これは接続を経由してサーバーからクライアントに送信した合計バイト数です。
-
c-ip
リクエスト元のビューワーの IP アドレス (
192.0.2.183
または2001:0db8:85a3::8a2e:0370:7334
など)。ビューワーが HTTP プロキシまたはロードバランサーを使用してリクエストを送った場合、このフィールドの値はプロキシまたはロードバランサーの IP アドレスです。x-forwarded-for
フィールドも参照してください。 -
cs-method
ビューワーから受信した HTTP リクエストメソッド。
-
cs(Host)
CloudFront ディストリビューションのドメイン名 (d111111abcdef8.cloudfront.net など)。
-
cs-uri-stem
パスとオブジェクトを識別するリクエスト URL の部分 (
/images/cat.jpg
など)。URL 内の疑問符 (?) およびクエリ文字列はログに含まれません。 -
sc-status
次のいずれかの値が含まれます。
-
サーバーのレスポンスの HTTP ステータスコード (例:
200
)。 -
000
。この値は、サーバーがリクエストに応答する前に、ビューワーが接続を閉じたことを示します。サーバーがレスポンスの送信を開始した後にビューワーが接続を閉じた場合、このフィールドには、サーバーが送信を開始したレスポンスの HTTP ステータスコードが含まれます。
-
-
cs(Referer)
リクエスト内の
Referer
ヘッダーの値。これはリクエスト元のドメインの名前です。一般的なリファラーとして、検索エンジン、オブジェクトに直接リンクされた他のウェブサイト、ユーザー自身のウェブサイトなどがあります。 -
cs(User-Agent)
リクエスト内の
User-Agent
ヘッダーの値。User-Agent
ヘッダーでリクエスト元 (リクエスト元のデバイスとブラウザのタイプなど) が識別されます。リクエスト元が検索エンジンの場合は、どの検索エンジンかも識別されます。 -
cs-uri-query
リクエスト URL のクエリ文字列の部分 (ある場合)。
URL にクエリ文字列が含まれない場合、このフィールドの値はハイフン (-) です。詳細については、「クエリ文字列パラメータに基づいてコンテンツをキャッシュする」を参照してください。
-
cs(Cookie)
名前と値のペアおよび関連属性を含む、リクエスト内の
Cookie
ヘッダー。Cookie のログ作成を有効にした場合は、どの Cookie についてオリジンの転送を指定したかに関係なく、CloudFront ではすべてのリクエスト内の Cookie がログに記録されます。リクエストに Cookie ヘッダーが含まれていない場合、このフィールドの値はハイフン (-) です。Cookie の詳細については、「Cookie に基づいてコンテンツをキャッシュする」を参照してください。
-
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 にビューワーをリダイレクトしました。
-
-
x-edge-request-id
リクエストを一意に識別する不透明な文字列。CloudFront では、この文字列を
x-amz-cf-id
レスポンスヘッダーでも送信します。 -
x-host-header
ビューワーが、このリクエストの
Host
ヘッダーに追加した値。オブジェクトの URL に CloudFront ドメイン名を使用している場合 (d111111abcdef8.cloudfront.net など)、このフィールドにはそのドメイン名が含まれます。代替ドメイン名 (CNAME) をオブジェクト URL (www.example.com) に使用している場合、このフィールドにはその代替ドメイン名が含まれます。代替ドメイン名を使っている場合には、フィールド 7 の
cs(Host)
で、ユーザーのディストリビューションに関連するドメイン名を確認します。 -
cs-protocol
ビューワーリクエストのプロトコル (
http
、https
、grpcs
、ws
、またはwss
)。 -
cs-bytes
ビューワーがリクエストに含めたデータ (ヘッダーを含む) のバイトの合計数。WebSocket および gRPC 接続の場合、これは接続を経由してクライアントからサーバーに送信した合計バイト数です。
-
time-taken
サーバーが、ビューワーのリクエストを受信してからレスポンスの最後のバイトを出力キューに書き込むまでの秒数。サーバーで 1,000 分の 1 秒単位まで測定されます (例: 0.082)。ビューワーから見た場合、レスポンス全体を取得する合計所要時間は、ネットワークのレイテンシーと TCP バッファリングにより、この値よりも長くなります。
-
x-forwarded-for
ビューワーが HTTP プロキシまたはロードバランサーを使用してリクエストを送信した場合、
c-ip
フィールドの値はプロキシまたはロードバランサーの IP アドレスです。この場合、このフィールドはリクエスト元のビューワーの IP アドレスです。このフィールドには、複数の IP アドレスをカンマで区切って含めることができます。各 IP アドレスは、IPv4 アドレス (192.0.2.183
など) または IPv6 アドレス (2001:0db8:85a3::8a2e:0370:7334
など) にすることができます。ビューワーが HTTP プロキシまたはロードバランサーを使用しなかった場合、このフィールドの値はハイフン (-) です。
-
ssl-protocol
リクエストが HTTPS を使用した場合、このフィールドには、リクエストとレスポンスを送信するためにビューワーとサーバーがネゴシエートした SSL/TLS プロトコルが含まれます。指定可能な値のリストについては、ビューワーと CloudFront との間でサポートされているプロトコルと暗号 でサポートされている SSL/TLS プロトコルを参照してください。
フィールド 17 の
cs-protocol
がhttp
である場合、このフィールドの値はハイフン (-) です。 -
ssl-cipher
リクエストが HTTPS を使用した場合、このフィールドには、リクエストとレスポンスを暗号化するためにビューワーとサーバーがネゴシエートした SSL/TLS 暗号が含まれます。使用できる値のリストについては、「ビューワーと CloudFront との間でサポートされているプロトコルと暗号」で、サポートされている SSL/TLS 暗号化を参照してください。
フィールド 17 の
cs-protocol
がhttp
である場合、このフィールドの値はハイフン (-) です。 -
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 にビューワーをリダイレクトしました。
-
-
cs-protocol-version
ビューワーがリクエストで指定した HTTP バージョン。指定できる値には、
HTTP/0.9
、HTTP/1.0
、HTTP/1.1
、HTTP/2.0
およびHTTP/3.0
などがあります。 -
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
– フィールドレベル暗号化が設定されている場合にリクエストボディが最大の長さを超えています。
フィールドレベル暗号化がディストリビューション用に設定されていない場合、このフィールドの値はハイフン (-) です。
-
-
fle-encrypted-fields
サーバーが暗号化してオリジンに転送したフィールドレベル暗号化フィールドの数。CloudFront サーバーは処理されたリクエストをオリジンにストリーミングするときにデータを暗号化するため、
fle-status
の値がエラーであっても、このフィールドに値が渡されている場合があります。フィールドレベル暗号化がディストリビューション用に設定されていない場合、このフィールドの値はハイフン (-) です。
-
c-port
閲覧者からのリクエストのポート番号。
-
time-to-first-byte
サーバー上で測定される、要求を受信してから応答の最初のバイトを書き込むまでの秒数。
-
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
– オリジンエラーの原因となったメッセージの読み取りに時間がかかりました。
-
-
-
sc-content-type
レスポンスの HTTP
Content-Type
ヘッダーの値。 -
sc-content-len
レスポンスの HTTP
Content-Length
ヘッダーの値。 -
sc-range-start
レスポンスに HTTP
Content-Range
ヘッダーが含まれている場合、このフィールドには範囲の開始値が含まれます。 -
sc-range-end
レスポンスに HTTP
Content-Range
ヘッダーが含まれている場合、このフィールドには範囲の終了値が含まれます。 -
distribution-tenant-id
ディストリビューションテナントの ID。
ディストリビューションのログファイルの例を以下に示します。
#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 - -
ログを分析する
1 時間ごとに複数のアクセスログが配信される可能性があるため、特定の期間に対して受信したすべてのログファイルをまとめて 1 つのファイルにしておくことをお勧めします。これにより、その期間のデータをより正確かつ完全に分析することができます。
アクセスログを分析する方法の 1 つとして Amazon Athena
さらに、次の AWS ブログ投稿では、アクセスログを分析するいくつかの方法について説明しています。
-
Amazon CloudFront Request Logging
(HTTP 経由で配信するコンテンツの場合)