總論與串流 ETL 概念

問:什麼是串流 ETL?

串流 ETL 是即時資料在兩處之間的移動和處理。ETL 是資料庫函數擷取、轉換和載入的簡稱。「擷取」是指從某些來源收集資料。「轉換」是指對該資料執行的所有處理流程。「載入」是指將經過處理的資料傳送至目的地 (例如資料庫、資料湖或分析工具)。

問:什麼是 Amazon Kinesis Data Firehose?

Kinesis Data Firehose 是串流 ETL 解決方案。這是將串流資料載入資料存放區和分析工具最簡單的方式。它可以擷取串流資料,並將資料轉換和載入 Amazon S3、Amazon Redshift、Amazon OpenSearch Service 及 Splunk,再使用現有的商業智慧工具以及您目前正在使用的儀表板進行近乎即時的分析。這是一項全受管服務,可自動擴展以因應資料的輸送量,而且不用全程管理。它也可以在載入資料之前先進行批次處理、壓縮及加密,以大幅減少目的地所需的儲存體數量及提高安全性。

問:什麼是 Kinesis Data Firehose 中的來源?

來源是持續產生和擷取串流資料的位置。例如,來源可以是 Amazon EC2 執行個體上執行的日誌伺服器、行動裝置上執行的應用程式或 IoT 裝置上的感應器。來源無法與使用下列項目的 Kinesis Data Firehose 連線:1) 使用適用於 Java 的 AWS 開發套件.NETNode.jsPythonRubyAmazon Kinesis Data Firehose API。2) Kinesis Data Stream,其中 Kinesis Data Firehose 可輕易從現有的 Kinesis 資料串流中讀取資料,然後將其載入至 Kinesis Data Firehose 目的地。3) AWS 原本就支援的服務,例如 AWS Cloudwatch、AWS EventBridge、AWS IOT 或 AWS Pinpoint。如需完整清單,請參閱 Amazon Kinesis Data Firehose 開發人員指南。4) Kinesis 代理器,此代理器是獨立執行的 Java 軟體應用程式,可持續不斷地監控一組檔案,然後將新資料傳送到您的串流。5) Fluentbit,此為開源的日誌處理器和轉寄站。6) AWS Lambda,此為無伺服器的運算服務,可讓您執行程式碼,而無需佈建或管理伺服器。藉由寫入 Lambda 函數,您可根據觸發的事件將流量從 S3 或 DynamoDB 傳送至 Kinesis Data Firehose。

問:什麼是 Kinesis Data Firehose 中的目的地?

目的地是指資料將傳輸到的資料存放區。Kinesis Data Firehose 目前支援 Amazon S3、Amazon Redshift、Amazon OpenSearch Service、Splunk、Datadog、NewRelic、Dynatrace、Sumologic、LogicMonitor、MongoDB 和 HTTP 端點作為目的地。

問:Kinesis Data Firehose 可代我管理哪些項目?

Kinesis Data Firehose 可管理的項目包含將資料擷取並載入 Amazon S3、Amazon Redshift、Amazon OpenSearch Service 或 Splunk 所需的所有相關基礎設施、儲存體、網路以及組態。您不用擔心軟硬體的佈建、部署及持續維護,也不用擔心要撰寫任何其他應用程式來管理此程序。Kinesis Data Firehose 也能彈性地擴展,不需要任何人為干預或相關的開發人員費用。此外,Kinesis Data Firehose 會將資料同步複寫到同一 AWS 區域中的三個設施,如此在將資料傳輸到目標時能提供高可用性和耐久性。

問:如何使用 Kinesis Data Firehose?

當您註冊 Amazon Web Services 之後,請依照下列步驟來開始使用 Kinesis Data Firehose:

  • 透過 Firehose 主控台CreateDeliveryStream 操作,建立 Kinesis Data Firehose 交付串流。您可以選擇設定交付串流中的 AWS Lambda 函數,準備好原始資料並進行轉換,然後載入資料。
  • 使用 Amazon Kinesis 代理器Firehose API 設定資料生產者,以持續傳送資料到交付串流。
  • Firehose 會自動並持續載入資料到您指定的目的地。

問:什麼是 Kinesis Data Firehose 中的交付串流?

交付串流是 Kinesis Data Firehose 的基礎實體。您透過建立交付串流,然後將資料傳入交付串流來使用 Firehose。您可以透過 Firehose 主控台CreateDeliveryStream 操作,建立 Kinesis Data Firehose 交付串流。如需詳細資訊,請參閱 Creating a Delivery Stream

