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

Für neue Projekte empfehlen wir, den neuen Managed Service für Apache Flink Studio anstelle von Kinesis Data Analytics for SQL Applications zu verwenden. Der Managed Service für Apache Flink Studio kombiniert Benutzerfreundlichkeit mit fortschrittlichen Analysefunktionen, sodass Sie in wenigen Minuten anspruchsvolle Anwendungen zur Stream-Verarbeitung erstellen können.

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 AWS Lambda als Ziel verwenden, können Sie Ihre SQL-Ergebnisse einfacher nachverarbeiten, bevor Sie sie an ein endgültiges Ziel 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 an eine Vielzahl von AWS Services und anderen Zielen liefern, 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 verwenden zu können, benötigt die IAM-Rolle für die Lambda-Ausgabe 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 Bytes, Erfolge und Fehler usw. zu überwachen. Informationen zu CloudWatch Metriken, die von Kinesis Data Analytics mit Lambda als Ausgabe ausgegeben werden, finden Sie unter Amazon Kinesis 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 -Aufrufs-ID (zufällige GUID).
applicationArn Der Amazon-Ressourcenname (ARN) der Kinesis Data Analytics-Anwendung.
Datensätze
Feld Beschreibung
recordId Datensatz-ID (zufällige GUID)
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 Datensatz-IDs) an Ihr Lambda gesendet wird, muss mit Ok oder DeliveryFailed bestätigt werden und 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 für die 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 innerhalb der Datenanalyseanwendung als rollierendes Fenster an den In-Application-Ziel-Stream ausgegeben werden, wird die AWS Lambda Zielfunktion pro Rollierende-Fenster-Auslöser 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 an AWS Management Console und öffnen Sie die Konsole Managed Service für Apache Flink unter https://console.aws.amazon.com/kinesisanalytics.

  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 Lambdaliefern 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 Amazon- CloudWatch 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 Datensatz-IDs) in einem Stapel, die zur Lambda-Funktion gesendet wurden, werden an den Kinesis Data Analytics-Service 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 Einblicke in Fehler zu erhalten, können Sie die folgenden CloudWatch Metriken überwachen:

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

  • AWS Lambda - CloudWatch Funktionsmetriken und -protokolle.