Kann eine Lambda-Funktion automatisch aufgerufen, wenn eine MySQL – (RDS -) Tabelle hat eine Zeile erstellt/aktualisiert?

DynamoDB verfügt über eine Funktion namens „Streams“, die automatisch bei Aufruf eine Lambda-Funktion, wenn eine Zeile in der Tabelle erstellt oder aktualisiert.

Gibt es eine Möglichkeit dies zu realisieren ist mit RDS (MySQL) und Lambda?
Ich würde es lieben, wenn eine Lambda-Funktion aufgerufen werden könnte, wenn eine Zeile angelegt oder aktualisiert werden.

Ich weiß, es ist möglich, um Abfragen der Datenbank für die Tabelle/Zeile ändert, aber ich hätte lieber die Lambda ausgelöst werden, die von einem externen Ereignis. Ich lese auch über die RDS-Ereignisse und mit SNS zu abonnieren, um diese Ereignisse. Aber diese RDS-Ereignisse scheinen wie betriebliche Veranstaltungen (Verfügbarkeit, Konfiguration, Recovery). Es gibt keine „events“ für änderungen der Daten.

InformationsquelleAutor Chris | 2016-04-20



3 Replies
  1. 1

    In der Zeit des Schreibens gibt es keinen einfachen Weg, dies zu tun. RDS nicht verfolgen eigentlichen SQL-Aktionen und MySQL weiß nicht, wie die Schnittstelle mit der Lambda.

    Sagte, dass, wenn Sie werfen Sie einen Blick auf das relevante SO-thread (Das senden einer http-Anfrage in mysql trigger nach dem einfügen in eine Tabelle) es wird erläutert, wie und HTTP-request.

    Nun, wenn Sie eine lambda-Funktion, die hinter API-Gateway, und führen Sie eine HTTP-Anforderung, die Sie vielleicht in der Lage sein zu erreichen, was Sie wollen, aber [ohne zu wissen, die Anwendung], möchte ich Fragen, ob es einfacher wäre, aktualisieren Sie Ihre Anwendung zum auslösen des lambda-Funktionen selbst.

    • Ein problem hierbei ist, dass die http-Bibliothek für MySQL gebaut wird als benutzerdefinierte Funktion (UDF, nicht das gleiche wie eine gespeicherte Funktion) und UDFs sind nicht unterstützt RDS.
  2. 1

    Lambda-Ausdruck aufgerufen werden kann, eine gespeicherte Prozedur in Aurora. Dies ist zwar nicht unbedingt ein RDS-MySql-option, es ist eine option, wo Sie sich bewegen können, um die MySQL-kompatible Aurora-Angebot von AWS und erreichen, was Sie wollen. Die Frage ist, wie schlecht müssen Sie diese Funktion und wie gut funktioniert die Aurora passen in Ihr budget und Architektur. Weitere Informationen finden Sie unter: http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Aurora.Lambda.html

  3. 0

    Du suchst die MySQL-Trigger und gespeicherte Prozeduren. https://aws.amazon.com/premiumsupport/knowledge-center/rds-mysql-functions/

    • Vielen Dank für deine Antwort Mark. Ich bin mir dessen bewusst, DB-triggers und gespeicherten Prozeduren, aber ich bin speziell auf der Suche nach einem Weg, um rufen Sie eine Lambda-Funktion. Trigger und Gespeicherte Prozeduren SQL ausführen, aber ich bin auf der Suche nach call-Anwendung code könnte zum Beispiel (1) Aufruf einer API – (2) führen Sie die business-Logik und der Rückkehr HTML. Ich weiß der code, dass das einfügen in die MySQL konnte danach tun die business-Logik, aber ich bin der Hoffnung zu trennen, die Funktionalität des DB-insert/update-Operationen mit business-Logik in die 2 Lambda-Funktionen.
    • Sie sollte erwähnt haben, was Sie erreichen wollte, die in Ihrer Frage. Die Antwort ist, dass das einzige, was MySQL nicht automatisch auf ein Ereignis wie insert oder update ist eine gespeicherte Prozedur aufrufen. MySQL auf RDS ist keine Ausnahme. Nur die MySQL-engine ist bekannt, die Daten ändern, und nur die standard-MySQL-tools für die Reaktion auf diese Ereignisse verfügbar sind.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.