問:什麼是 Kinesis Data Firehose 中的記錄?

記錄是您的資料生產者傳送到交付串流的重要資料。記錄 (Base64 編碼前) 大小上限為 1024 KB。

問:Kinesis Data Firehose 有哪些限制?

如需相關限制的資訊,請參閱開發人員指南中的 Amazon Kinesis Data Firehose Limits

資料來源

問:可以使用哪些程式設計語言或平台存取 Kinesis Data Firehose API?

Kinesis Data Firehose API 是在 Amazon Web Services SDK 中提供。如需有關 Amazon Web Services SDK 的程式設計語言或平台的清單,請參閱適用於 Amazon Web Services 的工具

問:什麼是 Amazon Kinesis 代理器?

Kinesis 代理器是預先建置的 Java 應用程式,可讓您輕鬆收集資料並將資料傳送至交付串流。您可以在以 Linux 為基礎的伺服器環境 (例如 Web 伺服器、日誌伺服器及資料庫伺服器) 安裝代理器。代理器會監控特定檔案並持續將資料傳送至您的交付串流。Amazon Kinesis 代理器目前支援 Amazon Linux、Red Hat Enterprise Linux 和 Microsoft Windows。如需詳細資訊,請參閱 Writing with Agents

問:哪裡可以取得 Amazon Kinesis 代理器?

您可以使用以下命令和連結來下載和安裝 Kinesis 代理器:

  • 在 Amazon Linux 上:sudo yum install –y aws-kinesis-agent
  • 在 Red Hat Enterprise Linux 上:sudo yum install –y https://s3.amazonaws.com/streaming-data-agent/aws-kinesis-agent-latest.amzn1.noarch.rpm
  • 從 GitHub:awlabs/amazon-kinesis-agent
  • 在 Windows 上:https://docs.aws.amazon.com/kinesis-agent-windows/latest/userguide/getting-started.html#getting-started-installation

問:PutRecord 和 PutRecordBatch 操作有什麼差別?

您可以透過 Kinesis 代理器或 Firehose 的 PutRecordPutRecordBatch 操作,將資料新增到 Kinesis Data Firehose 交付串流。PutRecord 操作允許 API 呼叫內的單一資料記錄,而 PutRecordBatch 操作允許 API 呼叫內的多個資料記錄。如需詳細資訊,請參閱 PutRecordPutRecordBatch

問:如何將 Kinesis 資料串流的資料新增到 Kinesis Data Firehose 交付串流?

透過 AWS 主控台或 Firehose API 建立或更新交付串流時,可以將 Kinesis 資料串流設定為交付串流的來源。設定之後,Firehose 會自動從 Kinesis 資料串流讀取資料,然後將資料載入指定的目的地。

問:Kinesis Data Firehose 從 Kinesis 串流讀取資料的頻率為何?
Kinesis Data Firehose 每秒會針對每個 Kinesis 碎片呼叫 Kinesis Data Streams GetRecords() 一次。

問:將 Kinesis 資料串流設為交付串流的來源時,Kinesis Data Firehose 會從哪裡讀取資料?

將 Kinesis 資料串流設為交付串流的來源時,Kinesis Data Firehose 會從 Kinesis 資料串流的最新位置讀取資料。如需 Kinesis 資料串流位置的詳細資訊,請參閱 Kinesis Data Streams Service API 參考中的 GetShardIterator

問:是否可將 Kinesis 資料串流設成多個 Kinesis Data Firehose 交付串流的來源?

是的,可以。不過請注意,來自 Kinesis Data Firehose 的 GetRecords() 呼叫會計入 Kinesis 碎片的整體調節限制,因此您需要規劃好交付串流和其他 Kinesis 應用程式以避免受到調節。如需詳細資訊,請參閱 Kinesis Data Streams 開發人員指南中的 Kinesis Data Streams Limits

問:將 Kinesis 資料串流設為來源時,是否仍然可以透過 Kinesis 代理器或 Firehose 的 PutRecord 和 PutRecordBatch 操作將資料新增到交付串流?

否,您無法這樣做。將 Kinesis 資料串流設為 Kinesis Data Firehose 交付串流的來源時,Firehose 的 PutRecord 和 PutRecordBatch 操作將會停用。您應該改為透過 Kinesis Data Streams PutRecord 和 PutRecords 操作將資料新增到 Kinesis 資料串流。

問:如何將 AWS IoT 的資料新增到交付串流?

若要從 AWS IoT 將資料新增到交付串流,要建立可將事件傳送到交付串流的 AWS IoT 動作。如需詳細資訊,請參閱 Kinesis Data Firehose 開發人員指南中的 Writing to Amazon Kinesis Data Firehose Using AWS IoT

