使用即時日誌 - Amazon CloudFront

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

使用即時日誌

透過 CloudFront 即時日誌,您可以即時取得對分發所發出之請求的相關資訊 (日誌會在收到請求後幾秒內傳送)。您可以使用即時日誌來監控、分析並根據內容交付效能採取動作。

您可以設定 CloudFront 即時記錄。您可以選擇:

  • 您可以為即時日誌選擇抽樣率,即要接收即時日誌的請求百分比。

  • 您想要在日誌中接收的特定欄位。

  • 您想要接收即時日誌的特定快取行為 (路徑模式)。

CloudFront 即時日誌會傳送到您在 Amazon Kinesis Data Streams 中選擇的資料流。您可以建置自己的 Kinesis 資料串流取用者,或使用 Amazon Data Firehose 將日誌資料傳送至 Amazon Simple Storage Service (Amazon S3)、Amazon Redshift、Amazon OpenSearch Service (OpenSearch Service) 或第三方日誌處理服務。

除了使用 Kinesis Data Streams 所產生的費用外,CloudFront 還會收取即時日誌的費用。如需定價的詳細資訊,請參閱 Amazon CloudFront 定價Amazon Kinesis Data Streams 定價

重要

我們建議您使用日誌,了解內容請求的性質,而不是像完全考量所有請求。CloudFront 依最佳作業基礎交付即時日誌。在實際處理請求之後,才可能長時間交付特定請求的日誌項目,在極少數的情況下,有可能完全不會交付日誌項目。從即時日誌省略日誌項目時,即時日誌中的項目數量將與 AWS 帳單和用量報告中顯示的用量不符。

建立和使用即時日誌組態

若要即時取得對分佈提出之請求的相關資訊。您可以使用即時日誌組態。日誌會在收到請求後的幾秒內交付。您可以在 CloudFront 主控台、使用 AWS Command Line Interface (AWS CLI) 或 CloudFront API 建立即時記錄設定。

若要使用即時日誌組態,請將它附加到 CloudFront 分發中的一或多個快取行為。

Console
建立即時日誌組態
  1. 登入 AWS Management Console ,並在位於 的 CloudFront CloudFront 主控台中開啟日誌頁面https://console.aws.amazon.com/cloudfront/v4/home?#/logs

  2. 選擇即時組態索引標籤。

  3. 選擇建立組態

  4. 名稱中,輸入組態的名稱。

  5. 針對取樣率,輸入您要接收日誌記錄的請求百分比。

  6. 對於欄位,選擇要在即時日誌中接收的欄位。

    • 若要包含日誌的所有 CMCD 欄位,請選擇 CMCD 所有金鑰

  7. 針對端點,選擇一或多個 Kinesis 資料串流來接收即時日誌。

    注意

    CloudFront 即時日誌會交付至您在 Kinesis Data Streams 中指定的資料串流。若要讀取和分析即時日誌,您可以建置自己的 Kinesis 資料串流取用者。您也可以使用 Firehose 將日誌資料傳送至 Amazon S3、Amazon Redshift、Amazon OpenSearch Service 或第三方日誌處理服務。

  8. 針對 IAM 角色,選擇建立新服務角色或選擇現有角色。您必須具有建立 IAM 角色的許可。

  9. (選用) 針對分佈,選擇要連接至即時日誌組態的 CloudFront 分佈和快取行為。

  10. 選擇建立組態

如果成功,主控台會顯示您剛才建立的即時日誌組態詳細資料。

如需詳細資訊,請參閱了解即時日誌組態

AWS CLI

若要使用 建立即時日誌組態 AWS CLI,請使用 aws cloudfront create-realtime-log-config命令。您可以使用輸入檔案來提供命令的輸入參數,而不是將每個個別參數指定為命令列輸入。

