本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
搭配使用 Lambda 與自我管理 Apache Kafka
注意
如果您想要將資料傳送到 Lambda 函數以外的目標,或在傳送資料之前豐富資料,請參閱 Amazon EventBridge 管道。
Lambda 支援 Apache Kafka
您可以使用 AWS 託管卡夫卡服務 Amazon Managed Streaming for Apache Kafka(AmazonMSK),或自我管理的卡夫卡集群。如需將 Lambda 搭配 Amazon 搭配使用的詳細資訊MSK,使用 Lambda 與 Amazon MSK
本主題說明如何搭配使用 Lambda 與自我管理 Kafka 叢集。在 AWS 術語中,自我管理的叢集包含非AWS 託管的 Kafka 叢集。例如,您可以使用雲端供應商 (例如 Confluent Cloud
阿帕奇卡夫卡作為事件源的操作類似於使用 Amazon 簡單隊列服務(AmazonSQS)或 Amazon Kinesis。Lambda 會在內部輪詢事件來源中的新訊息,然後同步調用目標 Lambda 函數。Lambda 會批次讀取訊息,並將這些訊息作為事件酬載提供給函數。批次大小上限可設定。(預設值為 100 則訊息。)
警告
Lambda 事件來源對應至少處理每個事件一次,並且可能會重複處理記錄。為了避免與重複事件相關的潛在問題,我們強烈建議您將函數代碼設為冪等。若要深入了解,請參閱 AWS 知識中心如何讓 Lambda 函數具有冪等性
對於基於 Kafka 的事件來源,Lambda 支援處理控制參數,例如批次間隔和批次大小。如需詳細資訊,請參閱批次處理行為。
如需如何使用自我管理的 Kafka 做為事件來源的範例,請參閱在計算部落格上使用自我託管的 Apache Kafka 做為事件來源
主題
範例事件
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 ] } ] } ] } }