問:如何將 CloudWatch Logs 的資料新增到交付串流?

若要將 CloudWatch Logs 的資料新增到 Kinesis Data Firehose 交付串流,請建立可將事件傳送到交付串流的 CloudWatch Logs 訂閱篩選條件。如需詳細資訊,請參閱 Amazon CloudWatch 使用者指南中的 Using CloudWatch Logs Subscription Filters

問:如何將 CloudWatch Events 的資料新增到 Kinesis Data Firehose 交付串流?

若要將 CloudWatch Events 的資料新增到 Kinesis Data Firehose 交付串流,請建立一個 CloudWatch Events 規則並將交付串流設為目標。如需詳細資訊,請參閱 Kinesis Data Firehose 開發人員指南中的 Writing to Amazon Kinesis Data Firehose Using CloudWatch Events

問:如何將 AWS Eventbridge 的資料新增到 Amazon Kinesis Data Firehose 交付串流?

使用 AWS EventBridge 主控台可將資料新增到 Kinesis Data Firehose 交付串流。如需詳細資訊,請參閱 AWS EventBridge 文件

問:可以使用哪種加密?

Kinesis Data Firehose 讓您在傳輸資料到 Amazon S3 儲存貯體之後能進行資料加密。當您建立交付串流時,可以選擇使用自己的 AWS Key Management Service (KMS) 金鑰來加密資料。如需 KMS 的詳細資訊,請參閱 AWS Key Management Service

問:當建立交付串流時,什麼是需要指定的 IAM 角色?

Kinesis Data Firehose 假定您指定的 IAM 角色可存取 Amazon S3 儲存貯體和 Amazon OpenSearch 網域之類的資源。如需詳細資訊,請參閱 Kinesis Data Firehose 開發人員指南中的 Controlling Access with Kinesis Data Firehose

資料轉型與格式轉換

問:如何在 Kinesis Data Firehose 中準備和轉換原始資料?

Kinesis Data Firehose 備有內建的資料格式轉換功能,您無需建立您自己的資料處理管道也可將原始資料或 Json 轉換成 Apache Parquet 和 Apache ORC 等目的地資料存放區要求的格式。使用 Kinesis Data Firehose 亦可用靜態或動態定義的金鑰,例如「customer_id」或「transaction_id」,在交付到 S3 之前,動態分割您的串流資料。Kinesis Data Firehose 依這些金鑰將資料分組,並交付到金鑰獨有的 S3 前綴中,讓您更容易使用 Athena、EMR 和 Redshift Spectrum,在 S3 中執行高效能、符合成本效益的分析。

而且,Amazon Kinesis Data Firehose 備有內建的格式轉換選項,您亦可使用 AWS Lambda 函數,先行準備和轉換交付串流中的傳入原始資料,然後再將資料載入目的地。建立新的交付串流或編輯現有的交付串流時,您可以設定用於資料轉換的 AWS Lambda 函數。Amazon 建立了多個 Lambda 藍圖,您可從 Quick Start 中選擇這些藍圖。如需完整清單,請參閱 Amazon Kinesis Data Firehose 開發人員指南。

問:可以使用何種壓縮格式?

Amazon Kinesis Data Firehose 讓您可以在傳輸資料到 Amazon S3 之前先壓縮資料。這項服務目前支援 GZIP、ZIP 和 SNAPPY 壓縮格式。如果會將資料進一步載入 Amazon Redshift,則只支援 GZIP 格式。

問:使用 CloudWatch Logs 訂閱功能時,如何進行壓縮?

您可以使用 CloudWatch Logs 訂閱功能將資料從 CloudWatch Logs 串流到 Kinesis Data Firehose。CloudWatch Logs 的所有日誌事件已壓縮成 gzip 格式,因此您應該將 Firehose 的壓縮組態保持為不壓縮,以避免二次壓縮。如需 CloudWatch Logs 訂閱功能的詳細資訊,請參閱 Amazon CloudWatch Logs 使用者指南中的 Subscription Filters with Amazon Kinesis Data Firehose

問:如何將準備好及轉換過的資料從 AWS Lambda 函數傳回到 Amazon Kinesis Data Firehose?

