Amazon 數據 Firehose 數據轉換 - Amazon 數據 Firehose

Amazon 數據 Firehose 以前被稱為 Amazon Kinesis Data Firehose

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

Amazon 數據 Firehose 數據轉換

Amazon 資料 Firehose 可以叫用您的 Lambda 函數來轉換傳入的來源資料,並將轉換後的資料交付到目的地。您可以在建立 Firehose 串流時啟用 Amazon 資料 Firehose 資料轉換。

資料轉換流程

當您啟用 Firehose 資料轉換時,Firehose 會緩衝傳入的資料。緩衝大小提示的範圍介於 0.2 MB 和 3MB 之間。除了 Splunk 和雪花之外,所有目的地的預設 Lambda 緩衝大小提示都是 1 MB。如果是「潑濺」和「雪花」,預設的緩衝提示是 256 KB。Lambda 緩衝間隔提示的範圍介於 0 到 900 秒之間。除了雪花以外的所有目的地,預設 Lambda 緩衝間隔提示為 60 秒。對於雪花,預設的緩衝提示間隔為 30 秒。若要調整緩衝大小,請使用呼ProcessorParameter叫的BufferSizeInMBsIntervalInSeconds來設定CreateDeliveryStreamUpdateDestinationAPI 的ProcessingConfiguration參數。然後,Firehose 會使用同步叫用模式,以非同步方式呼叫指定的 Lambda 函數,以每個緩衝的批次方式來叫用 AWS Lambda 。轉換後的資料會從 Lambda 傳送至 Firehose。然後,Firehose 會在達到指定的目的地緩衝大小或緩衝間隔時(以先發生者為準)將其發送到目的地。

重要

在請求和回應方面,Lambda 同步調用模式的​承載大小上限為 6 MB。因此,用來傳送請求至函式的緩衝區大小必須小於或等於 6 MB,且函式所傳回的回應也不得超過 6 MB。

資料轉換和狀態模型

來自 Lambda 的所有轉換記錄都必須包含下列參數,否則 Amazon 資料 Firehose 會拒絕這些參數,並將其視為資料轉換失敗。

對於 Kinesis Data Streams 和 Direct PUT:

recordId

記錄 ID 會在叫用期間從 Amazon 資料 Firehose 傳送至 Lambda。轉換記錄必須包含相同的記錄 ID。原始記錄的 ID 與轉換記錄的 ID 若有任何不符,就會視為資料轉換失敗。

result

記錄的資料轉換狀態。可能的值包括:Ok (記錄轉換成功)、Dropped (處理邏輯刻意捨棄記錄),以及 ProcessingFailed (記錄無法轉換)。​ 如果記錄的狀態為OkDropped,Amazon 資料 Firehose 會將其視為已成功處理。否則,Amazon 數據 Firehose 件認為未成功處理。

資料

已轉換資料承載 (base64 編碼後)。

以下是一個示例 Lambda 結果輸出:

{ "recordId": "<recordId from the Lambda input>", "result": "Ok", "data": "<Base64 encoded Transformed data>" }

對於 Amazon MSK

recordId

在呼叫期間,記錄識別碼會從 Firehose 傳送至 Lambda。轉換記錄必須包含相同的記錄 ID。原始記錄的 ID 與轉換記錄的 ID 若有任何不符,就會視為資料轉換失敗。

result

記錄的資料轉換狀態。可能的值包括:Ok (記錄轉換成功)、Dropped (處理邏輯刻意捨棄記錄),以及 ProcessingFailed (記錄無法轉換)。​ 如果記錄的狀態為OkDropped,Firehose 會認為該記錄已成功處理。否則,Firehose 會認為未成功處理。

KafkaRecordValue

已轉換資料承載 (base64 編碼後)。

以下是一個示例 Lambda 結果輸出:

{ "recordId": "<recordId from the Lambda input>", "result": "Ok", "kafkaRecordValue": "<Base64 encoded Transformed data>" }

Lambda 藍圖

這些藍圖示範如何建立和使用 AWS Lambda 函數來轉換 Amazon 資料 Firehose 資料串流中的資料。

