問:什麼是 Amazon Kinesis Firehose?

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

 

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

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

問:如何使用 Amazon Kinesis Firehose?

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

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

問:什麼是來源?

來源是持續產生和擷取串流資料的位置。例如,來源可以是 Amazon EC2 執行個體上執行的日誌伺服器、行動裝置上執行的應用程式、IoT 裝置上的感應器或 Kinesis 串流。 

問:Amazon Kinesis Firehose 有哪些限制?

Amazon Kinesis Firehose 交付串流的輸送量可無限擴展。然而,使用 Firehose 時有一些限制需謹記在心:

  • 傳送到 Firehose (Base64 編碼前) 的記錄大小上限為 1000 KB。
  • API 操作 CreateDeliveryStream()DeleteDeliveryStream()DescribeDeliveryStream()ListDeliveryStreams()UpdateDestination() 每秒可提供最高 5 次的交易。
  • 每個交付串流儲存資料記錄的時間最高可達 24 小時,以防交付目的地不可用。
  • PutRecordBatch() 操作可以處理最多 500 個記錄的每個呼叫或最多 4 MB 的每個呼叫,以哪個較小為準。
  • 緩衝大小的範圍是從 1 MB 到 128 MB。大小閾值會在壓縮之前套用至緩衝。
  • 緩衝間隔的範圍是從 60 秒到 900 秒。

根據預設,每個帳戶在每個 AWS 區域最多可擁有 20 個交付串流。每個交付串流最多可進行每秒 2,000 次的交易、每秒 5,000 個記錄和每秒 5 MB。透過提交提高服務限額表單可以輕鬆增加這兩個限制的限額。

 

 

 

問:什麼是交付串流?

交付串流是 Amazon Kinesis Firehose 的基礎實體。您透過建立交付串流,然後將資料傳入交付串流來使用 Firehose。

問:什麼是記錄?

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

問:什麼是目的地?

目的地是資料將傳輸到的資料存放區。Amazon Kinesis Firehose 目前支援 Amazon S3、Amazon Redshift 和 Amazon Elasticsearch Service 作為目的地。

 

 

 

問:如何建立交付串流?

您可以透過 Firehose 主控台CreateDeliveryStream 操作,來建立 Amazon Kinesis Firehose 交付串流。如需詳細資訊,請參閱 Creating a Delivery Stream

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

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

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

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

問:可以使用哪種加密?

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

問:Lambda 執行的資料轉換為何?

Firehose 可以叫用 AWS Lambda 函數,先轉換傳入的資料,然後將它交付到目的地。您可以使用我們提供的其中一個 Lambda 藍圖設定新的 Lambda 函數,或是選擇現有的 Lambda 函數。

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

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

問:什麼是錯誤記錄?

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

問:什麼是緩衝大小和緩衝間隔?

Amazon Kinesis Firehose 在傳輸資料到目的地之前,會將傳入的串流資料放到特定大小的緩衝區或在緩衝區放置特定的一段期間。您可以在建立交付串流時設定緩衝大小和緩衝間隔。緩衝大小是以 MB 為單位,針對 Amazon S3 目的地的範圍從1 MB 到 128 MB,而針對 Amazon Elasticsearch Service 目的地的範圍則從 1 MB 到 100 MB。緩衝間隔是以秒數為單位,而範圍是從 60 秒到 900 秒。請注意,在資料交付到目的地落後於資料寫入交付串流的情況下,Firehose 會動態提高緩衝大小以追上進度,並確認所有資料都交付到目的地。

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

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

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

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

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

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

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

如果您的 Amazon Redshift 叢集是在 VPC 中,則需要從 VPC 解鎖 Firehose IP 地址,以授予 Amazon Kinesis Firehose 存取 Redshift 叢集的權限。Firehose 目前為每個可用 AWS 區域使用一個 CIDR 區塊:美國東部 (維吉尼亞北部) 為 52.70.63.192/27、美國西部 (奧勒岡) 為 52.89.255.224/27 和歐洲 (愛爾蘭) 為 52.19.239.192/27。有關如何解鎖 IP 至 VPC 的資訊,請參閱 Amazon Kinesis Firehose 開發人員指南中的 Grant Firehose Access to an Amazon Redshift Destination

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

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

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

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

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

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

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

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

Amazon Kinesis Firehose 允許您使用 AWS Lambda 函數,先行準備和轉換交付串流中的傳入原始資料,然後再將資料載入到目的地。建立新的交付串流或編輯現有的交付串流時,您可以設定用於資料轉換的 AWS Lambda 函數。