來自 Lambda 的所有已轉換記錄都必須使用下列三個參數傳回到 Firehose;否則,Firehose 會拒絕這些記錄,並將它們視為資料轉換失敗。

  • recordId:Firehose 在叫用期間會將 recordId 連同每個記錄傳遞給 Lambda。每個已轉換的記錄傳回時都應該使用完全相同的 recordId。如果原始的 recordId 與傳回的 recordId 不相符,將會視為資料轉換失敗。
  • result:每個記錄轉換結果的狀態。此參數可接受下列值:如果記錄如預期成功轉換,則為 "Ok"。如果處理邏輯如預期有意捨棄記錄,則為 "Dropped"。如果記錄無法如預期轉換,則為 "ProcessingFailed"。當 Firehose 產生 SucceedProcessing.Records 和 SucceedProcessing.Bytes 指標時,它會將具有 "Ok" 和 "Dropped" 狀態的傳回記錄視為成功處理的記錄,而具有 "ProcessingFailed" 狀態的傳回記錄則視為未成功處理的記錄。
  • data:經過 based64 編碼之後的已轉換資料承載。

問:什麼是錯誤記錄?

如果您啟用 Lambda 的轉換資料功能,Firehose 可將任何 Lambda 叫用和資料交付錯誤記錄到 Amazon CloudWatch Logs,這樣一來,假如 Lambda 叫用或資料交付失敗,您即可檢視特定錯誤日誌。如需詳細資訊,請參閱 Monitoring with Amazon CloudWatch Logs

問:什麼是來源記錄備份?

假使您使用 Lambda 來轉換資料,可啟用來源記錄備份,Amazon Kinesis Data Firehose 會將未轉換的傳入資料交付到另一個獨立的 S3 儲存貯體。您可指定額外的前綴,加到 Firehose 所產生的 "YYYY/MM/DD/HH" UTC 時間前綴的前面。

Amazon S3 內建的資料轉型功能

問:何時該使用 Kinesis Data Firehose 動態分割?

Kinesis Data Firehose 動態分割可避免在資料來源或儲存資料後因手動分割而提高複雜度及造成延誤,同時也可加快查詢最佳化資料集的分析速度。這樣可讓分析工具立即使用資料集有效率地執行它們的查詢,並加強對資料進行更精細的存取控制。例如,行銷自動化客戶可按客戶 ID 即時分割資料,使各客戶進行的查詢可查詢最佳化的資料集並更快的傳回結果。IT 作業或安全監控客戶可根據日誌內嵌的事件戳記來建立群組,以便其查詢最佳化資料集並更快獲得結果。此功能搭配 Amazon Kinesis Data Firehose 現有的 JSON-to-parquet 格式轉換功能使用,讓 Amazon Kinesis Data Firehose 成為 S3 絕佳的串流 ETL 選擇。

問:該如何設定 Kinesis Data Firehose 的動態分割?

透過 AWS 管理主控台、CLI 或 SDK 可設定 Kinesis Data Firehose 資料分割功能。建立或更新 Kinesis Data Firehose 交付串流時,請選取 Amazon S3 作為交付串流的交付目的地並啟用動態分割。您可指定索引鍵或建立執行時間要評估的表達式,藉此定義分割時要用的索引鍵。例如,您可在傳入的串流中選取一個資料欄位 (如客戶 ID),然後定義一個 S3 字首表達式 (如 customer_id=!{partitionKey:customer_id}/),執行時間會根據擷取的記錄來評估此表達式,定出要將記錄交付到哪個 S3 字首。

問:使用動態分割和分割索引鍵可以進行哪些類型的轉型和資料處理?

當您將資料寫入 Amazon S3 時,Kinesis Data Firehose 支援立即可用的 parquet/orc 轉換。Kinesis Data Firehose 亦與 Lambda 函數整合,以便您能自行編寫轉型程式碼。Kinesis Data Firehose 還有一個內建的支援功能,可擷取記錄 (JSON 格式) 中的索引鍵資料欄位。Kinesis Data Firehose 還支援 JQ 剖析語言,可使這些分區索引鍵轉型。若要進一步了解,請參閱 Kinesis Data Firehose 開發人員指南。

資料交付與目的地

問:是否可在 S3 儲存貯體保留一份所有原始資料的副本?

是,Kinesis Data Firehose 可同時將所有未轉換的記錄備份到 S3 儲存貯體,並將已轉換的資料交付到目的地。建立或更新交付串流時,可啟用來源記錄備份。

問:Kinesis Data Firehose 傳輸資料到 Amazon S3 儲存貯體的頻率為何?

