Konfigurieren von Amazon MSK-Ereignisquellen für Lambda - AWS Lambda

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Konfigurieren von Amazon MSK-Ereignisquellen für Lambda

Um einen Amazon MSK-Cluster als Ereignisquelle für Ihre Lambda-Funktion zu verwenden, erstellen Sie eine Ereignisquellenzuordnung, die die beiden Ressourcen verbindet. Auf dieser Seite wird beschrieben, wie Sie eine Ereignisquellenzuordnung für Amazon MSK erstellen.

Auf dieser Seite wird davon ausgegangen, dass Sie Ihren MSK-Cluster und die Amazon Virtual Private Cloud (VPC), in der er sich befindet, bereits ordnungsgemäß konfiguriert haben. Informationen zum Einrichten Ihres Clusters oder Ihrer VPC finden Sie unterKonfiguration Ihres Amazon MSK-Clusters und Ihres Amazon VPC-Netzwerks für Lambda.

Verwenden eines Amazon MSK-Clusters als Ereignisquelle

Wenn Sie Ihren Apache Kafka-Cluster oder Amazon MSK als Auslöser für Ihre Lambda-Funktion hinzufügen, wird der Cluster als Ereignisquelle verwendet.

Lambda liest Ereignisdaten aus den Kafka-Themen, die Sie wie Topics in einer CreateEventSourceMappingAnfrage angeben, basierend auf der von Ihnen angegebenen Startposition. Nach erfolgreicher Verarbeitung wird Ihr Kafka-Thema Ihrem Kafka-Cluster zugeordnet.

Lambda liest Nachrichten sequentiell für jede Kafka-Themenpartition. Eine einzelne Lambda-Nutzlast kann Nachrichten von mehreren Partitionen enthalten. Wenn mehr Datensätze verfügbar sind, setzt Lambda die Verarbeitung von Datensätzen stapelweise fort, basierend auf dem BatchSize Wert, den Sie in einer CreateEventSourceMappingAnfrage angeben, bis Ihre Funktion das Thema eingeholt hat.

Nachdem Lambda jeden Batch verarbeitet hat, werden die Offsets der Nachrichten in diesem Batch festgeschrieben. Wenn Ihre Funktion einen Fehler für eine der Nachrichten in einem Batch zurückgibt, wiederholt Lambda den gesamten Nachrichtenbatch, bis die Verarbeitung erfolgreich ist oder die Nachrichten ablaufen. Sie können Datensätze, bei denen alle Wiederholungsversuche fehlschlagen, zur späteren Verarbeitung an ein Ausfallziel senden.

Anmerkung

Während Lambda-Funktionen in der Regel ein maximales Timeout-Limit von 15 Minuten haben, unterstützen Ereignisquellenzuordnungen für Amazon MSK, selbstverwaltetes Apache Kafka, Amazon DocumentDB, Amazon MQ für ActiveMQ und RabbitMQ nur Funktionen mit einem maximalen Timeout-Limit von 14 Minuten.

Erstellen einer Ereignisquellenzuordnung für eine Amazon MSK-Ereignisquelle

Um eine Ereignisquellenzuordnung zu erstellen, können Sie die Lambda-Konsole, die AWS Command Line Interface (CLI) oder ein AWS SDK verwenden.

Anmerkung

Wenn Sie die Ereignisquellenzuordnung erstellen, erstellt Lambda eine Hyperplane-ENI im privaten Subnetz, das Ihren MSK-Cluster enthält, sodass Lambda eine sichere Verbindung herstellen kann. Diese Hyperplane-ENI ermöglicht es, die Subnetz- und Sicherheitsgruppenkonfiguration Ihres MSK-Clusters zu verwenden, nicht Ihre Lambda-Funktion.

Mit den folgenden Konsolenschritten wird ein Amazon MSK-Cluster als Auslöser für Ihre Lambda-Funktion hinzugefügt. Unter der Haube entsteht dadurch eine Ressource zur Zuordnung von Ereignisquellen.

