Verwenden einer Lambda-Funktion als Ausgabe - Entwicklerhandbuch für Amazon Kinesis Data Analytics for SQL Applications

Nach reiflicher Überlegung haben wir beschlossen, Amazon Kinesis Data Analytics für SQL Anwendungen in zwei Schritten einzustellen:

1. Ab dem 15. Oktober 2025 können Sie keine neuen Kinesis Data Analytics für SQL Anwendungen erstellen.

2. Wir werden Ihre Anwendungen ab dem 27. Januar 2026 löschen. Sie können Ihre Amazon Kinesis Data Analytics for SQL Applications weder starten noch betreiben. SQLAb diesem Zeitpunkt ist kein Support mehr für Amazon Kinesis Data Analytics verfügbar. Weitere Informationen finden Sie unter Einstellung von Amazon Kinesis Data Analytics for SQL Applications.

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.

Verwenden einer Lambda-Funktion als Ausgabe

Wenn Sie es AWS Lambda als Ziel verwenden, können Sie Ihre SQL Ergebnisse einfacher nachbearbeiten, bevor Sie sie an ein Endziel senden. Zu gängigen Aufgaben der Nachverarbeitung gehören:

  • Aggregieren von mehreren Zeilen in einem einzigen Datensatz

  • Kombinieren aktueller Ergebnisse mit vorherigen Ergebnissen für die Einordnung spät eintreffender Daten

  • Bereitstellung auf verschiedene Ziele abhängig von der Art von Informationen

  • Aufzeichnung von Formatumsetzungen (z. B. die Umsetzung in Protobuf)

  • Bearbeitung oder Transformation von Zeichenfolgen

  • Datenanreicherung nach der analytischen Verarbeitung

  • Benutzerdefinierte Verarbeitung für koordinatenbasierte Anwendungsfälle

  • Datenverschlüsselung

Lambda-Funktionen können analytische Informationen für eine Vielzahl von AWS Diensten und anderen Zielen bereitstellen, darunter die folgenden:

Weitere Informationen zum Erstellen von Lambda-Anwendungen finden Sie unter Erste Schritte mit AWS Lambda.

Berechtigungen für Lambda als Ausgabe

Um Lambda als Ausgabe zu verwenden, erfordert die IAM Lambda-Ausgaberolle der Anwendung die folgende Berechtigungsrichtlinie:

{ "Sid": "UseLambdaFunction", "Effect": "Allow", "Action": [ "lambda:InvokeFunction", "lambda:GetFunctionConfiguration" ], "Resource": "FunctionARN" }

Lambda als Ausgabemetriken

Sie verwenden Amazon CloudWatch , um die Anzahl der gesendeten Byte, Erfolge und Misserfolge usw. zu überwachen. Informationen zu CloudWatch Metriken, die von Kinesis Data Analytics mithilfe von Lambda als Ausgabe ausgegeben werden, finden Sie unter Amazon Kinesis Analytics Analytics-Metriken.

Ereignis-Eingabedatenmodell und Datensatz-Antwortmodell von Lambda als Ausgabe

Um Kinesis Data Analytics-Ausgabedatensätze senden zu können, muss Ihre Lambda-Funktion mit den erforderlichen Ereignis-Eingabedaten- und Datensatz-Antwortmodellen konform sein.

Ereignis-Eingabedatenmodell

Kinesis Data Analytics sendet die Ausgabedatensätze mit dem folgenden Anforderungsmodell fortlaufend von der Anwendung als Ausgabefunktion an die Lambda-Funktion. Innerhalb Ihrer Funktion durchlaufen Sie die Liste und wenden Ihre Geschäftslogik an, um Ihre Ausgabeanforderungen (z. B. Datentransformation vor dem senden an ein endgültiges Ziel) zu erfüllen.

Feld Beschreibung
invocationId Die Lambda-Aufruf-ID (zufälligGUID).
applicationArn Die Kinesis Data Analytics Analytics-Anwendung Amazon Resource Name (ARN).
Datensätze
Feld Beschreibung
recordId Datensatz-ID (zufälligGUID)
lambdaDeliveryRecordMetadata
Feld Beschreibung
retryHint Anzahl der wiederholten Nachrichtenzustellungen
data Base64-kodierte Augabedatensatz-Nutzlast
Anmerkung

retryHint ist ein Wert, der sich bei jedem Zustellungsfehler erhöht. Dieser Wert wird nicht dauerhaft gespeichert und wird zurückgesetzt werden, wenn die Anwendung unterbrochen wird.

Datensatz-Antwortmodell

Jeder Datensatz, der als Ausgabefunktion (mit DatensatzIDs) an Ihr Lambda gesendet wirdDeliveryFailed, muss entweder mit Ok oder bestätigt werden und er muss die folgenden Parameter enthalten. Andernfalls wird er von Kinesis Data Analytics als unzustellbar behandelt.

Datensätze
Feld Beschreibung
recordId Die Datensatz-ID wird während des Aufrufs von Kinesis Data Analytics an Lambda übertragen. Jede fehlende Übereinstimmung zwischen der ID des ursprünglichen Datensatzes und der ID des bestätigten Datensatzes wird als Zustellungsfehler behandelt.
result Der Status der Datensatzzustellung. Folgende Werte sind möglich:
  • Ok: Der Datensatz wurde erfolgreich umgewandelt und an das endgültige Ziel gesendet. Kinesis Data Analytics nimmt den Datensatz zur SQL Verarbeitung auf.

  • DeliveryFailed: Der Datensatz wurde dem endgültigen Ziel durch Lambda als Ausgabefunktion nicht erfolgreich zugestellt. Kinesis Data Analytics versucht fortgesetzt, die Datensätze mit Zustellungsfehlern erneut an Lambda als Ausgabefunktion zu senden.