建立即時日誌組態 (含輸入檔案的 CLI)
  1. 使用下列命令建立一個命名為 rtl-config.yaml 的檔案,其中包含 create-realtime-log-config 命令的所有輸入參數。

    aws cloudfront create-realtime-log-config --generate-cli-skeleton yaml-input > rtl-config.yaml
  2. 開啟您剛才建立且命名為 rtl-config.yaml 的檔案。編輯檔案以指定所需的即時日誌組態設定,然後儲存檔案。注意下列事項:

    • 對於 StreamType,唯一有效的值為 Kinesis

    如需即時長組態設定的詳細資訊,請參閱了解即時日誌組態

  3. 使用下列命令,使用 rtl-config.yaml 檔案中的輸入參數建立即時日誌組態。

    aws cloudfront create-realtime-log-config --cli-input-yaml file://rtl-config.yaml

如果成功,命令的輸出會顯示您剛才建立的即時日誌組態的詳細資料。

若要將即時日誌組態附加至現有發行版 (包含輸入檔案的 CLI)
  1. 使用下列命令來儲存您想要更新之 CloudFront 分佈的分佈組態。將 distribution_ID 取代為分佈的 ID。

    aws cloudfront get-distribution-config --id distribution_ID --output yaml > dist-config.yaml
  2. 開啟您剛才建立且命名為 dist-config.yaml 的檔案。編輯檔案,對您要更新的每個快取行為進行下列變更,以使用即時日誌組態。

    • 在快取行為中,新增名為 RealtimeLogConfigArn 的欄位。對於欄位的值,請使用您想要附加到此快取行為的即時日誌組態的 ARN。

    • ETag 欄位重新命名為 IfMatch,但不要變更欄位的值。

    完成後儲存檔案。

  3. 使用下列命令來更新分佈,以使用即時日誌組態。將 distribution_ID 取代為分佈的 ID。

    aws cloudfront update-distribution --id distribution_ID --cli-input-yaml file://dist-config.yaml

如果成功,命令的輸出會顯示您剛才更新的分佈詳細資料。

API

若要使用 CloudFront API 建立即時日誌組態,請使用 CreateRealtimeLogConfig API 操作。如需有關您在此 API 呼叫中指定參數的詳細資訊,請參閱 了解即時日誌組態和 AWS SDK 或其他 API 用戶端的 API 參考文件。

建立即時日誌組態之後,您可以使用下列其中一個 API 操作將其連接至快取行為:

對於這兩個 API 操作,請在快取行為的 RealtimeLogConfigArn 欄位中提供即時日誌組態的 ARN。如需您在這些 API 呼叫中指定之其他欄位的詳細資訊,請參閱 分佈設定參考和 AWS SDK 或其他 API 用戶端的 API 參考文件。

了解即時日誌組態

若要使用 CloudFront 即時日誌,請先建立即時日誌組態。即時日誌組態包含您要接收哪些日誌欄位、日誌的抽樣頻率,以及您要傳送日誌的 Kinesis 資料串流的相關資訊。

具體來說,即時日誌組態包含下列組態:

名稱

用來識別即時日誌組態的名稱。

抽樣頻率

抽樣率是介於 1 到 100 之間的整數 (含),可決定以即時日誌形式傳送至 Kinesis Data Streams 的檢視器請求百分比。若要在即時日誌中包含每個檢視器請求,請指定 100 的抽樣頻率。您可以選擇較低的抽樣頻率以降低成本,同時仍然在即時日誌中收到代表性的請求資料樣本。

欄位

包含在每個即時日誌中的欄位清單。每個日誌記錄最多包含 40 個欄位,而且您可以選擇接收所有可用欄位,或只接收監視和分析效能所需的欄位。

下列清單包含每個欄位名稱以及該欄位中資訊的描述。這些欄位會依它們交付給 Kinesis Data Streams 日誌中顯示的順序列出。