資料交付到 Amazon S3 的頻率是根據您為交付串流設定的 S3 緩衝大小和緩衝間隔值。Kinesis Data Firehose 將資料傳輸至 Amazon S3 之前,會將傳入資料放到緩衝區。您可以設定 S3 緩衝大小 (1 MB 到 128 MB) 或緩衝間隔 (60 秒到 900 秒) 的值,以及先滿足哪個條件時會觸發將資料交付到 Amazon S3。若您已啟用 Apache parquet 或動態分割,則 Amazon S3 目的地的緩衝區大小以 MB 計,範圍介於 64MB 到 128MB 之間,預設值為 128MB。請注意,在資料交付到目的地落後於資料擷取至交付串流的情況下,Kinesis Data Firehose 會自動提高緩衝大小以追上進度,並確認所有資料都交付到目的地。

問:如果選擇壓縮資料,則要如何套用緩衝大小?

緩衝大小會在壓縮之前先套用。因此,如果您選擇壓縮資料,則 Amazon S3 儲存貯體中的物件大小可以小於您所指定的緩衝大小。

問:建立交付串流時,什麼是需要指定的 Amazon Redshift 使用者權限?

Amazon Redshift 使用者需要有 Redshift INSERT 權限,以從 Amazon S3 儲存貯體複製資料到 Redshift 叢集。

問:如果 Amazon Redshift 叢集在 VPC 中,需要做些什麼?

如果您的 Amazon Redshift 叢集是在 VPC 中,則需要從 VPC 解鎖 Firehose IP 位址,以授與 Amazon Kinesis Data Firehose 存取 Redshift 叢集的權限。有關如何至 VPC 解鎖 IP 的資訊,請參閱 Amazon Kinesis Data Firehose 開發人員指南中的授與 Firehose 存取 Amazon Redshift 目的地的權限

問:當選擇 Amazon Redshift 做為目標時,為什麼需要提供 Amazon S3 儲存貯體?

對於 Amazon Redshift 目的地,Amazon Kinesis Data Firehose 會先傳輸資料至 Amazon S3 儲存貯體,然後發出 Redshift COPY 命令,以從 S3 儲存貯體將資料載入 Redshift 叢集。

問:什麼是 Amazon OpenSearch Service (Amazon Elasticsearch Service 的後繼者)?

Amazon OpenSearch Service 可讓您輕鬆執行互動式日誌分析、即時應用程式監控、網站搜尋以及其他動作。OpenSearch 是一款源自 Elasticsearch 的開放程式碼、分散式搜尋和分析套件。Amazon OpenSearch Service 提供最新版本的 OpenSearch,支援 19 個版本的 Elasticsearch (1.5 到 7.10 版本),以及由 OpenSearch 儀表板和 Kibana (1.5 到 7.10 版本) 提供支援的視覺化功能。如需 Amazon OpenSearch 的詳細資訊,請按一下這裡

問:什麼是 Amazon OpenSearch Service 目的地的索引輪換?

Kinesis Data Firehose 可以根據時段輪換 Amazon OpenSearch Service 索引。您可以在建立交付串流時設定這個時段。如需詳細資訊,請參閱 Amazon Kinesis Data Firehose 開發人員指南中的 Index Rotation for the Amazon OpenSearch Destination

問:當選擇 Amazon OpenSearch Service 作為目的地時,為什麼需要提供 Amazon S3 儲存貯體?

將資料載入 Amazon OpenSearch Service 時,Kinesis Data Firehose 可備份所有資料或只備份無法交付的資料。若要利用這個功能並避免遺失任何資料,您需要提供備份 Amazon S3 儲存貯體。

問:可以在建立交付串流之後變更它的設定嗎?

您可以在建立交付串流之後隨時變更它的設定。而您可以使用 Firehose 主控台UpdateDestination 操作來變更設定。當您的設定更新時,交付串流會保持在 ACTIVE 狀態,而您可以繼續傳送資料至交付串流。更新過的設定通常會在幾分鐘內生效。

要交付至 VPC 目的地時,您可以變更目的地的端點 URL,只要新目的地在同一個 VPC、子網路和安全群組內能夠存取即可。若要變更 VPC、子網路和安全群組,您需要重新建立 Firehose 交付串流。

問:能否在一個帳戶內使用 Kinesis Data Firehose 交付串流,將我的資料傳輸到不同帳戶內的 Amazon OpenSearch Service 網域之 VPC 目的地?

無法,您的 Kinesis Data Firehose 交付串流和目的地所在的 Amazon OpenSearch Service 網域必須在同一個帳戶內。

問:能否在一個區域內使用 Kinesis Data Firehose 交付串流,將我的資料傳輸到不同區域內的 Amazon OpenSearch Service 網域之 VPC 目的地?