So fügen Sie Ihrer Lambda-Funktion (Konsole) einen Amazon-MSK-Auslöser hinzu
  1. Öffnen Sie die Seite Funktion der Lambda-Konsole.

  2. Wählen Sie den Namen der Lambda-Funktion, zu der Sie einen Amazon MSK-Trigger hinzufügen möchten.

  3. Wählen Sie unter Function overview (Funktionsübersicht) die Option Add trigger (Trigger hinzufügen).

  4. Wählen Sie unter Trigger-Konfiguration die Option MSK aus.

  5. Gehen Sie wie folgt vor, um Ihre Kafka-Cluster-Details anzugeben:

    1. Wählen Sie für MSK-Cluster Ihren Cluster aus.

    2. Geben Sie als Themenname den Namen des Kafka-Themas ein, von dem Nachrichten abgerufen werden sollen.

    3. Geben Sie unter Nutzergruppen-ID gegebenenfalls die ID einer Kafka-Verbrauchergruppe ein, der Sie beitreten möchten. Weitere Informationen finden Sie unter Anpassbare Konsumentengruppen-ID.

  6. Nehmen Sie für die Cluster-Authentifizierung die erforderlichen Konfigurationen vor. Weitere Informationen zur Clusterauthentifizierung finden Sie unterKonfiguration von Cluster-Authentifizierungsmethoden.

    • Aktivieren Sie Authentifizierung verwenden, wenn Lambda beim Verbindungsaufbau die Authentifizierung mit Ihrem MSK-Cluster durchführen soll. Eine Authentifizierung wird empfohlen.

    • Wenn Sie Authentifizierung verwenden, wählen Sie unter Authentifizierungsmethode die zu verwendende Authentifizierungsmethode aus.

    • Wenn Sie Authentifizierung verwenden, wählen Sie als Secrets Manager Manager-Schlüssel den Secrets Manager Manager-Schlüssel, der die für den Zugriff auf Ihren Cluster erforderlichen Authentifizierungsdaten enthält.

  7. Nehmen Sie unter Event Poller-Konfiguration die erforderlichen Konfigurationen vor.

    • Wählen Sie Trigger aktivieren, um den Trigger unmittelbar nach der Erstellung zu aktivieren.

    • Wählen Sie aus, ob Sie den Bereitstellungsmodus für Ihre Ereignisquellenzuordnung konfigurieren möchten. Weitere Informationen finden Sie unter Skalierungsmodi für den Event-Poller.

      • Wenn Sie den Bereitstellungsmodus konfigurieren, geben Sie einen Wert für Minimale Anzahl an Ereignisabfragen, einen Wert für Maximale Anzahl an Ereignisabfragen oder beide Werte ein.

    • Wählen Sie unter Startposition aus, wie Lambda mit dem Lesen aus Ihrem Stream beginnen soll. Weitere Informationen finden Sie unter Startpositionen für Abfragen und Streams.

  8. Nehmen Sie unter Batching die erforderlichen Konfigurationen vor. Weitere Informationen zur Batchverarbeitung finden Sie unter. Batching-Verhalten

    1. Geben Sie für Batchgröße die maximale Anzahl von Nachrichten ein, die in einem einzelnen Batch empfangen werden sollen.

    2. Geben Sie für Batchfenster die maximale Anzahl von Sekunden ein, die Lambda mit dem Sammeln von Datensätzen verbringt, bevor die Funktion aufgerufen wird.

  9. Nehmen Sie unter Filterung die erforderlichen Konfigurationen vor. Weitere Informationen zur Filterung erhalten Sie unter Verwendung der Ereignisfilterung mit einer Amazon MSK-Ereignisquelle.

    • Fügen Sie unter Filterkriterien Definitionen für Filterkriterien hinzu, um zu bestimmen, ob ein Ereignis verarbeitet werden soll oder nicht.

  10. Nehmen Sie unter Fehlerbehandlung die erforderlichen Konfigurationen vor. Weitere Hinweise zur Fehlerbehandlung finden Sie unterErfassen von verworfenen Chargen für eine Amazon MSK Ereignisquelle.

    • Geben Sie für Ziel bei Ausfall den ARN Ihres Ziels bei einem Ausfall an.

  11. Geben Sie unter Tags die Tags ein, die dieser Ereignisquellenzuordnung zugeordnet werden sollen.

  12. Wählen Sie hinzufügen aus, um den Auslöser zu erstellen.

Sie können die Ereignisquellenzuordnung auch mithilfe der AWS CLI mit dem create-event-source-mappingBefehl erstellen. Im folgenden Beispiel wird eine Ereignisquellenzuordnung erstellt, um die Lambda-Funktion my-msk-function ausgehend von der LATEST Nachricht dem AWSKafkaTopic Thema zuzuordnen. Dieser Befehl verwendet das SourceAccessConfigurationObjekt auch, um Lambda anzuweisen, bei der Verbindung mit dem Cluster die SASL/SCRAM-Authentifizierung zu verwenden.

aws lambda create-event-source-mapping \ --event-source-arn arn:aws:kafka:us-east-1:111122223333:cluster/my-cluster/fc2f5bdf-fd1b-45ad-85dd-15b4a5a6247e-2 \ --topics AWSKafkaTopic \ --starting-position LATEST \ --function-name my-kafka-function --source-access-configurations '[{"Type": "SASL_SCRAM_512_AUTH","URI": "arn:aws:secretsmanager:us-east-1:111122223333:secret:my-secret"}]'