欄位 46-63 是常見的媒體用戶端資料 (CMCD),媒體播放器用戶端可以隨每個請求傳送至 CDNs。您可以使用此資料來了解每個請求,例如媒體類型 (音訊、影片)、播放速率和串流長度。這些欄位只有在傳送到 CloudFront 時才會出現在即時日誌中。

  1. timestamp

    邊緣伺服器完成回應請求的日期和時間。

  2. c-ip

    檢視器的 IP 地址,該檢視器已執行請求,例如 192.0.2.1832001:0db8:85a3::8a2e:0370:7334。如果檢視器使用 HTTP 代理或負載平衡器傳送請求,此欄位值則為代理或負載平衡器的 IP 地址。另請參閱 x-forwarded-for 欄位。

  3. s-ip

    提供請求的 CloudFront 伺服器的 IP 地址,例如 192.0.2.1832001:0db8:85a3::8a2e:0370:7334

  4. time-to-first-byte

    接收請求與寫入回應的第一個位元組之間的秒數 (如伺服器上所測量)。

  5. sc-status

    伺服器回應的 HTTP 狀態碼 (例如 200)。

  6. sc-bytes

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

  7. cs-method

    從檢視器接收到的 HTTP 請求方法。

  8. cs-protocol

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

  9. cs-host

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

  10. cs-uri-stem

    整個請求 URL,包括查詢字串 (如果存在),但不包括網域名稱。例如 /images/cat.jpg?mobile=true

    注意

    標準日誌中,該 cs-uri-stem 值不包括查詢字串。

  11. cs-bytes

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

  12. x-edge-location

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

  13. x-edge-request-id

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

  14. x-host-header

    CloudFront 分發的網域名稱(例如,d111111abcdef8.cloudfront.net)。

  15. time-taken

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

  16. cs-protocol-version

    檢視器在請求中指定的 HTTP 版本。可能的值包括 HTTP/0.9HTTP/1.0HTTP/1.1HTTP/2.0HTTP/3.0

  17. c-ip-version

    請求的 IP 版本 (IPv4 或 IPv6)。

  18. cs-user-agent

    請求中的 User-Agent 標頭值。識別請求來源的 User-Agent 標頭,例如提交請求的裝置與瀏覽器類型,或如果請求來自搜尋引擎,則識別是哪一個搜尋引擎。

  19. cs-referer

    請求中的 Referer 標頭值。發出請求的網域名稱。常見推薦網站,包含搜尋引擎、其他直接連結到您物件的網站,以及您自己的網站。

  20. cs-cookie

    請求中的 Cookie 標頭,包括名稱值對和關聯的屬性。

    注意

    此欄位會截斷為 800 位元組。

  21. cs-uri-query

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

  22. 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。

  23. x-forwarded-for

    如果檢視器使用 HTTP 代理或負載平衡器傳送請求,c-ip 欄位值則為代理或負載平衡器的 IP 地址。在這種情況下,此欄位是產生請求的檢視器 IP 地址。此欄位可以包含多個逗號分隔的 IP 地址。每個 IP 地址可以是 IPv4 地址 (例如 192.0.2.183) 或 IPv6 地址 (例如 2001:0db8:85a3::8a2e:0370:7334)。

  24. ssl-protocol

    當請求使用 HTTPS 時,此欄位會包含檢視器和伺服器為傳輸請求和回應而交涉的 SSL/TLS 通訊協定。如需可能值的清單,請參閱 檢視器和 CloudFront 之間支援的通訊協定和密碼 中支援的 SSL/TLS 通訊協定。

  25. ssl-cipher

    當請求使用 HTTPS 時,此欄位會包含檢視器和伺服器為加密請求和回應而交涉的 SSL/TLS 密碼。如需可能值的清單,請參閱 檢視器和 CloudFront 之間支援的通訊協定和密碼 中支援的 SSL/TLS 密碼。

  26. 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。

  27. fle-encrypted-fields

    邊緣伺服器加密並轉送至原始伺服器的欄位層級加密欄位數目。CloudFront 伺服器會在加密資料時將已處理的請求串流至原始伺服器,因此即使 fle-status 的值為錯誤,此欄位也可以具有值。

  28. 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 – 當配置了欄位層級加密時,請求本文的長度超過允許的長度上限。

  29. sc-content-type

    回應的 HTTP Content-Type 標頭值。

  30. sc-content-len

    回應的 HTTP Content-Length 標頭值。

  31. sc-range-start

    當回應包含 HTTP Content-Range 標頭時,此欄位包含範圍起始值。

  32. sc-range-end

    當回應包含 HTTP Content-Range 標頭時,此欄位包含範圍結束值。

  33. c-port

    來自檢視器之請求的連接埠號碼。

  34. 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 – 檢視器讀取訊息過慢,因而導致原始伺服器錯誤。

  35. c-country

    國家/地區代碼代表檢視者的地理位置,由檢視器的 IP 地址決定。如需國家/地區代碼的清單,請參閱 ISO 3166-1 alpha-2

  36. cs-accept-encoding

    檢視器請求中的 Accept-Encoding 標頭值。

  37. cs-accept

    檢視器請求中的 Accept 標頭值。

  38. cache-behavior-path-pattern

    識別符合檢視器請求之快取行為的路徑模式。

  39. cs-headers

    檢視器請求中的 HTTP 標頭 (名稱和值)。

    注意

    此欄位會截斷為 800 位元組。

  40. cs-header-names

    檢視器請求中 HTTP 標頭 (非值) 的名稱。

    注意

    此欄位會截斷為 800 位元組。

  41. cs-headers-count

    檢視器請求中的 HTTP 標頭數目。

  42. primary-distribution-id

    啟用連續部署時,此 ID 會識別哪個分佈是目前分佈中的主要分佈。

  43. primary-distribution-dns-name

    啟用連續部署時,此值會顯示與目前 CloudFront 分佈相關的主要網域名稱 (例如 d111111abcdef8.cloudfront.net)。

  44. origin-fbl

    CloudFront 與您的原始伺服器之間第一個位元組延遲的秒數。

  45. origin-lbl

    CloudFront 與您的原始伺服器之間最後一個位元組延遲的秒數。

  46. asn

    檢視器的自治系統編號 (ASN)。

  47. 即時日誌中的 CMCD 欄位

    如需這些欄位的詳細資訊,請參閱 CTA 規格 Web 應用程式影片生態系統 - 常見媒體用戶端資料 CTA-5004 文件。

  48. cmcd-encoded-bitrate

    所請求音訊或視訊物件的編碼位元速率。

  49. cmcd-buffer-length

    所請求媒體物件的緩衝區長度。

  50. cmcd-buffer-starvation

    緩衝區是否在先前請求與物件請求之間的某個時間點觸發。這可能會導致播放器處於重新緩衝統計資料中,這可能會使視訊或音訊播放停滯。

  51. cmcd-content-id

    可識別目前內容的唯一字串。

  52. cmcd-object-duration

    請求物件的播放持續時間 (以毫秒為單位)。

  53. cmcd-deadline

    此物件的第一個範例必須可用,以避免緩衝區執行不足狀態或其他播放問題的請求時間截止日期。

  54. cmcd-measured-throughput

    用戶端與伺服器之間的輸送量,由用戶端測量。

  55. cmcd-next-object-request

    下一個請求物件的相對路徑。

  56. cmcd-next-range-request

    如果下一個請求是部分物件請求,此字串表示要請求的位元組範圍。

  57. cmcd-object-type

    正在請求的目前物件的媒體類型。

  58. cmcd-playback-rate

    1 表示即時,2 表示雙速,0 表示未播放。

  59. cmcd-requested-maximum-throughput

    用戶端認為足以交付資產的請求最大輸送量。

  60. cmcd-streaming-format

    定義目前請求的串流格式。

  61. cmcd-session-id

    識別目前播放工作階段的 GUID。

  62. cmcd-stream-type

    識別客群可用性的字符。 v = 所有客群都可用。 l = 客群會隨著時間的推移而變得可用。

  63. cmcd-startup

    如果在緩衝區清空事件之後啟動、尋找或復原期間緊急需要物件,則金鑰會包含在不含值。

  64. cmcd-top-bitrate

    用戶端可播放的最高位元速率轉譯。

  65. cmcd-version

    此規格的版本,用於解譯定義的金鑰名稱和值。如果省略此金鑰,用戶端和伺服器必須解譯第 1 版定義的值。

  66. r-host

    此欄位會針對原始伺服器請求傳送,並指出用於提供物件的原始伺服器網域。如果發生錯誤,您可以使用此欄位來尋找上次嘗試的原始伺服器,例如:cd8jhdejh6a.mediapackagev2.us-east-1.amazonaws.com

  67. sr-reason

    此欄位提供選取原始伺服器的原因。當對主要原始伺服器的請求成功時,這是空的。

    如果發生原始伺服器容錯移轉, 欄位將包含導致容錯移轉的 HTTP 錯誤代碼,例如 Failover:403Failover:502。在原始伺服器容錯移轉的情況下,如果重試的請求也失敗,而且您尚未設定自訂錯誤頁面,則 會r-status指出第二個原始伺服器的回應。不過,如果您已設定自訂錯誤頁面與原始伺服器容錯移轉,則如果請求失敗且改為傳回自訂錯誤頁面,這將包含第二個原始伺服器的回應。

    如果沒有發生原始伺服器容錯移轉,但發生媒體品質感知彈性 (MQAR) 原始伺服器選擇,則會將此記錄為 MediaQuality。如需詳細資訊,請參閱媒體品質感知彈性

  68. x-edge-mqcs

    此欄位指出 CloudFront 從 MediaPackage v2 的 CMSD 回應標頭中擷取的媒體區段的媒體品質可信度分數 (MQCS) (範圍:0 – 100)。此欄位適用於符合具有啟用 MQAR 的原始伺服器群組之快取行為的請求。除了原始伺服器請求之外,CloudFront 還會針對從其快取提供的媒體區段記錄此欄位。如需詳細資訊,請參閱媒體品質感知彈性

  69. distribution-tenant-id

    分佈租用戶的 ID。

