標準記錄參考 - Amazon CloudFront

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

標準記錄參考

下列各節適用於標準記錄 (v2) 和標準記錄 (舊版)。

日誌檔案交付的時間

CloudFront 每小時最多交付分佈的日誌數次。一般而言,日誌檔案包含有關請求的資訊,CloudFront 在特定期間內收到此請求。CloudFront 通常會在日誌中出現事件的一小時內,將該時段的日誌檔案交付至您的目的地。不過,請注意,一個時段的部分或全部日誌檔案項目有時會延遲高達 24 小時。當日誌項目延遲時,CloudFront 會將它們儲存在日誌檔案中,其中檔案名稱包含請求發生期間的日期和時間,而不是交付檔案的日期和時間。

建立日誌檔案時,CloudFront 為分佈從所有節點整合資訊,此節點在日誌檔案涵蓋的時段間收到物件的請求。

根據 CloudFront 為與分佈關聯的物件收到多少請求,CloudFront 可以儲存一個時段內的多個檔案。

您啟用記錄後,CloudFront 會開始可靠地交付存取日誌大約四個小時。該時段之前,您可能會收到幾個存取日誌。

注意

如果在時段內沒有使用者請求您的物件,您便不會收到該時段的任何日誌檔案。

請求 URL 或標頭超過大小上限時,記錄請求的方式

若所有請求標頭 (包含 cookie) 的總大小超過 20 KB,或是 URL 超過 8192 個位元組,CloudFront 便無法完整剖析請求且無法記錄請求。因為沒有記錄請求,您將無法在日誌檔案中看到傳回的 HTTP 錯誤狀態代碼。

如果要求主體超過大小上限,則會記錄請求,包含 HTTP 錯誤狀態代碼。

日誌檔案欄位

分佈的日誌檔案包含 33 個欄位。下列清單依序包含每個欄位名稱,以及該欄位中資訊的描述。

  1. date

    事件發生的日期格式 YYYY-MM-DD。例如 2019-06-30。使用國際標準時間 (UTC) 的日期與時間。對於 WebSocket 連線,這是連線關閉的日期。

  2. time

    CloudFront 伺服器完成回應至請求的時間 (以 UTC 表示),例如 01:42:39。對於 WebSocket 連線,這是連線關閉的時間。

  3. x-edge-location

    提供請求的節點。一個三字母代碼和任意指派的數字會辨識每個節點,例如 DFW3。三字母代碼通常會對應節點所在地理位置附近機場的國際航空運輸協會 (IATA) 機場代碼。(未來這些縮寫可能會改變。)

  4. sc-bytes

    回應請求時伺服器提供給檢視器的總位元數,包括標頭。對於 WebSocket 與 gRPC 連線,這是透過連線從伺服器傳送到用戶端的位元組總數。

  5. c-ip

    檢視器的 IP 地址,該檢視器已執行請求,例如 192.0.2.1832001: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

    請求 URI 的查詢字串部分 (如果有)。

    當 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 與 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。

  15. x-edge-request-id

    可獨特識別請求的不透明字串。CloudFront 也會在 x-amz-cf-id 回應標頭中傳送此字串。

  16. x-host-header

    包含在該請求 Host 標頭的檢視器值。如果您在物件 URL 中使用 CloudFront 網域名稱 (例如 d111111abcdef8.cloudfront.net),則此欄位會包含該網域名稱。如果您使用物件 URL 中的備用網域名稱 (CNAME),例如 www.example.com,則此欄位包含此備用網域名稱。

    如果您使用備用網域名稱,請參閱網域名稱的欄位 7 中的 cs(Host),此網域名稱與分佈相關聯。

  17. cs-protocol

    檢視器請求的通訊協定 (httphttpsgrpcswswss)。

  18. cs-bytes

    檢視器包含在請求中的資料位元組總數,包括標頭。對於 WebSocket 與 gRPC 連線,這是連線時從用戶端傳送到伺服器的位元組總數。

  19. time-taken

    從伺服器收到檢視者請求,到伺服器將回應的最後一個位元組寫入輸出佇列的秒數 (以千分之一秒為單位,例如 0.082),這會在伺服器上測量。從檢視器來看,取得完整回應的總時間會比該值來的長,因為網路延遲和 TCP 緩衝。

  20. x-forwarded-for

    如果檢視器使用 HTTP 代理或負載平衡器傳送請求,c-ip 欄位值則為代理或負載平衡器的 IP 地址。在這種情況下,此欄位是產生請求的檢視器 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.0HTTP/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 標頭時,此欄位包含範圍結束值。

  34. 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 - -

分析日誌

由於您每個小時可以收到多個存取日誌,我們建議您將指定期間內收到的所有日誌檔案整合成一個檔案。然後,您可以更準確且完整地分析該期間的資料。

使用 Amazon Athena 是分析存取日誌的其中一種方法。Athena 是一種互動式查詢服務,可協助您分析 AWS 服務的資料,包括 CloudFront。若要進一步了解,請參閱 Amazon Athena 使用者指南中的查詢 Amazon CloudFront 日誌

此外,以下 AWS 部落格文章討論一些分析存取日誌的方法。