Wenn der Cluster mTLS-Authentifizierung verwendet, fügen Sie ein SourceAccessConfigurationObjekt hinzu, das einen Secrets Manager Manager-Schlüssel-ARN spezifiziertCLIENT_CERTIFICATE_TLS_AUTH. Dies wird im folgenden Befehl gezeigt:

aws lambda create-event-source-mapping \ --event-source-arn arn:aws:kafka:us-east-1:111122223333:cluster/my-cluster/fc2f5bdf-fd1b-45ad-85dd-15b4a5a6247e-2 \ --topics AWSKafkaTopic \ --starting-position LATEST \ --function-name my-kafka-function --source-access-configurations '[{"Type": "CLIENT_CERTIFICATE_TLS_AUTH","URI": "arn:aws:secretsmanager:us-east-1:111122223333:secret:my-secret"}]'

Wenn der Cluster die IAM-Authentifizierung verwendet, benötigen Sie kein SourceAccessConfigurationObjekt. Dies wird im folgenden Befehl gezeigt:

aws lambda create-event-source-mapping \ --event-source-arn arn:aws:kafka:us-east-1:111122223333:cluster/my-cluster/fc2f5bdf-fd1b-45ad-85dd-15b4a5a6247e-2 \ --topics AWSKafkaTopic \ --starting-position LATEST \ --function-name my-kafka-function

Konfiguration von Cluster-Authentifizierungsmethoden

Lambda benötigt die Erlaubnis, auf Ihren Amazon MSK-Cluster zuzugreifen, Datensätze abzurufen und andere Aufgaben auszuführen. Amazon MSK unterstützt mehrere Methoden zur Authentifizierung bei Ihrem MSK-Cluster.

Nicht authentifizierter Zugriff

Wenn keine Clients über das Internet auf den Cluster zugreifen, können Sie einen nicht authentifizierten Zugriff verwenden.

SASL/SCRAM-Authentifizierung

