搭配使用 Lambda 與自我管理 Apache Kafka - AWS Lambda

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

搭配使用 Lambda 與自我管理 Apache Kafka

注意

如要將資料傳送到 Lambda 函數以外的目標,或在傳送資料之前讓資料更豐富,請參閱 Amazon EventBridge Pipes

Lambda 支援 Apache Kafka 作為事件來源。Apache Kafka 是開源事件串流平台,可支援資料管道和串流分析等工作負載。

您可以使用 AWS 受管 Kafka 服務 Amazon Managed Streaming for Apache Kafka (Amazon MSK) 或自我管理的 Kafka 叢集。如需搭配使用 Lambda 與 Amazon MSK 的詳細資訊,請參與 搭配使用 Lambda 與 Amazon MSK

本主題說明如何搭配使用 Lambda 與自我管理 Kafka 叢集。在 AWS 術語中,自我管理叢集包含非AWS 託管的 Kafka 叢集。例如,您可以使用雲端供應商 (例如 Confluent Cloud) 託管您的 Kafka 叢集。

Apache Kafka 作為事件來源時,其運作方式類似於使用 Amazon Simple Queue Service (Amazon SQS) 或 Amazon Kinesis。Lambda 會在內部輪詢事件來源中的新訊息,然後同步調用目標 Lambda 函數。Lambda 會批次讀取訊息,並將這些訊息作為事件酬載提供給函數。最大批次大小可進行設定 (預設為 100 則訊息)。如需詳細資訊,請參閱批次處理行為

若要最佳化自我管理 Apache Kafka 事件來源映射的輸送量,請設定佈建模式。在佈建模式中,可以定義配置給事件來源映射的事件輪詢器數量下限和上限。這可以提高事件來源映射處理意外訊息尖峰的能力。如需詳細資訊,請參閱佈建模式

警告

Lambda 事件來源映射至少會處理每個事件一次,而且可能會重複處理記錄。為避免與重複事件相關的潛在問題,強烈建議您讓函數程式碼具有等冪性。若要進一步了解,請參閱 AWS 知識中心中的如何使 Lambda 函數成為等冪。

對於基於 Kafka 的事件來源,Lambda 支援處理控制參數,例如批次間隔和批次大小。如需詳細資訊,請參閱批次處理行為

如需如何使用自我管理的 Kafka 做為事件來源的範例,請參閱 AWS 運算部落格上的使用自我託管的 Apache Kafka 做為 的事件來源 AWS Lambda

範例事件

Lambda 會在調用 Lambda 函數時,在事件參數中傳送訊息批次。事件酬載包含訊息陣列。陣列中的每個項目包含 Kafka 主題和 Kafka 分割區識別符的詳細資訊,以及時間戳記和 base64 編碼的訊息。

{ "eventSource": "SelfManagedKafka", "bootstrapServers":"b-2.demo-cluster-1.a1bcde.c1.kafka.us-east-1.amazonaws.com:9092,b-1.demo-cluster-1.a1bcde.c1.kafka.us-east-1.amazonaws.com:9092", "records":{ "mytopic-0":[ { "topic":"mytopic", "partition":0, "offset":15, "timestamp":1545084650987, "timestampType":"CREATE_TIME", "key":"abcDEFghiJKLmnoPQRstuVWXyz1234==", "value":"SGVsbG8sIHRoaXMgaXMgYSB0ZXN0Lg==", "headers":[ { "headerKey":[ 104, 101, 97, 100, 101, 114, 86, 97, 108, 117, 101 ] } ] } ] } }