使用即時記錄 - Amazon CloudFront

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

使用即時記錄

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

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

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

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

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

CloudFront 即時日誌會在 Amazon Kinesis 資料串流中傳送至您選擇的資料串流。您可以建立自己的 Kinesis 資料串流取用者,或使用 Amazon 資料 Firehose 將日誌資料傳送到 Amazon 簡單儲存服務 (Amazon S3)、Amazon Redshift、亞馬遜 OpenSearch 服務 (服OpenSearch 務) 或第三方日誌處理服務。

CloudFront 即時記錄的費用,以及您使用 Kinesis Data Streams 所產生的費用。如需有關定價的詳細資訊,請參閱 Amazon CloudFront 定價Amazon Kinesis Data Streams 定價

重要

我們建議您使用這些記錄來瞭解內容要求的性質,而不是對所有要求進行完整記錄。 CloudFront 盡最大努力提供即時記錄。在實際處理請求之後,才可能長時間交付特定請求的日誌項目,在極少數的情況下,有可能完全不會交付日誌項目。當即時記錄中省略記錄項目時,即時記錄檔中的項目數量將與 AWS 帳單和使用情況報告中顯示的使用量不符。

建立並使用即時記錄設定

要獲取有關實時分發請求的信息。您可以使用實時日誌配置。記錄會在收到要求後的幾秒鐘內傳送。您可以使用 AWS Command Line Interface (AWS CLI) 或使用 CloudFront API 在 CloudFront 主控台中建立即時記錄設定。