端點 (Kinesis Data Streams)

端點包含您要傳送即時日誌之 Kinesis Data Streams 的相關資訊。您提供資料串流的 Amazon Resource Name (ARN)。

如需建立 Kinesis Data Streams 的詳細資訊,請參閱《Amazon Kinesis Data Streams 開發人員指南》中的下列主題。

當您建立資料串流時,您需要指定分片的數目。使用下列資訊來協助您估計需要的碎片數量。

估計 Kinesis 資料串流的碎片數量
  1. 計算 (或估計) 您的 CloudFront 分發每秒收到的請求數。

    您可以使用 CloudFront 使用量報告 (在 CloudFront 主控台中) 和 CloudFront 指標 (在 CloudFront 和 Amazon CloudWatch 主控台中) 來協助您計算每秒的請求數。

  2. 確定單一即時日誌記錄的典型大小。

    一般而言,單一日誌記錄大約是 500 個位元組。包含所有可用欄位的大型記錄一般約為 1 KB。

    如果不確定日誌記錄的大小,您可以啟用取樣率較低 (例如 1%) 的即時日誌,然後使用 Kinesis Data Streams 中的監控資料,來計算平均記錄大小 (總傳入位元組數除以記錄總數)。

  3. Amazon Kinesis Data Streams 定價頁面上, AWS 定價計算工具選擇立即建立您的自訂預估

    • 在計算器中,輸入每秒請求 (記錄) 的數量。

    • 輸入單一日誌記錄的平均記錄大小。

    • 選擇顯示計算

    定價計算器會顯示您需要的碎片數量和預估成本。