Häufigkeit der Lambda-Ausgabeaufrufe

Eine Kinesis Data Analytics-Anwendung puffert die Ausgabedatensätze und ruft häufig die AWS Lambda -Zielfunktion auf.

  • Wenn Datensätze als Taumelfenster an den anwendungsinternen Zielstream innerhalb der Datenanalyseanwendung gesendet werden, wird die AWS Lambda Zielfunktion pro Taumelfenster-Trigger aufgerufen. Wenn z. B. ein rollierendes Fenster von 60 Sekunden verwendet wird, um die Datensätze an den In-Application-Stream des Ziels auszugeben, wird die Lambda-Funktion einmal alle 60 Sekunden aufgerufen.

  • Wenn Datensätze innerhalb der Anwendung als fortlaufende Abfrage oder gleitendes Fenster zum In-Application-Stream des Ziels gesendet werden, wird die Lambda-Zielfunktion ca. einmal pro Sekunde aufgerufen.

Anmerkung

Pro Aufruf der Lambda-Funktion gelten Nutzlastgrenzwerte. Beim Überschreiten dieser Limits erhalten Sie Ausgabedatensätze, die über mehrere Lambda-Funktionsaufrufe aufgeteilt und gesendet werden.

Hinzufügen einer Lambda-Funktion zur Verwendung als Ausgabe

Das folgende Verfahren veranschaulicht, wie Sie die Lambda-Funktion als Ausgabe für eine Kinesis Data Analytics-Anwendung hinzufügen.

  1. Melden Sie sich bei der Managed Service for Apache Flink-Konsole unter /kinesisanalytics an AWS Management Console und öffnen Sie sie. https://console.aws.amazon.com

  2. Wählen Sie die Anwendung in der Liste aus und klicken Sie dann auf Application details.

  3. Klicken Sie im Bereich Destination auf Connect new destination.

  4. Wählen Sie für das Element Destination (Ziel) die Option AWS Lambda function (-Funktion).

  5. Wählen Sie im Bereich Datensätze an AWS Lambda liefern entweder eine vorhandene Lambda-Funktion aus oder klicken Sie auf Neu erstellen.

  6. Wenn Sie eine neue Lambda-Funktion erstellen, verfahren Sie wie folgt:

    1. Wählen Sie eine der bereitgestellten Vorlagen. Weitere Informationen finden Sie unter Erstellen von Lambda-Funktionen für Anwendungsziele.

    2. Die Seite Create Function (Funktion erstellen) wird in einer neuen Webbrowser-Registerkarte geöffnet. Geben Sie im Feld Name der Funktion einen sinnvollen Namen (z. B. myLambdaFunction).

    3. Aktualisieren Sie die Vorlage mit Nachverarbeitungsfunktionalität für Ihre Anwendung. Weitere Informationen zum Erstellen einer Lambda-Funktion finden Sie unter Erste Schritte im AWS Lambda -Entwicklerhandbuch.

    4. Wählen Sie in der Kinesis Data Analytics-Konsole aus der Liste Lambda-Funktionen die gerade erstellte Lambda-Funktion aus. Wählen Sie $ LATEST für die Lambda-Funktionsversion.

  7. Wählen Sie im Bereich In-application stream die Option Choose an existing in-application stream aus. Wählen Sie für In-application stream name den Ausgabe-Stream Ihrer Anwendung aus. Die Ergebnisse aus dem ausgewählten Ausgabe-Stream werden zur Lambda-Ausgabefunktion gesendet.

  8. Belassen Sie im Formular die übrigen Standardwerte und wählen Sie Save and continue.

Ihre Anwendung sendet nun Datensätze aus dem In-Application-Stream zu Ihrer Lambda-Funktion. Sie können die Ergebnisse der Standardvorlage in der CloudWatch Amazon-Konsole sehen. Überwachen Sie die Metrik AWS/KinesisAnalytics/LambdaDelivery.OkRecords, um die Anzahl der Datensätze zu sehen, die an die Lambda-Funktion übermittelt werden.

Häufige Lambda-Ausgabefehler

Nachfolgend werden die häufigsten Gründe aufgeführt, aus denen die Übermittlung an die Lambda-Funktion fehlschlagen kann.

  • Nicht alle Datensätze (mit DatensatzIDs) in einem Batch, die an die Lambda-Funktion gesendet werden, werden an den Kinesis Data Analytics Analytics-Dienst zurückgegeben.

  • In der Antwort fehlt entweder die Datensatz-ID oder das Statusfeld.

  • Die Zeitüberschreitungen der Lambda-Funktion sind für den Abschluss der Geschäftslogik innerhalb der Lambda-Funktion nicht ausreichend.

  • Die Geschäftslogik innerhalb der Lambda-Funktion erfasst nicht alle Fehler. Dies führt aufgrund unbehandelter Ausnahmen zu einer Zeitüberschreitung und einer zu hohen Auslastung. Diese werden oft als Poison-Pill-Nachrichten bezeichnet.

Bei Datenübermittlungsfehlern führt Kinesis Data Analytics Lambda-Aufrufe für dieselbe Gruppe von Datensätzen erneut durch, bis der Aufruf erfolgreich ist. Um Einblick in Fehler zu erhalten, können Sie die folgenden CloudWatch Metriken überwachen:

  • Kinesis Data Analytics Analytics-Anwendung Lambda as CloudWatch Output-Metriken: Gibt unter anderem die Anzahl der Erfolge und Misserfolge an. Weitere Informationen finden Sie unter Amazon-Kinesis-Analytics-Metriken.

  • AWS Lambda CloudWatch Funktionsmetriken und Protokolle.