Lambda unterstützt die Authentifizierung (Simple Authentication and SecurityLayer/Salted Challenge Response Authentication Mechanism (SASL/SCRAM) mit der SHA-512-Hash-Funktion und der Transport Layer Security (TLS) -Verschlüsselung. Damit Lambda eine Verbindung zum Cluster herstellen kann, speichern Sie die Authentifizierungsdaten (Benutzername und Passwort) in einem Secrets Manager-Geheimnis und verweisen Sie bei der Konfiguration Ihrer Ereignisquellenzuordnung auf dieses Geheimnis.

Weitere Informationen zur Verwendung von Secrets Manager finden Sie unter Authentifizierung von Anmeldedaten mit Secrets Manager im Amazon Managed Streaming for Apache Kafka Developer Guide.

Anmerkung

Amazon MSK unterstützt keine SASL/PLAIN-Authentifizierung.

Gegenseitige TLS-Authentifizierung

Mutual TLS (mTLS) ermöglicht eine bidirektionale Authentifizierung zwischen dem Client und dem Server. Der Client sendet ein Zertifikat an den Server, damit der Server den Client verifizieren kann. Der Server sendet außerdem ein Zertifikat an den Client, damit der Client den Server verifizieren kann.

Bei Amazon MSK-Integrationen mit Lambda fungiert Ihr MSK-Cluster als Server und Lambda als Client.

  • Damit Lambda Ihren MSK-Cluster verifizieren kann, konfigurieren Sie ein Client-Zertifikat als Secret in Secrets Manager und verweisen in Ihrer Konfiguration für die Zuordnung von Ereignisquellen auf dieses Zertifikat. Das Client-Zertifikat muss von einer Zertifizierungsstelle (CA) im Trust Store des Servers signiert werden.

  • Der MSK-Cluster sendet auch ein Serverzertifikat an Lambda. Das Serverzertifikat muss von einer Zertifizierungsstelle (CA) im AWS Trust Store signiert werden.

Amazon MSK unterstützt keine selbstsignierten Serverzertifikate. Alle Broker in Amazon MSK verwenden öffentliche Zertifikate, die von Amazon Trust Services signiert wurden CAs, denen Lambda standardmäßig vertraut.

Das Secret CLIENT_CERTIFICATE_TLS_AUTH erfordert ein Zertifikatfeld und ein Feld für einen privaten Schlüssel. Für einen verschlüsselten privaten Schlüssel erfordert das Secret ein Passwort für den privaten Schlüssel. Sowohl das Zertifikat als auch der private Schlüssel müssen im PEM-Format vorliegen.

Anmerkung

Lambda unterstützt die Verschlüsselungsalgorithmen mit privaten Schlüsseln PBES1(aber nicht PBES2).

Das Zertifikatfeld muss eine Liste von Zertifikaten enthalten, beginnend mit dem Client-Zertifikat, gefolgt von etwaigen Zwischenzertifikaten und endend mit dem Root-Zertifikat. Jedes Zertifikat muss in einer neuen Zeile mit der folgenden Struktur beginnen:

-----BEGIN CERTIFICATE----- <certificate contents> -----END CERTIFICATE-----

Secrets Manager unterstützt Secrets von bis zu 65 536 Bytes, was genügend Platz für lange Zertifikatsketten bietet.

Der private Schlüssel muss im Format PKCS #8 mit folgender Struktur vorliegen:

-----BEGIN PRIVATE KEY----- <private key contents> -----END PRIVATE KEY-----

Verwenden Sie für einen verschlüsselten privaten Schlüssel die folgende Struktur:

-----BEGIN ENCRYPTED PRIVATE KEY----- <private key contents> -----END ENCRYPTED PRIVATE KEY-----

Im folgenden Beispiel sehen Sie den Inhalt eines Secrets für mTLS-Authentifizierung mit einem verschlüsselten privaten Schlüssel. Fügen Sie für einen verschlüsselten privaten Schlüssel das Passwort für den privaten Schlüssel in das Secret ein.

{ "privateKeyPassword": "testpassword", "certificate": "-----BEGIN CERTIFICATE----- MIIE5DCCAsygAwIBAgIRAPJdwaFaNRrytHBto0j5BA0wDQYJKoZIhvcNAQELBQAw ... j0Lh4/+1HfgyE2KlmII36dg4IMzNjAFEBZiCRoPimO40s1cRqtFHXoal0QQbIlxk cmUuiAii9R0= -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- MIIFgjCCA2qgAwIBAgIQdjNZd6uFf9hbNC5RdfmHrzANBgkqhkiG9w0BAQsFADBb ... rQoiowbbk5wXCheYSANQIfTZ6weQTgiCHCCbuuMKNVS95FkXm0vqVD/YpXKwA/no c8PH3PSoAaRwMMgOSA2ALJvbRz8mpg== -----END CERTIFICATE-----", "privateKey": "-----BEGIN ENCRYPTED PRIVATE KEY----- MIIFKzBVBgkqhkiG9w0BBQ0wSDAnBgkqhkiG9w0BBQwwGgQUiAFcK5hT/X7Kjmgp ... QrSekqF+kWzmB6nAfSzgO9IaoAaytLvNgGTckWeUkWn/V0Ck+LdGUXzAC4RxZnoQ zp2mwJn2NYB7AZ7+imp0azDZb+8YG2aUCiyqb6PnnA== -----END ENCRYPTED PRIVATE KEY-----" }

Weitere Informationen zu mTLS für Amazon MSK und Anweisungen zum Generieren eines Client-Zertifikats finden Sie unter Gegenseitige TLS-Client-Authentifizierung für Amazon MSK im Amazon Managed Streaming for Apache Kafka Developer Guide.

IAM-Authentifizierung

Sie können AWS Identity and Access Management (IAM) verwenden, um die Identität von Clients zu authentifizieren, die eine Verbindung zum MSK-Cluster herstellen. Bei der IAM-Authentifizierung stützt sich Lambda auf die Berechtigungen in der Ausführungsrolle Ihrer Funktion, um eine Verbindung zum Cluster herzustellen, Datensätze abzurufen und andere erforderliche Aktionen auszuführen. Eine Beispielrichtlinie, die die erforderlichen Berechtigungen enthält, finden Sie unter Autorisierungsrichtlinien für die IAM-Rolle erstellen im Amazon Managed Streaming for Apache Kafka Developer Guide.

Wenn die IAM-Authentifizierung in Ihrem MSK-Cluster aktiv ist und Sie kein Geheimnis angeben, verwendet Lambda standardmäßig automatisch die IAM-Authentifizierung.

Weitere Informationen zur IAM-Authentifizierung in Amazon MSK finden Sie unter IAM-Zugriffskontrolle.

So wählt Lambda einen Bootstrap-Broker

Lambda wählt einen Bootstrap-Broker basierend auf den auf Ihrem Cluster verfügbaren Authentifizierungsmethoden aus und ob Sie ein Geheimnis für die Authentifizierung angeben.. Wenn Sie ein Geheimnis für MTLs oder SASL/SCRAM angeben, wählt Lambda automatisch diese Authentifizierungsmethode. Wenn Sie kein Geheimnis angeben, wählt Lambda die stärkste Authentifizierungsmethode aus, die in Ihrem Cluster aktiv ist. Im Folgenden ist die Reihenfolge der Priorität aufgeführt, in der Lambda einen Broker auswählt, von der stärksten zur schwächsten Authentifizierung:

  • mTLS (Geheimnis für mTLS bereitgestellt)

  • SASL/SCRAM (secret provided for SASL/SCRAM)

  • SASL IAM (kein Geheimnis angegeben und IAM-Authentifizierung aktiv)

  • Nicht authentifiziertes TLS (kein Geheimnis bereitgestellt und IAM-Authentifizierung nicht aktiv)

  • Klartext (kein Geheimnis angegeben und sowohl IAM-Authentifizierung als auch nicht authentifiziertes TLS sind nicht aktiv)

Anmerkung

Wenn Lambda keine Verbindung zum sichersten Brokertyp herstellen kann, versucht Lambda nicht, eine Verbindung zu einem anderen (schwächeren) Brokertyp herzustellen. Wenn Sie möchten, dass Lambda einen schwächeren Brokertyp wählt, deaktivieren Sie alle stärkeren Authentifizierungsmethoden in Ihrem Cluster.

Anpassbare Konsumentengruppen-ID

Wenn Sie Kafka als Ereignisquelle einrichten, können Sie eine Benutzergruppen-ID angeben. Diese Konsumentengruppen-ID ist eine vorhandene Kennung für die Kafka-Konsumentengruppe, der Ihre Lambda-Funktion beitreten soll. Mit diesem Feature können Sie alle laufenden Kafka-Datensatzverarbeitungs-Setups nahtlos von anderen Verbrauchern auf Lambda migrieren.

Kafka verteilt Nachrichten an alle Verbraucher in einer Verbrauchergruppe. Wenn Sie eine Nutzergruppen-ID angeben, die andere aktive Verbraucher hat, empfängt Lambda nur einen Teil der Nachrichten aus dem Kafka-Thema. Wenn Sie möchten, dass Lambda alle Nachrichten im Thema verarbeitet, schalten Sie alle anderen Verbraucher in dieser Verbrauchergruppe aus.

Wenn Sie außerdem eine Nutzergruppen-ID angeben und Kafka eine gültige bestehende Nutzergruppe mit derselben ID findet, ignoriert Lambda die StartingPositionfür Ihre Ereignisquellenzuordnung. Stattdessen beginnt Lambda mit der Verarbeitung von Datensätzen gemäß dem zugesagten Versatz der Konsumentengruppe. Wenn Sie eine Konsumentengruppen-ID angeben und Kafka keine vorhandene Konsumentengruppe finden kann, konfiguriert Lambda Ihre Ereignisquelle mit der angegebenen StartingPosition.

Die Konsumentengruppen-ID, die Sie angeben, muss unter all Ihren Kafka-Ereignisquellen eindeutig sein. Nachdem Sie eine Kafka-Ereignisquellenzuordnung mit der angegebenen Konsumentengruppen-ID erstellt haben, können Sie diesen Wert nicht aktualisieren.

Startpositionen für Abfragen und Streams

Der StartingPosition Parameter teilt Lambda mit, wann mit dem Lesen von Nachrichten aus Ihrem Stream begonnen werden soll. Es stehen drei Optionen zur Auswahl:

  • Aktuell — Lambda beginnt unmittelbar nach dem neuesten Datensatz im Kafka-Thema mit dem Lesen.

  • Horizont kürzen — Lambda beginnt mit dem Lesen ab dem letzten unbeschnittenen Datensatz im Kafka-Thema. Dies ist auch der älteste Datensatz in diesem Thema.

  • Beim Zeitstempel — Lambda beginnt mit dem Lesen an einer durch einen Zeitstempel definierten Position in Unix-Zeitsekunden. Verwenden Sie den StartingPositionTimestamp Parameter, um den Zeitstempel anzugeben.

Die Stream-Abfrage während der Erstellung oder Aktualisierung einer Ereignisquellenzuordnung ist letztendlich konsistent:

  • Bei der Erstellung der Zuordnung von Ereignisquellen kann es mehrere Minuten dauern, bis mit der Abfrage von Ereignissen aus dem Stream begonnen wird.

  • Bei Aktualisierungen der Ereignisquellenzuordnungen kann es bis zu 90 Sekunden dauern, bis das Abrufen von Ereignissen aus dem Stream beendet und erneut gestartet wird.

Dieses Verhalten bedeutet, dass, wenn Sie die Startposition für den Stream angebenLATEST, bei der Zuordnung der Ereignisquellen Ereignisse während einer Erstellung oder Aktualisierung übersehen werden könnten. Um sicherzustellen, dass keine Ereignisse übersehen werden, geben Sie entweder TRIM_HORIZON oder anAT_TIMESTAMP.

Skalierungsmodi für den Event-Poller

Sie können zwischen zwei Modi der Event-Poller-Skalierung für Ihr Kafka-Event-Quellen-Mapping wählen:

On-Demand-Modus (Standard)

Wenn Sie anfänglich eine Amazon MSK-Ereignisquelle erstellen, weist Lambda eine Standardanzahl von Ereignis-Pollern zu, um alle Partitionen im Kafka-Thema zu verarbeiten. Lambda skaliert die Anzahl der Event-Poller basierend auf der Nachrichtenlast automatisch nach oben oder unten.

In Intervallen von einer Minute wertet Lambda den Offset-Lag aller Partitionen des Themas aus. Wenn die Offset-Verzögerung zu hoch ist, empfängt die Partition Nachrichten schneller als Lambda sie verarbeiten kann. Falls erforderlich, fügt Lambda dem Thema Ereignis-Poller hinzu oder entfernt sie. Dieser Prozess der automatischen Skalierung durch Hinzufügen oder Entfernen von Ereignis-Pollern erfolgt innerhalb von drei Minuten nach der Auswertung.

Wenn Ihre Ziel-Lambda-Funktion gedrosselt ist, reduziert Lambda die Anzahl der Ereignis-Poller. Diese Aktion verringert den Workload der Funktion, indem sie die Anzahl der Nachrichten reduziert, die Ereignis-Poller abrufen und an die Funktion senden können.

Modus bereitgestellter Kapazität

Für Workloads, bei denen Sie den Durchsatz Ihrer Zuordnung von Ereignisquellen optimieren müssen, können Sie den Bereitstellungsmodus verwenden. Im Bereitstellungsmodus definieren Sie Mindest- und Höchstgrenzen für die Anzahl der bereitgestellten Ereignis-Poller. Diese bereitgestellten Event-Poller sind auf Ihre Zuordnung von Ereignisquellen ausgerichtet und können unerwartete Nachrichtenspitzen durch reaktionsschnelle Autoskalierung bewältigen. Wir empfehlen die Verwendung des Bereitstellungsmodus für Kafka-Workloads, die strenge Leistungsanforderungen haben.

In Lambda ist ein Event Poller eine Recheneinheit, die bis zu 5% MBps des Durchsatzes verarbeiten kann. Nehmen wir als Referenz an, dass Ihre Ereignisquelle eine durchschnittliche Nutzlast von 1 MB erzeugt und die durchschnittliche Funktionsdauer 1 Sekunde beträgt. Wenn die Nutzlast keiner Transformation (wie Filterung) unterzogen wird, kann ein einzelner Poller 5 MBps Durchsatz- und 5 gleichzeitige Lambda-Aufrufe unterstützen. Die Verwendung des Bereitstellungsmodus verursacht zusätzliche Kosten. Kostenvoranschläge finden Sie unter AWS Lambda -Preise.

Im Bereitstellungsmodus liegt der Bereich der akzeptierten Werte für die Mindestanzahl der Ereignis-Poller (MinimumPollers) zwischen 1 und 200 (einschließlich). Der Bereich der akzeptierten Werte für die maximale Anzahl von Event-Pollern (MaximumPollers) liegt zwischen 1 und einschließlich 2.000. MaximumPollers muss größer als oder gleich MinimumPollers sein. Um eine geordnete Verarbeitung innerhalb der Partitionen zu gewährleisten, begrenzt Lambda das MaximumPollers auf die Anzahl der Partitionen im Thema.

Weitere Einzelheiten zur Auswahl geeigneter Werte für minimale und maximale Ereignis-Poller finden Sie unter Bewährte Verfahren und Überlegungen bei der Verwendung des Bereitstellungsmodus.

Sie können den Bereitstellungsmodus für Ihre Amazon MSK-Zuordnung von Ereignisquellen über die Konsole oder die Lambda-API konfigurieren.

So konfigurieren Sie den Modus bereitgestellter Kapazität für eine Zuordnung von Ereignisquellen von Amazon MSK (Konsole)
  1. Öffnen Sie die Seite Funktionen der Lambda-Konsole.

  2. Wählen Sie die Funktion mit der Amazon MSK-Zuordnung von Ereignisquellen aus, für die Sie den Bereitstellungsmodus konfigurieren möchten.

  3. Wählen Sie Konfiguration und anschließend Auslöser aus.

  4. Wählen Sie die Amazon MSK-Zuordnung von Ereignisquellen, für die Sie den Bereitstellungsmodus konfigurieren möchten und wählen Sie dann Bearbeiten.

  5. Wählen Sie unter Konfiguration der Zuordnung von Ereignisquellen die Option Bereitstellungsmodus konfigurieren aus.

    • Geben Sie für Minimum Event Pollers einen Wert zwischen 1 und 200 ein. Wenn Sie keinen Wert angeben, wählt Lambda einen Standardwert von 1.

    • Geben Sie für Maximum Event Pollers einen Wert zwischen 1 und 2000 ein. Dieser Wert muss größer oder gleich Ihrem Wert für Minimum Event Pollers sein. Wenn Sie keinen Wert angeben, wählt Lambda einen Standardwert von 200.

  6. Wählen Sie Speichern.

Sie können den Bereitstellungsmodus programmgesteuert mithilfe des Objekts in Ihrem konfigurieren. ProvisionedPollerConfig EventSourceMappingConfiguration Der folgende UpdateEventSourceMappingCLI-Befehl konfiguriert beispielsweise einen MinimumPollers Wert von 5 und einen MaximumPollers Wert von 100.

aws lambda update-event-source-mapping \ --uuid a1b2c3d4-5678-90ab-cdef-EXAMPLE11111 \ --provisioned-poller-config '{"MinimumPollers": 5, "MaximumPollers": 100}'

Nachdem Sie den Bereitstellungsmodus konfiguriert haben, können Sie die Verwendung von Event-Pollern für Ihren Workload beobachten, indem Sie die ProvisionedPollers-Metrik überwachen. Weitere Informationen finden Sie unter Metriken zur Zuordnung von Ereignisquellen.

Um den Bereitstellungsmodus zu deaktivieren und zum Standardmodus (auf Abruf) zurückzukehren, können Sie den folgenden UpdateEventSourceMappingCLI-Befehl verwenden:

aws lambda update-event-source-mapping \ --uuid a1b2c3d4-5678-90ab-cdef-EXAMPLE11111 \ --provisioned-poller-config '{}'

Bewährte Verfahren und Überlegungen bei der Verwendung des Bereitstellungsmodus

Die optimale Konfiguration der minimalen und maximalen Ereignispoller für Ihre Zuordnung von Ereignisquellen hängt von den Leistungsanforderungen Ihrer Anwendung ab. Wir empfehlen Ihnen, mit den standardmäßigen Minimum Event Pollers zu beginnen, um das Leistungsprofil zu erstellen. Passen Sie Ihre Konfiguration auf der Grundlage der beobachteten Nachrichtenverarbeitungsmuster und Ihres gewünschten Leistungsprofils an.

Erhöhen Sie bei Workloads mit starkem Datenverkehr und strengen Leistungsanforderungen die Mindestanzahl der Event-Poller, um plötzliche Nachrichtenfluten zu bewältigen. Um zu ermitteln, wie viele Event-Poller mindestens erforderlich sind, sollten Sie die Nachrichten pro Sekunde Ihres Workloads und die durchschnittliche Nutzlastgröße berücksichtigen und die Durchsatzkapazität eines einzelnen Event-Pollers (bis zu 5 MBps) als Referenz verwenden.

Um eine geordnete Verarbeitung innerhalb einer Partition aufrechtzuerhalten, begrenzt Lambda die maximale Anzahl der Event-Poller auf die Anzahl der Partitionen im Thema. Darüber hinaus hängt die maximale Anzahl von Event-Pollern, auf die Ihr Zuordnung von Ereignisquellen skaliert werden kann, von den Gleichzeitigkeitseinstellungen der Funktion ab.

Wenn Sie den Bereitstellungsmodus aktivieren, aktualisieren Sie Ihre Netzwerkeinstellungen, um AWS PrivateLink VPC-Endpunkte und zugehörige Berechtigungen zu entfernen.

Erstellen von kontenübergreifenden Zuordnungen von Ereignisquellen

Sie können private Multi-VPC-Konnektivität verwenden, um eine Lambda-Funktion mit einem bereitgestellten MSK-Cluster in einem anderen AWS-Konto zu verbinden. Multi-VPC-Konnektivität verwendet AWS PrivateLink, wodurch der gesamte Datenverkehr im AWS Netzwerk bleibt.

Anmerkung

Sie können keine kontenübergreifenden Zuordnungen von Ereignisquellen für Serverless-MSK-Cluster erstellen.

Um eine kontenübergreifende Zuordnung von Ereignisquellen zu erstellen, müssen Sie zunächst die Multi-VPC-Konnektivität für den MSK-Cluster konfigurieren. Verwenden Sie beim Erstellen der Zuordnung von Ereignisquellen den ARN der verwalteten VPC-Verbindung anstelle des Cluster-ARNs, wie in den folgenden Beispielen gezeigt. Der CreateEventSourceMappingVorgang unterscheidet sich auch je nachdem, welchen Authentifizierungstyp der MSK-Cluster verwendet.

Beispiel – Erstellen Sie eine kontoübergreifende Zuordnung von Ereignisquellen für einen Cluster, der die IAM-Authentifizierung verwendet

Wenn der Cluster die rollenbasierte IAM-Authentifizierung verwendet, benötigen Sie kein Objekt. SourceAccessConfiguration Beispiel:

aws lambda create-event-source-mapping \ --event-source-arn arn:aws:kafka:us-east-1:111122223333:vpc-connection/444455556666/my-cluster-name/51jn98b4-0a61-46cc-b0a6-61g9a3d797d5-7 \ --topics AWSKafkaTopic \ --starting-position LATEST \ --function-name my-kafka-function
Beispiel – Erstellen Sie eine kontoübergreifende Zuordnung von Ereignisquellen für einen Cluster, der die SASL/SCRAM-Authentifizierung verwendet

Wenn der Cluster die SASL/SCRAM-Authentifizierung verwendet, müssen Sie ein SourceAccessConfigurationObjekt angeben, das einen geheimen Secrets Manager Manager-ARN spezifiziert, SASL_SCRAM_512_AUTH und einen geheimen ARN hinzufügen.

Es gibt zwei Möglichkeiten, Secrets für kontenübergreifende Zuordnungen von Amazon-MSK-Ereignisquellen mit SASL/SCRAM-Authentifizierung zu verwenden:

aws lambda create-event-source-mapping \ --event-source-arn arn:aws:kafka:us-east-1:111122223333:vpc-connection/444455556666/my-cluster-name/51jn98b4-0a61-46cc-b0a6-61g9a3d797d5-7 \ --topics AWSKafkaTopic \ --starting-position LATEST \ --function-name my-kafka-function \ --source-access-configurations '[{"Type": "SASL_SCRAM_512_AUTH","URI": "arn:aws:secretsmanager:us-east-1:444455556666:secret:my-secret"}]'
Beispiel – Erstellen Sie eine kontoübergreifende Zuordnung von Ereignisquellen für einen Cluster, der die mTLS-Authentifizierung verwendet

Wenn der Cluster mTLS-Authentifizierung verwendet, müssen Sie ein SourceAccessConfigurationObjekt angeben, das einen geheimen ARN von Secrets Manager spezifiziertCLIENT_CERTIFICATE_TLS_AUTH. Das Secret kann im Clusterkonto oder im Lambda-Funktionskonto gespeichert werden.

aws lambda create-event-source-mapping \ --event-source-arn arn:aws:kafka:us-east-1:111122223333:vpc-connection/444455556666/my-cluster-name/51jn98b4-0a61-46cc-b0a6-61g9a3d797d5-7 \ --topics AWSKafkaTopic \ --starting-position LATEST \ --function-name my-kafka-function \ --source-access-configurations '[{"Type": "CLIENT_CERTIFICATE_TLS_AUTH","URI": "arn:aws:secretsmanager:us-east-1:444455556666:secret:my-secret"}]'

Alle Konfigurationsparameter für Amazon MSK-Ereignisquellen

Alle Lambda-Ereignisquelltypen verwenden dieselben CreateEventSourceMappingUpdateEventSourceMappingAPI-Operationen. Allerdings gelten nur einige der Parameter für Amazon MSK, wie in der folgenden Tabelle dargestellt.

Parameter Erforderlich Standard Hinweise

AmazonManagedKafkaEventSourceConfig

N

Enthält das ConsumerGroupId Feld, das standardmäßig einen eindeutigen Wert hat.

Kann nur auf „Erstellen“ festgelegt werden

BatchSize

N

100

Höchstwert: 10 000.

DestinationConfig

N

N/A

Erfassen von verworfenen Chargen für eine Amazon MSK Ereignisquelle

Aktiviert

N

True

EventSourceArn

Y

N/A

Kann nur auf „Erstellen“ festgelegt werden

FilterCriteria

N

N/A

Steuern Sie, welche Ereignisse Lambda an Ihre Funktion sendet

FunctionName

Y

N/A

KMSKeyArn

N

N/A

Verschlüsselung der Filterkriterien

MaximumBatchingWindowInSeconds

N

500 ms

Batching-Verhalten

ProvisionedPollersConfig

N

MinimumPollers: Standardwert von 1, wenn nicht angegeben

MaximumPollers: Standardwert von 200, wenn nicht angegeben

Modus bereitgestellter Kapazität

SourceAccessConfigurations

N

Keine Anmeldedaten

Anmeldeinformationen zur SASL/SCRAM- oder CLIENT_CERTIFICATE_TLS_AUTH (MutualTLS)-Authentifizierung für Ihre Ereignisquelle

StartingPosition

Y

N/A

AT_TIMESTAMP, TRIM_HORIZON, oder LATEST

Kann nur auf „Erstellen“ festgelegt werden

StartingPositionTimestamp

N

N/A

Erforderlich, wenn auf StartingPosition AT_TIMESTAMP gesetzt ist

Tags

N

N/A

Verwendung von Tags für Zuordnungen von Ereignisquellen

Themen

Y

N/A

Kafka-Thema-Name

Kann nur auf „Erstellen“ festgelegt werden