IAM 角色

提供 CloudFront 許可,以將即時日誌交付至 Kinesis 資料串流的 AWS Identity and Access Management (IAM) 角色。

當您使用 CloudFront 主控台建立即時日誌組態時,可以選擇建立新的服務角色讓主控台為您建立 IAM 角色。

當您使用 AWS CloudFormation 或 CloudFront API (AWS CLI 或 SDK) 建立即時日誌組態時,您必須自行建立 IAM 角色並提供角色 ARN。若要自行建立 IAM 角色,請使用下列政策。

IAM 角色信任原則

若要使用以下 IAM 角色信任政策,請將 111122223333 取代為您的 AWS 帳戶 號碼。此政策中的 Condition元素有助於防止混淆代理人問題,因為 CloudFront 只能代表 中的分佈擔任此角色 AWS 帳戶。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "cloudfront.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "111122223333" } } } ] }

未加密資料串流的 IAM 角色許可原則

若要使用下列政策,請將 arn:aws:kinesis:us-east-2:123456789012:stream/StreamName 取代為 Kinesis 資料串流的 ARN。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kinesis:DescribeStreamSummary", "kinesis:DescribeStream", "kinesis:PutRecord", "kinesis:PutRecords" ], "Resource": [ "arn:aws:kinesis:us-east-2:123456789012:stream/StreamName" ] } ] }

