總論與串流 ETL 概念
問:什麼是串流 ETL?
串流 ETL 是即時資料在兩處之間的移動和處理。ETL 是資料庫函數擷取、轉換和載入的簡稱。「擷取」是指從某些來源收集資料。「轉換」是指對該資料執行的所有處理流程。「載入」是指將經過處理的資料傳送至目的地 (例如資料庫、資料湖或分析工具)。
問:什麼是 Amazon Data Firehose?
Data Firehose 是串流 ETL 解決方案。這是將串流資料載入資料存放區和分析工具最簡單的方式。它可以擷取串流資料,並將資料轉換和載入 Amazon S3、Amazon Redshift、Amazon OpenSearch Service、Snowflake、Apache Iceberg 資料表及 Splunk,再使用現有的商業智慧工具以及您目前正在使用的儀表板進行近乎即時的分析。這是一項全受管服務,可自動擴展以因應資料的輸送量,而且不用全程管理。它也可以在載入資料之前先進行批次處理、壓縮及加密,以大幅減少目的地所需的儲存體數量及提高安全性。
問:什麼是 Firehose 中的來源?
來源是持續產生和擷取串流資料的位置。舉例來說,來源可以是在 Amazon EC2 執行個體上執行的日誌伺服器、行動裝置上執行的應用程式或 IoT 裝置上的感應器。您可使用以下方式將資源與 Firehose 連線:1) 適用於 Java 的 AWS SDK、.NET、Node.js、Python 或 Ruby 的 Amazon Data Firehose API。2) Kinesis Data Stream,其中 Firehose 可輕易從現有 Kinesis 資料串流中讀取資料,並載入 Firehose 目的地。3) Amazon MSK,其中 Firehose 可輕易從現有 Amazon MSK 叢集中讀取資料,並載入 S3 儲存貯體。4) AWS 原生支援的服務,例如 AWS Cloudwatch、AWS EventBridge、AWS IOT 或 AWS Pinpoint。如需完整清單,請參閱 Amazon Data Firehose 開發人員指南。5) Kinesis 代理程式,此代理程式是獨立執行的 Java 軟體應用程式,可持續不斷地監控一組檔案,然後將新資料傳送到您的串流。6) Fluentbit,此為開源的日誌處理器和轉寄站。7) AWS Lambda,此為無伺服器的運算服務,可讓您執行程式碼,無需佈建或管理伺服器。藉由寫入 Lambda 函數,您可根據觸發的事件將流量從 S3 或 DynamoDB 傳送至 Firehose。
問:什麼是 Firehose 中目的地?
目的地是指資料將傳輸到的資料存放區。Firehose 目前支援 Amazon S3、Amazon Redshift、Amazon OpenSearch Service、Snowflake、Apache Iceberg 資料表、Splunk、Datadog、NewRelic、Dynatrace、Sumo Logic、LogicMonitor、MongoDB 和 HTTP 端點作為目的地。
問:Firehose 可代我管理哪些項目?
Data Firehose 可管理的項目包含將資料擷取並載入 Amazon S3、Amazon Redshift、Amazon OpenSearch Service、Snowflake、Apache Iceberg 資料表 或 Splunk 所需的所有相關基礎設施、儲存體、網路以及組態。您不用擔心軟硬體的佈建、部署及持續維護,也不用擔心要撰寫任何其他應用程式來管理此程序。Data Firehose 也能彈性地擴展,不需要任何人為干預或相關的開發人員費用。此外,Data Firehose 會將資料同步複寫到同一 AWS 區域中的三個設施,如此在將資料傳輸到目標時能提供高可用性和耐久性。
問:如何使用 Firehose?
當您註冊 Amazon Web Services 之後,請依照下列步驟來開始使用 Firehose:
- 透過 Firehose 主控台或 CreateDeliveryStream 操作,建立 Firehose 串流。您可以選擇設定 Firehose 串流中的 AWS Lambda 函數,準備好原始資料並進行轉換,然後載入資料。
- 使用 Amazon Kinesis 代理程式或 Firehose API 設定資料生產者,以持續傳送資料到 Firehose 串流。
- Firehose 會自動並持續載入資料到您指定的目的地。
問:什麼是 Firehose 中的 Firehose 串流?
Firehose 串流是 Firehose 的基礎實體。您透過建立 Firehose 串流,然後將資料傳入 Firehose 串流來使用 Firehose。您可以透過 Firehose 主控台或 CreateDeliveryStream 操作,建立 Firehose 串流。如需詳細資訊,請參閱建立 Firehose 串流。
問:什麼是 Firehose 中的記錄?
記錄是您的資料生產者傳送到 Firehose 串流的重要資料。如果您的資料來源是 Direct PUT 或 Kinesis Data Streams,記錄 (Base64 編碼前大小) 大小上限為 1024 KB。如果您的資料來源是 Amazon MSK,記錄 (Base64 編碼前大小) 大小上限為 10 MB。
問:Firehose 有哪些限制?
如需相關限制的資訊,請參閱開發人員指南中的 Amazon Data Firehose Limits。
資料來源
問:可以使用哪些程式設計語言或平台存取 Firehose API?
Firehose API 是在 Amazon Web Services SDK 中提供。如需有關 Amazon Web Services SDK 的程式設計語言或平台的清單,請參閱適用於 Amazon Web Services 的工具。
問:什麼是 Amazon Kinesis 代理程式?
Kinesis 代理程式是預先建置的 Java 應用程式,可讓您輕鬆收集資料並將資料傳送至 Firehose 串流。您可以在以 Linux 為基礎的伺服器環境 (例如 Web 伺服器、日誌伺服器及資料庫伺服器) 安裝代理程式。代理程式會監控特定檔案並持續將資料傳送至您的 Firehose 串流。Amazon Kinesis 代理程式目前支援 Amazon Linux、Red Hat Enterprise Linux 和 Microsoft Windows。如需詳細資訊,請參閱使用代理程式撰寫。
問:哪裡可以取得 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.thinkwithwp.com/kinesis-agent-windows/latest/userguide/getting-started.html#getting-started-installation
問:PutRecord 和 PutRecordBatch 操作有什麼差別?
您可以透過 Kinesis 代理程式或 Firehose 的 PutRecord 和 PutRecordBatch 操作,將資料新增到 Firehose 串流。PutRecord 操作允許 API 呼叫內的單一資料記錄,而 PutRecordBatch 操作允許 API 呼叫內的多個資料記錄。如需詳細資訊,請參閱 PutRecord 和 PutRecordBatch。
問:如何將 Amazon MSK 的資料新增到 Firehose 串流?
透過 AWS Console 或 Firehose API 建立或更新 Firehose 串流時,可以將 Amazon MSK 叢集/主題設定為 Firehose 串流的來源。設定之後,Firehose 會自動從 Kinesis 串流讀取資料,然後將資料載入指定的 S3 儲存貯體。
問:整合 Amazon MSK 與 Firehose 的益處有哪些?
不需要程式碼便能將源自 Amazon MSK 主題的串流資料轉換並載入 Amazon S3,可降低亦用程式運作的複雜程度與開銷。舉例來說,只要使用 Amazon MSK 與 Firehose,您可取得無代碼且內建的資料轉換功能,例如 Parquet/ORC 格式轉換、資料緩衝和服務端資料驗證。您也能使用自動重新交付、資料保留、自動擴展及冗餘等功能,確保資料能順利交付。
問:Firehose 支援何種類型的 Amazon MSK 端點?
欲使用此功能,須啟用 MSK 叢集公開端點或透過私人連線。
問: 能否透過不同 AWS 帳號將 Firehose 與 Amazon MSK 叢集連線?
是,Firehose 可連線至不同 AWS 帳戶中提供的 Amazon MSK 叢集。Firehose 也可交付到屬於不同帳戶的 S3 儲存貯體。
問:開始取用 Amazon MSK 主題資料的檢查點時間什麼時間?
開始取用 Amazon MSK 主題資料的檢查點時間是 Firehose 串流的建立時間。Firehose 不會從自訂偏移值讀取。
問:如何從 Kinesis 資料串流將資料新增到 Firehose 串流?
透過 AWS Console 或 Firehose API 建立或更新 Firehose 串流時,可以將 Firehose 串流設定為 Firehose 串流的來源。設定之後,Firehose 會自動從 Firehose 串流讀取資料,然後將資料載入指定的目標。
問:Firehose 從 Kinesis 串流讀取資料的頻率為何?
Firehose 每秒會針對每個 Kinesis 碎片呼叫 Kinesis Data Streams GetRecords() 一次。
問:將 Kinesis 資料串流設為 Firehose 串流的來源時,Firehose 會從哪裡讀取資料?
將 Kinesis 資料串流設為 Firehose 串流的來源時,Firehose 會從 Kinesis 資料串流的最新位置讀取資料。如需 Kinesis Data Streams 位置的詳細資訊,請參閱 Kinesis Data Streams Service API 參考中的 GetShardIterator。
問:是否可將 Kinesis 資料串流設成多個 Firehose 串流的來源?
是的,可以。不過請注意,來自 Firehose 的 GetRecords() 呼叫會計入 Kinesis 碎片的整體調節限制,因此您需要規劃好 Firehose 串流和其他 Kinesis 應用程式以避免受到調節。如需詳細資訊,請參閱《Kinesis Data Streams 開發人員指南》中的 Kinesis Data Streams 限制。
問:將 Kinesis 資料串流設為來源時,是否仍然可以透過 Kinesis 代理程式或 Firehose 的 PutRecord 和 PutRecordBatch 操作將資料新增到 Kinesis 串流?
否,您無法這樣做。將 Kinesis 資料串流設為 Firehose 串流的來源時,Firehose 的 PutRecord 和 PutRecordBatch 操作將會停用。您應該改為透過 Kinesis Data Streams PutRecord 和 PutRecords 操作將資料新增到 Kinesis Data Streams。
問:如何將 AWS IoT 的資料新增到 Firehose 串流?
若要從 AWS IoT 將資料新增到 Firehose 串流,要建立可將事件傳送到 Firehose 串流的 AWS IoT 動作。如需詳細資訊,請參閱《Firehose 開發人員指南》中的 使用 AWS IoT 寫入 Amazon Data Firehose。
問:如何將我的 VPC 流程日誌串流到 Firehose?
透過 AWS Console 或 Firehose API 建立或更新 Firehose 串流時,可以將 Direct PUT 設定為 Firehose 串流的來源。建立串流後,您可以在 VPC 流程日誌主控台的 Vended Logs 區段將建立的 Firehose 串流設定為 Firehose 串流。
問:如何將 CloudWatch Logs 的資料新增到 Firehose 串流?
若要從 CloudWatch Logs 將資料新增到 Firehose 串流,要建立可將事件傳送到 Firehose 串流的 CloudWatch Logs 訂閱篩選條件。如需詳細資訊,請參閱《Amazon CloudWatch 使用者指南》中的使用 CloudWatch Logs 訂閱篩選條件。
問:如何將 CloudWatch Events 的資料新增到 Firehose 串流?
若要從 CloudWatch Events 將資料新增到 Firehose 串流,要建立一個 CloudWatch Events 規則並將 Firehose 串流設為目標。如需詳細資訊,請參閱《Firehose 開發人員指南》中的使用 CloudWatch Events 寫入 Amazon Kinesis Firehose。
問:如何將 AWS Eventbridge 的資料新增到 Amazon Data Firehose 串流?
您可以從 AWS EventBridge 主控台,將資料新增到 Firehose 串流。如需詳細資訊,請參閱 AWS EventBridge 文件。
問:可以使用哪種加密?
Firehose 讓您在傳輸資料到 Amazon S3 儲存貯體之後能進行資料加密。當您建立 Firehose 串流時,可以選擇使用自己的 AWS Key Management Service (KMS) 金鑰來加密資料。如需 KMS 的詳細資訊,請參閱 AWS Key Management Service。
問:當建立 Firehose 串流時,什麼是需要指定的 IAM 角色?
Firehose 假定您指定的 IAM 角色可存取 Amazon S3 儲存貯體和 Amazon OpenSearch 網域之類的資源。如需詳細資訊,請參閱《Firehose 開發人員指南》中的 使用 Kinesis Data Firehose 控制存取權。
資料轉型與格式轉換
問:如何在 Firehose 中準備和轉換原始資料?
Firehose 備有內建的資料格式轉換功能,您無需建立您自己的資料處理管道也可將原始資料或 Json 轉換成 Apache Parquet 和 Apache ORC 等目的地資料存放區要求的格式。使用 Firehose 亦可用靜態或動態定義的金鑰,例如「customer_id」或「transaction_id」,在交付到 S3 之前,動態分割您的串流資料。Firehose 依這些金鑰將資料分組,並交付到金鑰獨有的 S3 前綴中,讓您更容易使用 Athena、EMR 和 Redshift Spectrum,在 S3 中執行高效能、符合成本效益的分析。
而且,Amazon Data Firehose 備有內建的格式轉換選項,您亦可使用 AWS Lambda 函數,先行準備和轉換 Firehose 串流中的傳入原始資料,然後再將資料載入目的地。建立新的 Firehose 串流或編輯現有的 Firehose 串流時,您可以設定用於資料轉換的 AWS Lambda 函數。Amazon 建立了多個 Lambda 藍圖,您可從 Quick Start 中選擇這些藍圖。如需完整清單,請參閱 Amazon Data Firehose 開發人員指南。
問:可以使用何種壓縮格式?
Amazon Data Firehose 讓您可以在傳輸資料到 Amazon S3 之前先壓縮資料。這項服務目前支援 GZIP、ZIP 和 SNAPPY 壓縮格式。如果會將資料進一步載入 Amazon Redshift,則只支援 GZIP 格式。
問:使用 CloudWatch Logs 訂閱功能時,如何進行壓縮?
您可以使用 CloudWatch Logs 訂閱功能將資料從 CloudWatch Logs 串流到 Firehose。CloudWatch Logs 的所有日誌事件已壓縮成 gzip 格式,因此您應該將 Firehose 的壓縮組態保持為不壓縮,以避免二次壓縮。如需 CloudWatch Logs 訂閱功能的詳細資訊,請參閱《Amazon CloudWatch Logs 使用者指南》中的 Amazon Data Firehose 的訂閱篩選條件。
問:如何將準備好及轉換過的資料從 AWS Lambda 函數傳回到 Amazon 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 Data Firehose 會將未轉換的傳入資料交付到另一個獨立的 S3 儲存貯體。您可指定額外的前綴,加到 Firehose 所產生的 "YYYY/MM/DD/HH" UTC 時間前綴的前面。
Amazon S3 內建的資料轉型功能
問:何時該使用 Firehose 動態分割?
Firehose 動態分割可避免在資料來源或儲存資料後因手動分割而提高複雜度及造成延誤,同時也可加快查詢最佳化資料集的分析速度。這樣可讓分析工具立即使用資料集有效率地執行它們的查詢,並加強對資料進行更精細的存取控制。例如,行銷自動化客戶可按客戶 ID 即時分割資料,使各客戶進行的查詢可查詢最佳化的資料集並更快的傳回結果。IT 作業或安全監控客戶可根據日誌內嵌的事件戳記來建立群組,以便其查詢最佳化資料集並更快獲得結果。此功能搭配 Amazon Data Firehose 現有的 JSON-to-parquet 格式轉換功能使用,讓 Amazon Data Firehose 成為 S3 絕佳的串流 ETL 選擇。
問:該如何設定 Firehose 的動態分割?
透過 AWS 管理主控台、CLI 或 SDK 可設定 Firehose 資料分割功能。建立或更新 Firehose 串流時,請選取 Amazon S3 作為 Firehose 串流的交付目的地並啟用動態分割。您可指定索引鍵或建立執行期要評估的表達式,藉此定義分割時要用的索引鍵。例如,您可在傳入的串流中選取一個資料欄位 (如客戶 ID),然後定義一個 S3 字首表達式 (如 customer_id=!{partitionKey:customer_id}/),執行時間會根據擷取的記錄來評估此表達式,定出要將記錄交付到哪個 S3 字首。
問:使用動態分割和分割索引鍵可以進行哪些類型的轉型和資料處理?
當您將資料寫入 Amazon S3 時,Firehose 支援立即可用的 parquet/orc 轉換。Firehose 亦與 Lambda 函數整合,以便您能自行編寫轉型程式碼。Firehose 還有一個內建的支援功能,可擷取記錄 (JSON 格式) 中的索引鍵資料欄位。Firehose 還支援 JQ 剖析語言,可使這些分區索引鍵轉型。若要進一步了解,請參閱《Firehose 開發人員指南》。
資料交付與目的地
問:是否可在 S3 儲存貯體保留一份所有原始資料的副本?
是,Firehose 可同時將所有未轉換的記錄備份到 S3 儲存貯體,並將已轉換的資料交付到目標。建立或更新 Firehose 串流時,可啟用來源記錄備份。
問:Firehose 交付資料到 Amazon S3 儲存貯體的頻率為何?
資料交付到 Amazon S3 的頻率是根據您為 Firehose 串流設定的 S3 緩衝大小和緩衝間隔值。Firehose 將資料傳輸至 Amazon S3 之前,會將傳入資料放到緩衝區。您可以設定 S3 緩衝大小 (1 MB 到 128 MB) 或緩衝間隔 (60 秒到 900 秒) 的值,以及先滿足哪個條件時會觸發將資料交付到 Amazon S3。若您已啟用 Apache parquet 或動態分割,則 Amazon S3 目的地的緩衝區大小以 MB 計,範圍介於 64MB 到 128MB 之間,預設值為 128MB。請注意,在資料交付到目的地落後於資料擷取至 Firehose 串流的情況下,Firehose 會自動提高緩衝大小以追上進度,並確認所有資料都交付到目的地。
問:如果選擇壓縮資料,則要如何套用緩衝大小?
緩衝大小會在壓縮之前先套用。因此,如果您選擇壓縮資料,則 Amazon S3 儲存貯體中的物件大小可以小於您所指定的緩衝大小。
問:建立 Firehose 串流時,什麼是需要指定的 Amazon Redshift 使用者權限?
Redshift 使用者需要有 Redshift INSERT 權限,以從 Amazon S3 儲存貯體複製資料到 Redshift 執行個體。
問:如果 Amazon Redshift 執行個體在 VPC 中,需要做些什麼?
如果您的 Redshift 執行個體是在 VPC 中,則需要從 VPC 解鎖 Firehose IP 地址,以授與 Amazon Data Firehose 存取 Redshift 執行個體的權限。有關如何至 VPC 解鎖 IP 的資訊,請參閱 Amazon Data Firehose 開發人員指南中的授與 Firehose 存取 Amazon Redshift 目的地的權限。
問:當選擇 Amazon Redshift 做為目標時,為什麼需要提供 Amazon S3 儲存貯體?
對於 Redshift 目的地,Amazon Data Firehose 會先傳輸資料至 Amazon S3 儲存貯體,然後發出 Redshift COPY 命令,從 S3 儲存貯體將資料載入 Redshift 執行個體。
問:單一 Firehose 串流是否可將資料傳遞至多個 Snowflake 資料表?
目前,單一 Firehose 串流只能將資料傳遞至一個 Snowflake 資料表。若要將資料傳遞至多個 Snowflake 資料表,您需要建立多個 Firehose 串流。
問:Firehose 在將資料傳遞至 Snowflake 串流時使用哪種傳遞模式?
Firehose 使用只傳遞一次方式,將語義傳遞至 Snowflake。這意味著即使發生錯誤或重試,每個記錄都會只傳遞一次到 Snowflake。但是,只傳遞一次並不保證資料中不會存在端對端重複,因為資料可能會由生產者或 ETL 管道的其他部分複製。
問:使用 Firehose 傳遞至 Snowflake 串流的最低延遲是多少?
我們預計大多數資料串流在 5 秒內傳遞。
問:什麼是 Amazon OpenSearch 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 目的地的索引輪換?
Firehose 可以根據時段輪換 Amazon OpenSearch Service 索引。您可以在建立 Firehose 串流時設定這個時段。如需詳細資訊,請參閱 Amazon Data Firehose 開發人員指南中的 Index Rotation for the Amazon OpenSearch Destination。
問:當選擇 Amazon OpenSearch Service 作為目的地時,為什麼需要提供 Amazon S3 儲存貯體?
將資料載入 Amazon OpenSearch Service 時,Firehose 可備份所有資料或只備份無法交付的資料。若要利用這個功能並避免遺失任何資料,您需要提供備份 Amazon S3 儲存貯體。
問:可以在建立 Firehose 串流之後變更它的設定嗎?
您可以在建立 Firehose 串流之後隨時變更它的設定。而您可以使用 Firehose 主控台或 UpdateDestination 操作來變更設定。當您的設定更新時,Firehose 串流會保持在 ACTIVE 狀態,而您可以繼續傳送資料至 Firehose 串流。更新過的設定通常會在幾分鐘內生效。
要交付至 VPC 目的地時,您可以變更目的地的端點 URL,只要新目的地在同一個 VPC、子網路和安全群組內能夠存取即可。若要變更 VPC、子網路和安全群組,您需要重新建立 Firehose 串流。
問:能否在一個帳戶內使用 Firehose 串流,將我的資料傳輸到不同帳戶內的 Amazon OpenSearch Service 網域之 VPC 目的地?
只有當 Firehose 和 Amazon OpenSearch Service 透過公有端點連線時,Firehose 交付才能傳送到 Amazon OpenSearch Service 中的不同帳戶。
如果 Firehose 和 Amazon OpenSearch Service 透過在私有 VPC 中進行連線。那麼,Firehose 串流和目的地所在的 Amazon OpenSearch Service 網域 VPC 必須在同一個帳戶內。
問:能否在一個區域內使用 Firehose 串流,將我的資料傳輸到不同區域內的 Amazon OpenSearch Service 網域之 VPC 目的地?
否,您的 Firehose 串流和目的地所在的 Amazon OpenSearch Service 網域必須在同一個區域內。
問:Kinesis 交付資料到 Amazon OpenSearch 網域的頻率為何?
資料交付到 Amazon OpenSearch Service 的頻率是根據您為 Firehose 串流設定的 OpenSearch 緩衝大小和緩衝間隔值。將資料傳輸至 Amazon OpenSearch Service 之前,Firehose 會將傳入資料放到緩衝區。您可以設定 OpenSearch 緩衝大小 (1 MB 到 100 MB) 或緩衝間隔 (60 秒到 900 秒) 的值,以及先滿足哪個條件時會觸發將資料交付到 Amazon OpenSearch Service。請注意,在資料交付到目的地落後於資料擷取至 Firehose 串流的情況下,Amazon Data Firehose 會自動提高緩衝大小以追上進度,並確認所有資料都交付到目的地。
問:什麼是 Amazon S3 儲存貯體中的清單檔案資料夾?
針對 Amazon Redshift 目標,Amazon Data Firehose 會產生資訊清單檔案以將 Amazon S3 物件批次載入至 Redshift 執行個體。資訊清單資料夾會儲存 Firehose 產生的資訊清單檔案。
問:如何讓備份的 OpenSearch 文件看起來像是 Amazon S3 儲存貯體中的文件?
如果使用「所有文件」模式,Amazon Data Firehose 會根據 Firehose 串流的緩衝設定來串連多個傳入的記錄,然後將它們交付到 S3 儲存貯體做為 S3 物件。無論是設定哪一種備份模式,未能交付的文件會使用特定 JSON 格式交付到 S3 儲存貯體。此種格式提供額外的資訊,像是錯誤碼和嘗試交付的時間。如需詳細資訊,請參閱 Amazon Data Firehose 開發人員指南中的 Amazon S3 Amazon OpenSearch 目的地備份。
問:單一 Firehose 串流可以傳輸資料到多個 Amazon S3 儲存貯體嗎?
目前,單一 Firehose 串流只能傳輸資料到一個 Amazon S3 儲存貯體。如果您想要傳輸資料到多個 S3 儲存貯體,可以建立多個 Firehose 串流。
問:單一 Firehose 串流可以傳輸資料到多個 Amazon Redshift 執行個體或資料表嗎?
目前,單一 Firehose 串流只能傳輸資料到一個 Redshift 執行個體和一個資料表。如果您想要傳輸資料到多個 Redshift 執行個體或資料表,可以建立多個 Firehose 串流。
問:單一 Firehose 串流可以傳輸資料到多個 Amazon OpenSearch Service 網域或索引嗎?
目前單一 Firehose 串流只能傳輸資料到一個 Amazon OpenSearch Service 網域和一個索引。如果您想要傳輸資料到多個 Amazon OpenSearch 網域或索引,可以建立多個 Firehose 串流。
問:Amazon Data Firehose 如何傳輸資料到我的 Amazon OpenSearch Service 網域內的 VPC?
當您啟用 Firehose 傳輸資料至 Amazon OpenSearch Service 中 VPC 內的目的地時,Amazon Data Firehose 會在您的 VPC 中為您所選擇的每個子網路建立一或多個跨帳戶彈性網路介面 (ENI)。Amazon Data Firehose 會使用這些 ENI 將資料傳輸至您的 VPC 內。ENI 的數量會自動擴展以符合服務需求。
問:單一 Firehose 串流是否可將資料傳遞至多個 Apache Iceberg 資料表?
是的,一個 Firehose 串流可以將資料傳遞到多個 Apache Iceberg 資料表。
問:Firehose 是否支援在不同帳戶或不同的 AWS 區域中連線到 AWS Glue Data Catalog?
是的,Firehose 支援在不同帳戶或不同的 AWS 區域中連線到 AWS Glue Data Catalog。
問:傳遞至 Apache Iceberg 資料表時,是否可以使用 Lambda 使用「資料轉換」功能?
是的,在傳遞至 Apache Iceberg 資料表時,您可以使用 Lambda 使用資料轉換。
故障診斷和管理 Firehose 串流
問:傳送資料至 Amazon Data Firehose 串流時為何受到限制?
根據預設,每個 Firehose 串流最多可進行每秒 2,000 次的交易、每秒 5,000 個記錄和每秒 5 MB。您可以透過提交提高服務限額表單輕鬆增加限額。
問:為什麼會在 Amazon S3 儲存貯體、Amazon Redshift 表、Amazon OpenSearch 索引或 Splunk 叢集中看到重複的記錄?
Amazon Data Firehose 針對資料交付至少會使用一次語意。在極少見的情況下 (例如,資料交付嘗試時請求逾時),如果之前的請求最後還是通過,Firehose 重試交付就會產生重複記錄。
問:如果資料未能交付到我的 Amazon S3 儲存貯體,會發生什麼情況?
如果您的資料來源為 Direct PUT,且未能將資料交付到 Amazon S3 儲存貯體,則 Amazon Data Firehose 會每 5 秒重試交付資料,最長重試時間為 24 小時。如果問題超過 24 小時的最長保留期後仍存在,Amazon Data Firehose 將會捨棄資料。
如果您的資料來源為 Kinesis Data Streams,且資料交付到 Amazon S3 儲存貯體失敗,則 Amazon Data Firehose 會每 5 秒重試交付資料,最長重試期間為在 Kinesis Data Streams 上設定的小時。
問:如果資料交付到我的 Amazon Redshift 執行個體失敗,會發生什麼情況?
如果資料交付到 Redshift 執行個體失敗,Amazon Data Firehose 會每 5 分鐘重試資料交付,最長重試期間為 120 分鐘。120 分鐘之後,Amazon Data Firehose 會略過目前準備好 COPY 的 S3 物件批次,然後移至下一個批次。略過物件的相關資訊會傳輸至 S3 儲存貯體,以在錯誤資料中作為資訊清單檔案,讓您可以用於手動回填。如需有關如何使用資訊清單檔案手動 COPY 資料的資訊,請參閱使用清單檔案來指定資料檔案。
問:如果資料交付到我的 Amazon OpenSearch 網域失敗,會發生什麼情況?
對於 Amazon OpenSearch Service 目的地,您可以在建立 Firehose 串流時指定介於 0 秒到 7,200 秒之間的重試時間。如果資料未能交付到 Amazon OpenSearch 網域,Amazon Data Firehose 會在指定的時段重試資料交付。重試時間過後,Amazon Data Firehose 會略過目前的資料批次,進行下一個批次。略過文件的詳細資訊會傳輸至 S3 儲存貯體的 opensearch_failed 資料夾,讓您可以用於手動回填。
問:如果資料轉換失敗會發生什麼事?
當 Firehose 嘗試叫用 Lambda 函數進行資料轉換時,會發生兩類失敗情況:
- 第一類是達到網路逾時限制或達到 Lambda 叫用上限等原因造成的函數叫用失敗。如果是這種失敗的情況,Firehose 預設會重試叫用三次,然後略過該特定批次的記錄。略過的記錄會視為未成功處理的記錄。您可以使用 CreateDeliveryStream 和 UpdateDeliveryStream API 設定叫用重試次數,範圍介於 0 到 300 之間。對於這類失敗,也可以使用 Firehose 的錯誤記錄功能,將調用錯誤發送到 CloudWatch Logs。如需詳細資訊,請參閱使用 Amazon CloudWatch Logs 進行監控。
- 第二類失敗情況發生的原因是當 Lambda 函數傳回記錄時,其轉換結果被設成 "ProcessingFailed"。Firehose 會將這些記錄視為未成功處理的記錄。對於這類失敗,您可使用 Lambda 的記錄功能,將錯誤日誌發送到 CloudWatch Logs。如需詳細資訊,請參閱存取 AWS Lambda 的 Amazon CloudWatch Logs。
針對這兩類失敗情況,未成功處理的記錄會傳送到 S3 儲存貯體的 processing_failed 資料夾。
問:為什麼交付的 S3 物件大小大於我在 Firehose 串流組態中指定的緩衝大小?
如果緩衝大小條件早於緩衝間隔條件被滿足,則大多數時間交付的 S3 物件大小應該反映指定的緩衝大小。不過,當資料交付到目的地落後於資料寫入 Firehose 串流時,Firehose 會動態提高緩衝大小以追上進度,並確認所有資料都交付到目的地。在這些情況下,交付的 S3 物件大小就可能大於指定的緩衝大小。
問:什麼是 Amazon S3 儲存貯體中的錯誤資料夾?
錯誤資料夾會儲存資訊清單檔案,其中包含無法載入 Redshift 執行個體的 S3 物件資訊。您可以透過 Redshift COPY 命令手動重新載入這些物件。如需有關如何使用資訊清單檔案手動 COPY 資料的資訊,請參閱使用清單檔案來指定資料檔案。
問:什麼是 Amazon S3 儲存貯體中的 opensearch_failed 資料夾?
opensearch_failed 資料夾存放未能載入到 Amazon OpenSearch 的文件,如果資料傳輸到我的 Amazon OpenSearch 網域失敗會怎樣?您可以手動重新建立這些文件的索引以回填。
問:什麼是 Amazon S3 儲存貯體中的 processing_failed 資料夾?
processing_failed 資料夾用來存放 AWS Lambda 函數轉換失敗的記錄。您可以手動重新處理這些記錄。
問:如何監控 Amazon Data Firehose 串流的操作和效能?
Firehose 主控台會顯示重要的操作和效能指標,例如傳入資料量和已傳輸的資料量。Amazon Data Firehose 也與 Amazon CloudWatch 指標整合,因此您可以收集、查看和分析 Firehose 串流的指標。如需 Amazon Data Firehose 指標的詳細資訊,請參閱《Amazon Data Firehose 開發人員指南》的使用 Amazon CloudWatch 指標進行監控。
問:如何監控 Amazon Data Firehose 串流的資料轉換和交付失敗?
Amazon Data Firehose 已與 Amazon CloudWatch Logs 整合,所以如果資料轉換或交付失敗,您可查看特定的錯誤日誌。您可以在建立 Firehose 串流時啟用錯誤記錄。如需詳細資訊,請參閱 Amazon Data Firehose 開發人員指南中的使用 Amazon CloudWatch Logs 進行監控。
問:如何管理和控制對 Amazon Data Firehose 串流的存取權?
Amazon Data Firehose 已與 AWS Identity and Access Management 整合,這是一個讓您 夠安全地控制對 AWS 服務和使用者資源存取權限的服務。例如,您可以建立僅允許特定使用者或群組將資料新增到 Firehose 串流的政策。如需串流存取管理和控制的詳細資訊,請參閱使用 Amazon Kinesis Data Firehose 控制存取權。
問:如何記錄對 Amazon Data Firehose 串流所發出的 API 呼叫,以用於安全分析和操作故障排除?
Amazon Data Firehose 已與 AWS CloudTrail 整合,這是一個為您的帳戶記錄 AWS API 呼叫並提供日誌檔的服務。如需 API 呼叫日誌的詳細資訊和支援的 Amazon Data Firehose API 操作清單,請參閱使用 AWS CloudTrail 記錄 Amazon Data Firehose API 呼叫。
定價和帳單
問:Firehose 是否可用於 AWS 免費方案?
否。AWS 免費方案目前不包括 Firehose。AWS 免費方案是提供一組 AWS 服務免費試用的計劃。如需詳細資訊,請參閱 AWS 免費方案。
問:Firehose 的成本是多少?
Firehose 使用簡單的按使用量付費定價。既無預付費用也沒有最低費用,只需為您使用的資源付費。Amazon Data Firehose 定價根據 Firehose 取用的資料量 (GB) 決定,在將 Direct PUT 和 Kinesis Data Streams 作為來源時,每個記錄會進位到最接近的 5 KB。在將 Vended Logs 作為來源時,定價根據 Firehose 擷取的資料量 (GB) 決定。如需有關 Amazon Data Firehose 成本的詳細資訊,請參閱 Amazon Data Firehose 定價。
問:當使用 PutRecordBatch 操作將資料傳送至 Amazon Data Firehose 時,如何計算 5 KB 進位?
5 KB 進位是在記錄層級計算,而非在 API 操作層級。例如,如果您的 PutRecordBatch 呼叫包含 2 個 1 KB 的記錄,則來自該呼叫的資料量會算成 10 KB。(每個記錄 5 KB)
問: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 Data Firehose SLA 提供哪些保證?
Amazon Data Firehose SLA 保證 Amazon Data Firehose 每個月正常執行時間百分比至少為 99.9%。
問:如何知道自己是否符合 SLA 服務抵扣的資格?
如果您在一個以上的可用區域內執行某項任務,而且在每個月結算週期內,同一個區域每個月的正常執行時間百分比低於 99.9%,則根據 Amazon Data Firehose SLA,您有資格獲得 Amazon Data Firehose 的 SLA 抵用金。
如需 SLA 所有條款與條件的完整詳細資訊,以及如何提交索賠的詳細資訊,請參閱 Amazon Data Firehose SLA 詳細資訊頁面。