若要使用即時記錄組態,請將其附加至 CloudFront 散發中的一或多個快取行為。

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

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

  3. 選擇建立組態

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

  5. 在「取樣率」中,輸入要接收日誌記錄的請求百分比。

  6. 在「欄位」 中,選擇要在即時記錄中接收的欄位。

    • 若要包含記錄檔的所有 CMCD 欄位,請選擇 [CMCD 所有金鑰]。

  7. 端點中,選擇一或多個 Kinesis 資料串流以接收即時記錄。

    注意

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

  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 建立即時記錄設定,請使用 CreateRealtimeLogConfigAPI 作業。如需有關您在此 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 是媒體播放器客戶端可以隨每個請求發送到 CDN 的常見媒體客戶端數據(CMCD)。您可以使用這些資料來瞭解每個要求,例如媒體類型 (音訊、視訊)、播放速率和串流長度。這些欄位只會在傳送至您的即時記錄時顯示 CloudFront。

  1. timestamp

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

  2. c-ip

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

  3. time-to-first-byte

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

  4. sc-status

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

  5. sc-bytes

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

  6. cs-method

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

  7. cs-protocol

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

  8. cs-host

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

  9. cs-uri-stem

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

    注意

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

  10. cs-bytes

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

  11. x-edge-location

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

  12. x-edge-request-id

    唯一識別要求的不透明字串。 CloudFront 還會在x-amz-cf-id響應頭中發送此字符串。

  13. x-host-header

    CloudFront 分發的網域名稱 (例如,網域名稱)。

  14. time-taken

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

  15. cs-protocol-version

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

  16. c-ip-version

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

  17. cs-user-agent

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

  18. cs-referer

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

  19. cs-cookie

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

    注意

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

  20. cs-uri-query

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

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

  22. x-forwarded-for

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

  23. ssl-protocol

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

  24. ssl-cipher

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

  25. x-edge-result-type

    在最後一個位元組離開伺服器之後,伺服器如何將回應分類。在某些情況下,結果類型會在伺服器準備好傳送回應的時間,以及完成傳送回應的時間中發生改變。另請參閱 x-edge-response-result-type 欄位。

    例如,在 HTTP 串流中,假設伺服器在快取中找到串流的區段。在這種情況下,這個欄位的值通常是 Hit。不過,如果在伺服器已交付整個區段之前,檢視器關閉檢視器,則最終結果類型 (此欄位的值) 為 Error

    WebSocket 連線的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。

  26. fle-encrypted-fields

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

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

  28. sc-content-type

    回應的 HTTP Content-Type 標頭值。

  29. sc-content-len

    回應的 HTTP Content-Length 標頭值。

  30. sc-range-start

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

  31. sc-range-end

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

  32. c-port

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

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

  34. c-country

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

  35. cs-accept-encoding

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

  36. cs-accept

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

  37. cache-behavior-path-pattern

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

  38. cs-headers

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

    注意

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

  39. cs-header-names

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

    注意

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

  40. cs-headers-count

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

  41. origin-fbl

    CloudFront 與您的來源之間的第一個位元組延遲的秒數。

  42. origin-lbl

    與原始位元組之間最後位元組延遲 CloudFront 的秒數。

  43. asn

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

  44. primary-distribution-id

    啟用持續部署時,此 ID 會識別哪個發行版是目前發行版中的主要發行版。

  45. primary-distribution-dns-name

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

    即時記錄檔中的 CMCD 欄位

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

  46. cmcd-encoded-bitrate

    請求的音頻或視頻對象的編碼比特率。

  47. cmcd-buffer-length

    請求的媒體對象的緩衝區長度。

  48. cmcd-buffer-starvation

    無論是緩衝區在前面的請求和對象請求之間的某個點餓了。這可能會導致播放器處於重新緩衝狀態,這可能會阻止視頻或音頻播放。

  49. cmcd-content-id

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

  50. cmcd-object-duration

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

  51. cmcd-deadline

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

  52. cmcd-measured-throughput

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

  53. cmcd-next-object-request

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

  54. cmcd-next-range-request

    如果下一個請求是部分對象請求,則此字符串表示要請求的字節範圍。

  55. cmcd-object-type

    被請求的當前對象的媒體類型。

  56. cmcd-playback-rate

    1 如果是實時,2 如果雙速,0 如果不播放。

  57. cmcd-requested-maximum-throughput

    客戶認為足以交付資產的要求最大輸送量。

  58. cmcd-streaming-format

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

  59. cmcd-session-id

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

  60. cmcd-stream-type

    記號識別區段可用性。 v= 所有段都可用。 l= 區段隨著時間的推移變為可用。

  61. cmcd-startup

    如果在緩衝區空事件之後啟動,搜索或恢復期間緊急需要對象,則密鑰將包含在沒有值的情況下。

  62. cmcd-top-bitrate

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

  63. cmcd-version

    此規格的版本,用於解譯已定義的索引鍵名稱和值。如果省略此機碼,用戶端和伺服器必須將值解譯為版本 1 所定義的值。

端點 (Kinesis Data Streams)

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

如需有關建立 Kinesis 資料串流的詳細資訊,請參閱 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 定價頁面的 Pricing calculator (定價計算工具) 中,輸入每秒請求數 (記錄) 和單一日誌記錄的平均記錄大小。然後選擇 Show calculations (顯示計算結果)。

    定價計算工具會顯示您需要的分區數量。(它也會向您顯示預估成本。)

    下列範例顯示平均記錄大小為 0.5 KB,以及每秒 50,000 個請求,您需要 50 個分區。

    Amazon Kinesis Data Streams 中顯示建議碎片的範例。

IAM 角色

授予將即時日誌傳遞至 Kinesis 資料串流之 CloudFront 權限的 AWS Identity and Access Management (IAM) 角色。

使用 CloudFront 主控台建立即時記錄組態時,可以選擇 [建立新服務角色],讓主控台為您建立 IAM 角色。

使用或 CloudFront API ( AWS CloudFormation 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: aw: 動作:美國東部-2:123456789012: 串流/取代為您的 Kinesis 資料串流的 ARN。StreamName

{ "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:中國東部 2:123456789012:串流/與您的 Kinesis 動資料串流的 ARN 與您的運動資料串流的 ARN:AW:英文:美國東部 2 StreamName AWS KMS key

{ "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 的資料寫入上限。