無法,您的 Kinesis Data Firehose 交付串流和目的地所在的 Amazon OpenSearch Service 網域必須在同一個區域內。

問:Kinesis Data Firehose 傳輸資料到 Amazon OpenSearch 網域的頻率為何?

資料交付到 Amazon OpenSearch Service 的頻率是根據您為交付串流設定的 OpenSearch 緩衝大小和緩衝間隔值。將資料傳輸至 Amazon OpenSearch Service 之前,Firehose 會將傳入資料放到緩衝區。您可以設定 OpenSearch 緩衝大小 (1 MB 到 100 MB) 或緩衝間隔 (60 秒到 900 秒) 的值,以及先滿足哪個條件時會觸發將資料交付到 Amazon OpenSearch Service。請注意,在資料交付到目的地落後於資料擷取至交付串流的情況下,Amazon Kinesis Data Firehose 會自動提高緩衝大小以追上進度,並確認所有資料都交付到目的地。

問:什麼是 Amazon S3 儲存貯體中的資訊清單資料夾?
針對 Amazon Redshift 目標,Amazon Kinesis Data Firehose 會產生資訊清單檔案以將 Amazon S3 物件批次載入至 Redshift 叢集。資訊清單資料夾會儲存 Firehose 產生的資訊清單檔案。

問:如何讓備份的 OpenSearch 文件看起來像是 Amazon S3 儲存貯體中的文件?
如果使用 "all documents" 模式,Amazon Kinesis Data Firehose 會根據交付串流的緩衝設定來串連多個傳入的記錄,然後將它們交付到 S3 儲存貯體做為 S3 物件。無論是設定哪一種備份模式,無法交付的文件會使用特定 JSON 格式交付到 S3 儲存貯體,這種格式可提供額外的資訊,像是錯誤碼和嘗試交付的時間。如需詳細資訊,請參閱 Amazon Kinesis Data Firehose 開發人員指南中的 Amazon S3 Backup for the Amazon ES Destination

問:單一交付串流可以傳輸資料到多個 Amazon S3 儲存貯體嗎?

目前單一交付串流只能傳輸資料到一個 Amazon S3 儲存貯體。如果您想要傳輸資料到多個 S3 儲存貯體,可以建立多個交付串流。

問:單一交付串流可以傳輸資料到多個 Amazon Redshift 叢集或表格嗎?

目前單一交付串流只能傳輸資料到一個 Amazon Redshift 叢集和一個表格。如果您想要傳輸資料到多個 Redshift 叢集或表格,可以建立多個交付串流。

問:單一交付串流可以傳輸資料到多個 Amazon OpenSearch Service 網域或索引嗎?

目前單一交付串流只能傳輸資料到一個 Amazon OpenSearch Service 網域和一個索引。如果您想要傳輸資料到多個 Amazon OpenSearch 網域或索引,可以建立多個交付串流。

問:Amazon Kinesis Data Firehose 如何傳輸資料到我的 Amazon OpenSearch Service 網域內的 VPC?

當您啟用 Kinesis Data Firehose 傳輸資料至 Amazon OpenSearch Service 中 VPC 內的目的地時,Amazon Kinesis Data Firehose 會在您的 VPC 中為您所選擇的每個子網路建立一或多個跨帳戶彈性網路界面 (ENI)。Amazon Kinesis Data Firehose 會使用這些 ENI 將資料傳輸至您的 VPC 內。ENI 的數量會自動擴展以符合服務需求。

故障診斷和管理交付串流

問:傳送資料至 Amazon Kinesis Data Firehose 交付串流時為何受到限制?

根據預設,每個交付串流最多可進行每秒 2,000 次的交易、每秒 5,000 個記錄和每秒 5 MB。您可以透過提交提高服務限額表單輕鬆增加限額。

問:為什麼會在 Amazon S3 儲存貯體、Amazon Redshift 表、Amazon OpenSearch 索引或 Splunk 叢集中看到重複的記錄?

Amazon Kinesis Data Firehose 針對資料交付至少會使用一次語意。在極少見的情況下 (例如,資料交付嘗試時請求逾時),如果之前的請求最後還是通過,Firehose 重試交付就會產生重複記錄。

問:如果資料交付到我的 Amazon S3 儲存貯體失敗,會發生什麼情況?

如果您的資料來源為「直接 PUT」,且資料交付到 Amazon S3 儲存貯體失敗,則 Amazon Kinesis Data Firehose 會每 5 秒重試交付資料,最長重試期間為 24 小時。如果超過 24 小時的最長保留期,問題仍然存在,則 Amazon Kinesis Data Firehose 會捨棄資料。

