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

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

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

注意

如果您想要將資料傳送到 Lambda 函數以外的目標,或在傳送資料之前豐富資料,請參閱 Amazon EventBridge 管道

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

您可以使用 AWS 託管卡夫卡服務 Amazon Managed Streaming for Apache Kafka(AmazonMSK),或自我管理的卡夫卡集群。如需將 Lambda 搭配 Amazon 搭配使用的詳細資訊MSK,使用 Lambda 與 Amazon MSK

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

阿帕奇卡夫卡作為事件源的操作類似於使用 Amazon 簡單隊列服務(AmazonSQS)或 Amazon Kinesis。Lambda 會在內部輪詢事件來源中的新訊息,然後同步調用目標 Lambda 函數。Lambda 會批次讀取訊息,並將這些訊息作為事件酬載提供給函數。批次大小上限可設定。(預設值為 100 則訊息。)

警告

Lambda 事件來源對應至少處理每個事件一次,並且可能會重複處理記錄。為了避免與重複事件相關的潛在問題,我們強烈建議您將函數代碼設為冪等。若要深入了解,請參閱 AWS 知識中心如何讓 Lambda 函數具有冪等性

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

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

範例事件

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 ] } ] } ] } }