已加密資料串流的 IAM 角色許可原則

若要使用以下政策,請將 arn:aws:kinesis:us-east-2:123456789012:stream/StreamName 取代為 Kinesis 資料串流的 ARN,將 arn:aws:kms:us-east-2:123456789012:key/e58a3d0b-fe4f-4047-a495-ae03cc73d486 取代為 AWS KMS key的 ARN。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kinesis:DescribeStreamSummary", "kinesis:DescribeStream", "kinesis:PutRecord", "kinesis:PutRecords" ], "Resource": [ "arn:aws:kinesis:us-east-2:123456789012:stream/StreamName" ] }, { "Effect": "Allow", "Action": [ "kms:GenerateDataKey" ], "Resource": [ "arn:aws:kms:us-east-2:123456789012:key/e58a3d0b-fe4f-4047-a495-ae03cc73d486" ] } ] }

建立 Kinesis Data Streams 取用者

若要讀取和分析您的即時記錄,您可以建置或使用 Kinesis Data Streams 取用程式。當您建立 CloudFront 即時日誌的取用程式時,請務必瞭解每個即時日誌中的欄位一律以相同順序交付,如 欄位 一節所列。請確定建立您的取用程式來適應此固定訂單。

例如,假設只包含下列三個欄位的即時日誌組態: time-to-first-bytesc-statusc-country。在這個案例中,最後一個欄位 c-country,永遠是每個日誌中的欄位編號 3。不過,如果您稍後將欄位新增至即時日誌組態,則日誌中每個欄位的位置可能會變更。

例如,如果您新增欄位 sc-bytestime-taken 即時日誌組態,這些欄位會根據 欄位 區段中顯示的順序插入到每個日誌中。所有五個欄位的產生順序為 time-to-first-bytesc-statussc-bytestime-takenc-country。該 c-country 欄位原本是欄位編號 3,但現在是欄位編號 5。請確定您的取用者應用程式可以處理變更日誌中位置的欄位,以防您將欄位新增至即時日誌組態。

即時日誌故障診斷

建立即時日誌組態之後,您可能會發現沒有任何日誌 (或不是所有日誌) 會交付至 Kinesis Data Streams。在此情況下,您應該先確認您的 CloudFront 分發是否正在收到檢視器請求。如果是,您可以檢查下列設定來繼續故障排除。

IAM 角色許可

若要將即時日誌交付至 Kinesis 資料串流,CloudFront 會使用即時日誌組態中的 IAM 角色。請確定角色信任原則和角色許可原則符合 IAM 角色 中顯示的原則。

Kinesis Data Streams 調節

如果 CloudFront 將即時記錄記錄寫入 Kinesis 資料串流的速度超過串流能夠處理的速度,Kinesis Data Streams 可能會限制來自 CloudFront 的請求。在此情況下,您可以增加 Kinesis 資料串流中的碎片數量。每個碎片可支援最高每秒 1,000 筆記錄的寫入數目,最高每秒 1 MB 的資料寫入上限。