使用 Lambda 與 Amazon MSK - AWS Lambda

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

使用 Lambda 與 Amazon MSK

注意

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

適用於 Apache Kafka (AmazonMSK) 的 Amazon 受管串流是一項全受管服務,可用來建置和執行使用 Apache Kafka 處理串流資料的應用程式。Amazon MSK 簡化了運行 Kafka 的集群的設置,擴展和管理。Amazon MSK 還可讓您更輕鬆地為多個可用區域設定應用程式,並使用 AWS Identity and Access Management (IAM) 來確保安全性。Amazon MSK 支持多個開源版本的卡夫卡。

Amazon MSK 作為事件源的操作類似於使用 Amazon 簡單隊列服務(AmazonSQS)或 Amazon Kinesis。Lambda 會在內部輪詢事件來源中的新訊息,然後同步調用目標 Lambda 函數。Lambda 會批次讀取訊息,並將這些訊息作為事件酬載提供給函數。最大批次大小可進行設定 (預設為 100 則訊息)。如需詳細資訊,請參閱批次處理行為

警告

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

如需如何將 Amazon 設定MSK為事件來源的範例,請參閱 AWS 運算部落格 AWS Lambda上的使用 Amazon MSK 做為事件來源。如需完整教學課程,請參閱 Amazon MSK 實驗室中的 Amazon MSK Lambda 整合

範例事件

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

{ "eventSource":"aws:kafka", "eventSourceArn":"arn:aws:kafka:us-east-1:123456789012:cluster/vpc-2priv-2pub/751d2973-a626-431c-9d4e-d7975eb44dd7-2", "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 ] } ] } ] } }