若要查看主控台中可用的 AWS Lambda 藍圖
  1. 請登入 AWS Management Console 並開啟 AWS Lambda 主控台,網址為 https://console.aws.amazon.com/lambda/

  2. 選擇 Create function (建立函式),接著選擇 Use a blueprint (使用藍圖)

  3. 在「藍圖」欄位中,搜尋關鍵字firehose以尋找 Amazon 資料 Firehose Lambda 藍圖。

藍圖清單:

  • 傳送至 Amazon 資料 Firehose 串流的處理記錄 (Node.js, Python)

    此藍圖顯示了如何使用 AWS Lambda 處理 Firehose 資料串流中資料的基本範例。

    最新發佈日期:2016 年 11 月。

    發行說明:無。

  • 傳送至 Firehose 的處理 CloudWatch 日誌

    此藍圖已取代。如需處理傳送至 Firehose 之 CloudWatch 記錄的相關資訊,請參閱使用 CloudWatch 記錄檔寫入 Firehose

  • 將系統日誌格式的 Amazon 數據 Firehose 流記錄轉換為 JSON(Node.js)

    此藍圖顯示如何將 RFC3164 Syslog 格式的輸入記錄轉換為 JSON。

    最新發佈日期:2016 年 11 月。

    發行說明:無。

若要查看中可用的藍圖 AWS Serverless Application Repository
  1. 前往 AWS Serverless Application Repository

  2. 選擇瀏覽所有應用程式

  3. Applications (應用程式) 欄位中,搜尋關鍵字 firehose

您也可以在不使用藍圖的情況下建立 Lambda 函數。請參閱開始使用 AWS Lambda

資料轉換失敗的處理方式

如果您的 Lambda 函數叫用因為網路逾時或您已達到 Lambda 叫用限制而失敗,Amazon 資料 Firehose 預設會重試呼叫三次。如果呼叫未成功,Amazon 資料 Firehose 就會略過該批次的記錄。略過的記錄會視為未處理成功。您可以使用或 UpdateDestination API 指定CreateDeliveryStream或覆寫重試選項。對於這種類型的故障,您可以將調用錯誤記錄到 Amazon CloudWatch 日誌。如需詳細資訊,請參閱 使 CloudWatch 用日誌監控 Amazon 數據 Firehose

如果記錄的資料轉換狀態為ProcessingFailed,Amazon 資料 Firehose 會將記錄視為未成功處理記錄。對於這種類型的故障,您可以從 Lambda 函數將錯誤 CloudWatch 日誌發送到 Amazon 日誌。如需詳細資訊,請參AWS Lambda 開發人員指南 AWS Lambda中的存取 Amazon CloudWatch 日誌

如果資料轉換失敗,未成功處理的記錄會傳送到 processing-failed資料夾中的 S3 儲存貯體。記錄的格式如下:

{ "attemptsMade": "count", "arrivalTimestamp": "timestamp", "errorCode": "code", "errorMessage": "message", "attemptEndingTimestamp": "timestamp", "rawData": "data", "lambdaArn": "arn" }
attemptsMade

嘗試叫用請求的次數。

arrivalTimestamp

Amazon 數據 Firehose 件收到該記錄的時間。

errorCode

Lambda 傳回 HTTP 錯誤代碼。

errorMessage

Lambda 傳回錯誤訊息。

attemptEndingTimestamp

Amazon 數據 Firehose 件停止嘗試 Lambda 調用的時間。

rawData

Base64 編碼記錄資料。

lambdaArn

Lambda 函數的 Amazon Resource Name (ARN)。

Lambda 調用的持續時間

Amazon 資料 Firehose 支援最多 5 分鐘的 Lambda 叫用時間。如果您的 Lambda 函數需要 5 分鐘以上才能完成,您會收到下列錯誤:Firehose 在呼叫 AWS Lambda 時遇到逾時錯誤。支援的函數逾時上限為 5 分鐘。

如需 Amazon 資料 Firehose 在發生此類錯誤時會執行哪些動作的相關資訊,請參閱資料轉換失敗的處理方式

來源記錄備份

Amazon Data Firehose 可以將所有未轉換的記錄同時備份到 S3 儲存貯體,同時將轉換後的記錄傳送到目的地。您可以在建立或更新 Firehose 串流時啟用來源記錄備份。啟用來源記錄備份後,便不能停用。