Verwendung von Lambda mit selbstverwaltetem Apache Kafka - AWS Lambda

Verwendung von Lambda mit selbstverwaltetem Apache Kafka

In diesem Thema wird die Verwendung von Lambda mit einem selbstverwalteten Kafka-Cluster beschrieben. In der AWS-Terminologie umfasst ein selbstverwalteter Cluster nicht-AWS-gehostete Kafka-Cluster. Sie können Ihren Kafka-Cluster beispielsweise bei einem Cloud-Anbieter wie Confluent Cloud oder Redpanda hosten.

In diesem Kapitel wird erklärt, wie Sie einen selbstverwalteten Apache-Kafka-Cluster als Ereignisquelle für Ihre Lambda-Funktion verwenden. Der allgemeine Prozess zur Integration von selbstverwaltetem Apache Kafka mit Lambda umfasst die folgenden Schritte:

  1. Cluster- und Netzwerkeinrichtung – Richten Sie zunächst Ihren selbstverwalteten Apache-Kafka-Cluster mit der richtigen Netzwerkkonfiguration ein, damit Lambda auf Ihren Cluster zugreifen kann.

  2. Einrichtung der Zuordnung von Ereignisquellen – Erstellen Sie anschließend die Ressource der Zuordnung von Ereignisquellen, die Lambda benötigt, um Ihren Apache-Kafka-Cluster sicher mit Ihrer Funktion zu verbinden.

  3. Einrichtung von Funktionen und Berechtigungen – Stellen Sie abschließend sicher, dass Ihre Funktion korrekt eingerichtet ist und über die erforderlichen Berechtigungen in ihrer Ausführungsrolle verfügt.

Apache Kafka als Ereignisquelle funktioniert ähnlich wie die Verwendung von Amazon Simple Queue Service (Amazon SQS) oder Amazon Kinesis. Lambda fragt intern neue Nachrichten von der Ereignisquelle ab und ruft dann synchron die Ziel-Lambda-Funktion auf. Lambda liest die Nachrichten in Batches und stellt diese Ihrer Funktion als Ereignisnutzlast zur Verfügung. Die maximale Batchgröße ist konfigurierbar (Standardeinstellung: 100 Nachrichten). Weitere Informationen finden Sie unter Batching-Verhalten.

Um den Durchsatz Ihrer selbstverwalteten Apache Kafka-Zuordnungen von Ereignisquellen zu optimieren, konfigurieren Sie den Bereitstellungsmodus. Im Bereitstellungsmodus können Sie die minimale und maximale Anzahl von Event-Pollern definieren, die Zuordnung von Ereignisquellen zugewiesen werden. Dies kann die Fähigkeit Ihrer Zuordnung von Ereignisquellen verbessern, unerwartete Nachrichtenspitzen zu bewältigen. Weitere Informationen finden Sie unter Bereitstellungsmodus.

Warnung

Zuordnung von Lambda-Ereignisquellen verarbeiten jedes Ereignis mindestens einmal und es kann zu einer doppelten Verarbeitung von Datensätzen kommen. Um mögliche Probleme im Zusammenhang mit doppelten Ereignissen zu vermeiden, empfehlen wir Ihnen dringend, Ihren Funktionscode idempotent zu machen. Weitere Informationen finden Sie unter Wie mache ich meine Lambda-Funktion idempotent im AWS-Wissenszentrum.

Für Kafka-basierte Ereignisquellen unterstützt Lambda die Verarbeitung von Steuerungsparametern wie Batch-Fenster und -Größe. Weitere Informationen finden Sie unter Batching-Verhalten.

Ein Beispiel für die Verwendung von selbstverwaltetem Kafka als Ereignisquelle finden Sie unter Verwenden von selbstgehostetem Apache Kafka als Ereignisquelle für AWS Lambda im AWS-Computing-Blog.

Beispielereignis

Lambda sendet den Batch von Nachrichten im Ereignisparameter, wenn es Ihre Lambda-Funktion aufruft. Die Ereignisquelle enthält ein Array von Nachrichten. Jedes Array-Element enthält Details zum Kafka-Thema und Kafka-Partitions-ID, zusammen mit einem Zeitstempel und einer base64-codierten Nachricht.

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