如果您的資料來源為 Kinesis Data Streams,且資料交付到 Amazon S3 儲存貯體失敗,則 Amazon Kinesis Data Firehose 會每 5 秒重試交付資料,最長重試期間為在 Kinesis Data Streams 上設定的小時。

問:如果資料交付到我的 Amazon Redshift 叢集失敗,會發生什麼情況?

如果資料交付到 Amazon Redshift 叢集失敗,Amazon Kinesis Data Firehose 會每 5 分鐘重試資料交付,最長重試期間為 120 分鐘。120 分鐘之後,Amazon Kinesis Data Firehose 會略過目前準備好 COPY 的 S3 物件批次,然後移至下一個批次。略過物件的相關資訊會傳輸至 S3 儲存貯體,以在錯誤資料中作為資訊清單檔案,讓您可以用於手動回填。有關如何使用資訊清單檔案手動 COPY 資料的相關資訊,請參閱 Using a Manifest to Specify Data Files

問:如果資料交付到我的 Amazon OpenSearch 網域失敗,會發生什麼情況?

對於 Amazon OpenSearch Service 目標,您可以在建立交付串流時指定介於 0 秒到 7200 秒之間的重試期間。如果資料交付到 Amazon ES 網域失敗,Amazon Kinesis Data Firehose 會在指定的時段重試資料交付。超過重試期間之後,Amazon Kinesis Data Firehose 會略過目前的資料批次,進行下一個批次。略過文件的詳細資訊會傳輸至 S3 儲存貯體的 opensearch_failed 資料夾,讓您可以用於手動回填。

問:如果資料轉換失敗會發生什麼事?

當 Firehose 嘗試叫用 Lambda 函數進行資料轉換時,會發生兩類失敗情況:

  • 第一類是達到網路逾時限制或達到 Lambda 叫用上限等原因造成的函數叫用失敗。如果是這種失敗的情況,Firehose 預設會重試叫用三次,然後略過該特定批次的記錄。略過的記錄會視為未成功處理的記錄。您可以使用 CreateDeliveryStream 和 UpdateDeliveryStream API 設定叫用重試次數,範圍介於 0 到 300 之間。對於這類失敗,也可以使用 Firehose 的錯誤記錄功能,將叫用錯誤發送到 CloudWatch Logs。如需詳細資訊,請參閱 Monitoring with Amazon CloudWatch Logs
  • 第二類失敗情況發生的原因是當 Lambda 函數傳回記錄時,其轉換結果被設成 "ProcessingFailed"。Firehose 會將這些記錄視為未成功處理的記錄。對於這類失敗,您可使用 Lambda 的記錄功能,將錯誤日誌發送到 CloudWatch Logs。如需詳細資訊,請參閱 Accessing Amazon CloudWatch Logs for AWS Lambda

針對這兩類失敗情況,未成功處理的記錄會傳送到 S3 儲存貯體的 processing_failed 資料夾。

問:為什麼交付的 S3 物件大小大於我在交付串流組態中指定的緩衝大小?

如果緩衝大小條件早於緩衝間隔條件被滿足,則大多數時間交付的 S3 物件大小應該反映指定的緩衝大小。不過,當資料交付到目的地落後於資料寫入交付串流時,Firehose 會動態提高緩衝大小以追上進度,並確認所有資料都交付到目的地。在這些情況下,交付的 S3 物件大小就可能大於指定的緩衝大小。

問:什麼是 Amazon S3 儲存貯體中的錯誤資料夾?

錯誤資料夾會儲存資訊清單檔案,其中包含無法載入 Amazon Redshift 叢集的 S3 物件資訊。您可以透過 Redshift COPY 命令手動重新載入這些物件。有關如何使用資訊清單檔案手動 COPY 資料的相關資訊,請參閱 Using a Manifest to Specify Data Files

問:什麼是 Amazon S3 儲存貯體中的 opensearch_failed 資料夾?

opensearch_failed 資料夾存放未能載入到 Amazon OpenSearch 的文件,如果資料傳輸到我的 Amazon OpenSearch 網域失敗會怎樣?您可以手動重新建立這些文件的索引以回填。

問:什麼是 Amazon S3 儲存貯體中的 processing_failed 資料夾?

processing_failed 資料夾用來存放 AWS Lambda 函數轉換失敗的記錄。您可以手動重新處理這些記錄。

問:如何監控 Amazon Kinesis Data Firehose 交付串流的操作和效能?