問:如何將準備好及轉換過的資料從 AWS Lambda 函數傳回到 Amazon Kinesis 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 藍圖,可用來建立用於資料轉換的 Lambda 函數:

  • General Firehose Processing:這個藍圖包含上述的資料轉換和狀態模型。您可以在任何自訂轉換邏輯使用此藍圖。
  • Apache Log to JSON:這個藍圖會剖析 Apache 日誌行並轉換成 JSON 物件,並使用預先定義的 JSON 欄位名稱。
  • Apache Log to CSV:這個藍圖會剖析 Apache 日誌行並轉換成 CSV 格式。
  • Syslog to JSON:這個藍圖會剖析 Syslog 日誌行並轉換成 JSON 物件,並使用預先定義的 JSON 欄位名稱。
  • Syslog to CSV:這個藍圖會剖析 Syslog 日誌行並轉換成 CSV 格式。

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

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

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

您可以透過 Amazon Kinesis 代理器或 Firehose 的 PutRecordPutRecordBatch 操作,將資料新增到 Amazon Kinesis Firehose 交付串流。Kinesis Firehose 還與其他 AWS 資料來源整合,像是 Kinesis Streams、AWS IoT、Amazon CloudWatch Logs 和 Amazon CloudWatch Events。

問:什麼是 Amazon Kinesis 代理器?

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

問:Amazon Kinesis 代理器支援哪些平台?

Amazon Kinesis 代理器目前支援 Amazon Linux 和 Red Hat Enterprise Linux。

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

您可以使用以下命令和連結來下載和安裝 Amazon 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

問:如何使用 Amazon Kinesis 代理器?

您在伺服器上安裝 Amazon Kinesis 代理器之後,可以在磁碟上設定代理器來監控特定檔案,並持續將新資料傳送至您的交付串流。如需詳細資訊,請參閱 Writing with Agents

問:PutRecordPutRecordBatch 操作有什麼差別?

PutRecord 操作允許 API 呼叫內的單一資料記錄,而 PutRecordBatch 操作允許 API 呼叫內的多個資料記錄。如需詳細資訊,請參閱 PutRecordPutRecordBatch

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

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

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

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

問:Kinesis Firehose 從 Kinesis 串流讀取資料的頻率為何?

Kinesis Firehose 每秒會針對每個 Kinesis 碎片呼叫 Kinesis Streams GetRecords() 一次。

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

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

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

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

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

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

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

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

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

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

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

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

 

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

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

問:Amazon Kinesis Firehose 傳輸資料到 Amazon Redshift 叢集的頻率為何?

對於 Amazon Redshift 目的地,Amazon Kinesis Firehose 會先傳輸資料至 Amazon S3 儲存貯體,然後發出 Redshift COPY 命令,以從 S3 儲存貯體將資料載入到 Redshift 叢集。從 Amazon S3 到 Amazon Redshift 的資料 COPY 操作頻率取決於 Redshift 叢集可以多快完成 COPY 命令。如果還有要複製的資料,只要您的 Redshift 叢集成功完成之前的 COPY 命令,Firehose 就會立即發出新的 COPY 命令。

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

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

問:Amazon S3 儲存貯體內的資料是如何組織的?

Amazon Kinesis Firehose 將物件放至 Amazon S3 之前,會以 YYYY/MM/DD/HH 格式新增 UTC 時間字首。此字首會轉譯成 Amazon S3 資料夾結構,而以斜線 (/) 分隔的每個標籤會變成子資料夾。您可以使用斜線來新增自己的最上層資料夾,以修改此資料夾結構 (例如 myApp/YYYY/MM/DD/HH) 或在最上層資料夾名稱 YYYY 之前加入文字 (例如,myApp YYYY/MM/DD/HH)。當建立交付串流時,這可透過指定 S3 字首來完成上述操作。

問:Amazon Kinesis Firehose 所傳輸之 Amazon S3 物件的命名模式為何?

Amazon S3 物件名稱遵循以下模式:DeliveryStreamName-DeliveryStreamVersion-YYYY-MM-DD-HH-MM-SS-RandomString,其中 DeliveryStreamVersion 會從 1 開始,然後每次交付串流設定變更時會加 1。您可以使用 Firehose 主控台UpdateDestination 操作,來變更交付串流設定 (例如,S3 儲存貯體的名稱、緩衝提示、壓縮以及加密)。

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

針對 Amazon Redshift 目的地,Amazon Kinesis Firehose 會產生資訊清單檔案以將 Amazon S3 物件批次載入至 Redshift 叢集。資訊清單資料夾會儲存 Firehose 產生的資訊清單檔案。

問:如何讓備份的 Elasticsearch 文件看起來像是 Amazon S3 儲存貯體中的文件?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

對於 Amazon Elasticsearch Service 目的地,您可以在建立交付串流時指定介於 0 秒到 7200 秒之間的重試期間。如果資料交付到 Amazon ES 網域失敗,Amazon Kinesis Firehose 會在指定的時段重試資料交付。超過重試期間之後,Amazon Kinesis Firehose 會略過目前的資料批次,進行下一個批次。略過文件的詳細資訊會傳輸至 S3 儲存貯體的 elasticsearch_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 儲存貯體中的 elasticsearch_failed 資料夾?

elasticsearch_failed 資料夾是用來存放無法載入 Amazon Elasticsearch 網域的文件。您可以手動重新建立這些文件的索引以回填。 

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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