Firehose 主控台會顯示重要的操作和效能指標,例如傳入資料量和已傳輸的資料量。Amazon Kinesis Data Firehose 也與 Amazon CloudWatch 指標整合,因此您可以收集、查看和分析交付串流的指標。如需 Amazon Kinesis Data Firehose 指標的詳細資訊,請參閱 Amazon Kinesis Data Firehose 開發人員指南的 Monitoring with Amazon CloudWatch Metrics

問:如何監控 Amazon Kinesis Data Firehose 交付串流的資料轉換和交付失敗?

Amazon Kinesis Data Firehose 已與 Amazon CloudWatch Logs 整合,所以如果資料轉換或交付失敗,您可查看特定的錯誤日誌。您可以在建立交付串流時啟用錯誤記錄。如需詳細資訊,請參閱 Amazon Kinesis Data Firehose 開發人員指南中的 Monitoring with Amazon CloudWatch Logs

問:如何管理和控制對 Amazon Kinesis Data Firehose 交付串流的存取權限?

Amazon Kinesis Data Firehose 已與 AWS Identity and Access Management 整合,這是一個讓您 夠安全地控制對 AWS 服務和使用者資源存取權限的服務。例如,您可以建立僅允許特定使用者或群組將資料新增到 Firehose 交付串流的政策。如需串流存取管理和控制的詳細資訊,請參閱 Controlling Access with Amazon Kinesis Data Firehose

問:如何記錄對 Amazon Kinesis Data Firehose 交付串流所發出的 API 呼叫,以用於安全分析和操作故障排除?

Amazon Kinesis Data Firehose 已與 AWS CloudTrail 整合,這是一個為您的帳戶記錄 AWS API 呼叫並提供日誌檔的服務。如需 API 呼叫日誌的詳細資訊和支援的 Amazon Kinesis Data Firehose API 操作清單,請參閱 Logging Amazon Kinesis Data Firehose API calls Using AWS CloudTrail

定價和計費

問:Kinesis Data Firehose 是否可用於 AWS 免費方案?

否,AWS 免費方案目前不包括 Kinesis Data Firehose。AWS 免費方案是提供一組 AWS 服務免費試用的計劃。如需詳細資訊,請參閱 AWS 免費方案

問:Kinesis Data Firehose 的費用是多少?

Kinesis Data Firehose 使用簡單的按使用量付費定價。既無預付費用也沒有最低費用,只需為您使用的資源付費。Amazon Kinesis Data Firehose 定價是根據 Firehose 取用的資料量 (GB) 計費,每個記錄會進位到最接近的 5 KB。如需 Amazon Kinesis Data Firehose 費用的詳細資訊,請參閱 Amazon Kinesis Data Firehose 定價

問:當使用 PutRecordBatch 操作將資料傳送至 Amazon Kinesis Data Firehose 時,如何計算 5 KB 進位?

5 KB 進位是在記錄層級計算,而非在 API 操作層級。例如,如果您的 PutRecordBatch 呼叫包含 2 個 1 KB 的記錄,則來自該呼叫的資料量會算成 10 KB。(每個記錄 5 KB)

問:Kinesis Data Firehose 費用是否包含 Amazon S3、Amazon Redshift、Amazon OpenSearch Service 和 AWS Lambda 的費用?

否。與 Amazon S3、Amazon Redshift、Amazon OpenSearch Service 和 AWS Lambda 用量相關的費用 (包含儲存及請求費用) 會分開計費。如需詳細資訊,請參閱 Amazon S3 定價Amazon Redshift 定價Amazon OpenSearch Service 定價AWS Lambda 定價

服務水準協議

問:Amazon Kinesis Data Firehose SLA 提供哪些保證?

Amazon Kinesis Data Firehose SLA 保證 Amazon Kinesis Data Firehose 每個月正常執行時間百分比至少為 99.9%。

問:如何知道自己是否符合 SLA 服務抵扣的資格?

如果您在一個以上的可用區域內執行某項任務,而且在每個月結算週期內,同一個區域每個月的正常執行時間百分比低於 99.9%,則根據 Amazon Kinesis Data Firehose SLA,您有資格獲得 Amazon Kinesis Data Firehose 的 SLA 積分。

如需 SLA 所有條款與條件的完整詳細資訊,以及如何提交索賠的詳細資訊,請參閱Amazon Kinesis Data Firehose SLA 詳細資訊頁面

進一步了解 Amazon Kinesis Data Firehose 定價

瀏覽定價頁面
準備好開始使用了嗎?
註冊
還有其他問題嗎?
聯絡我們