Aufrufen einer Lambda-Funktion mit einer nativen Aurora SQL My-Funktion - Amazon Aurora

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.

Aufrufen einer Lambda-Funktion mit einer nativen Aurora SQL My-Funktion

Anmerkung

Sie können die nativen Funktionen aufrufen lambda_sync und lambda_async wenn Sie Aurora My SQL Version 2 oder Aurora My SQL Version 3.01 und höher verwenden. Weitere Informationen zu Aurora SQL My-Versionen finden Sie unterDatenbank-Engine-Updates für Amazon Aurora My SQL.

Sie können eine aufrufen AWS Lambda Funktion von einem Aurora My SQL DB-Cluster aus, indem die nativen Funktionen lambda_sync und aufgerufen lambda_async werden. Dieser Ansatz kann nützlich sein, wenn Sie Ihre Datenbank, die auf Aurora My läuft, SQL mit anderen integrieren möchten. AWS Dienste. Beispielsweise möchten Sie möglicherweise eine Benachrichtigung mit Amazon Simple Notification Service (AmazonSNS) senden, wenn eine Zeile in eine bestimmte Tabelle in Ihrer Datenbank eingefügt wird.

Arbeiten mit nativen Funktionen zum Aufrufen einer Lambda-Funktion

Die Funktionen lambda_sync und lambda_async sind eingebaute, native Funktionen, die eine Lambda-Funktion synchron oder asynchron aufrufen. Wenn Sie das Ergebnis der Ausführung der aufgerufenen Lambda-Funktion kennen müssen, bevor Sie zu einer anderen Aktion übergehen, verwenden Sie die synchrone Funktion lambda_sync. Wenn Sie das Ergebnis der Ausführung der aufgerufenen Lambda-Funktion nicht kennen müssen, bevor Sie zu einer anderen Aktion übergehen, verwenden Sie die asynchrone Funktion lambda_async.

Gewährung der Rolle in Aurora My SQL Version 3

In Aurora My SQL Version 3 muss dem Benutzer, der eine native Funktion aufruft, die AWS_LAMBDA_ACCESS Rolle zugewiesen werden. Um einem Benutzer diese Rolle zuzuweisen, stellen Sie als Administrator eine Verbindung zur DB-Instance her und führen Sie die folgende Anweisung aus.

GRANT AWS_LAMBDA_ACCESS TO user@domain-or-ip-address

Sie können diese Rolle widerrufen, indem Sie die folgende Anweisung ausführen.

REVOKE AWS_LAMBDA_ACCESS FROM user@domain-or-ip-address
Tipp

Wenn Sie die Rollentechnik in Aurora My SQL Version 3 verwenden, können Sie die Rolle auch mithilfe der SET ROLE ALL Anweisung SET ROLE role_name or aktivieren. Wenn Sie mit dem My SQL 8.0-Rollensystem nicht vertraut sind, finden Sie weitere Informationen unterRollenbasiertes Berechtigungsmodell. Weitere Informationen finden Sie unter Rollen verwenden im My SQL Reference Manual.

Dies gilt nur für die aktuelle aktive Sitzung. Wenn Sie die Verbindung wieder herstellen, müssen Sie die SET ROLE Anweisung erneut ausführen, um Rechte zu gewähren. Weitere Informationen finden Sie in der SETROLEErklärung im My SQL Reference Manual.

Sie können den DB-Cluster-Parameter activate_all_roles_on_login zum automatischen Aktivieren aller Rollen verwenden, wenn ein Benutzer eine Verbindung mit einer DB-Instance herstellt. Wenn dieser Parameter gesetzt ist, müssen Sie die SET ROLE Anweisung im Allgemeinen nicht explizit aufrufen, um eine Rolle zu aktivieren. Weitere Informationen finden Sie unter activate_all_roles_on_login im My Reference Manual. SQL

Sie müssen jedoch zu Beginn einer gespeicherten Prozedur SET ROLE ALL explizit aufrufen, um die Rolle zu aktivieren, wenn die gespeicherte Prozedur von einem anderen Benutzer aufgerufen wird.

Wenn Sie beim Versuch, eine Lambda-Funktion aufzurufen, eine Fehlermeldung wie die folgende erhalten, führen Sie eine SET ROLE-Anweisung aus.

SQL Error [1227] [42000]: Access denied; you need (at least one of) the Invoke Lambda privilege(s) for this operation

Gewährung des Privilegs in Aurora My SQL Version 2

In Aurora My SQL Version 2 muss dem Benutzer, der eine native Funktion aufruft, diese INVOKE LAMBDA Berechtigung erteilt werden. Um einem Benutzer diese Berechtigung zu erteilen, stellen Sie als Administrator eine Verbindung zur DB-Instance her und führen Sie die folgende Anweisung aus.

GRANT INVOKE LAMBDA ON *.* TO user@domain-or-ip-address

Sie können das Recht für einen anderen Benutzer mithilfe der folgenden Anweisung erteilen.

REVOKE INVOKE LAMBDA ON *.* FROM user@domain-or-ip-address

Syntax für die lambda_sync-Funktion

Sie rufen die Funktion lambda_sync synchron zum Aufruftyp RequestResponse auf. Die Funktion gibt das Ergebnis des Lambda-Aufrufs in einer JSON Nutzlast zurück. Die Funktion weist die folgende Syntax auf.

lambda_sync ( lambda_function_ARN, JSON_payload )

Parameter für die lambda_sync-Funktion

Die Funktion lambda_sync hat die folgenden Parameter.

lambda_function_ ARN

Der Amazon-Ressourcenname (ARN) der aufzurufenden Lambda-Funktion.

JSON_payload

Die Nutzlast für die aufgerufene Lambda-Funktion im Format. JSON

Anmerkung

Aurora My SQL Version 3 unterstützt die JSON Parsing-Funktionen von My SQL 8.0. Aurora My SQL Version 2 enthält diese Funktionen jedoch nicht. JSONParsing ist nicht erforderlich, wenn eine Lambda-Funktion einen atomaren Wert zurückgibt, z. B. eine Zahl oder eine Zeichenfolge.

Beispiel für die lambda_sync-Funktion

Die folgende Abfrage, die auf basiert, lambda_sync ruft die Lambda-Funktion BasicTestLambda synchron unter Verwendung der Funktion auf. ARN Die Nutzlast für die Funktion ist {"operation": "ping"}.

SELECT lambda_sync( 'arn:aws:lambda:us-east-1:123456789012:function:BasicTestLambda', '{"operation": "ping"}');

Syntax für die lambda_async-Funktion

Sie rufen die Funktion lambda_async asynchron zum Aufruftyp Event auf. Die Funktion gibt das Ergebnis des Lambda-Aufrufs in einer JSON Nutzlast zurück. Die Funktion weist die folgende Syntax auf.

lambda_async ( lambda_function_ARN, JSON_payload )

Parameter für die lambda_async-Funktion

Die Funktion lambda_async hat die folgenden Parameter.

lambda_function_ ARN

Der Amazon-Ressourcenname (ARN) der aufzurufenden Lambda-Funktion.

JSON_payload

Die Nutzlast für die aufgerufene Lambda-Funktion im Format. JSON

Anmerkung

Aurora My SQL Version 3 unterstützt die JSON Parsing-Funktionen von My SQL 8.0. Aurora My SQL Version 2 enthält diese Funktionen jedoch nicht. JSONParsing ist nicht erforderlich, wenn eine Lambda-Funktion einen atomaren Wert zurückgibt, z. B. eine Zahl oder eine Zeichenfolge.

Beispiel für die lambda_async-Funktion

Die folgende Abfrage, die auf basiert, lambda_async ruft die Lambda-Funktion BasicTestLambda asynchron unter Verwendung der Funktion auf. ARN Die Nutzlast für die Funktion ist {"operation": "ping"}.

SELECT lambda_async( 'arn:aws:lambda:us-east-1:123456789012:function:BasicTestLambda', '{"operation": "ping"}');

Aufrufen einer Lambda-Funktion innerhalb eines Auslösers

Sie können Auslöser verwenden, um Lambda für datenmodifizierende Anweisungen aufzurufen. Das folgende Beispiel verwendet die native lambda_async-Funktion und speichert das Ergebnis in einer Variablen.

mysql>SET @result=0; mysql>DELIMITER // mysql>CREATE TRIGGER myFirstTrigger AFTER INSERT ON Test_trigger FOR EACH ROW BEGIN SELECT lambda_async( 'arn:aws:lambda:us-east-1:123456789012:function:BasicTestLambda', '{"operation": "ping"}') INTO @result; END; // mysql>DELIMITER ;
Anmerkung

Trigger werden nicht einmal pro SQL Anweisung ausgeführt, sondern einmal pro geänderter Zeile, Zeile für Zeile. Wenn ein Trigger ausgeführt wird, ist der Prozess synchron. Die datenmodifizierende Anweisung wird nur zurückgegeben, wenn der Trigger abgeschlossen ist.

Seien Sie vorsichtig beim Aufrufen von AWS Lambda Funktion von Triggern in Tabellen mit hohem Schreibverkehr. INSERT,UPDATE, und DELETE Trigger werden pro Zeile aktiviert. Eine hohe Schreiblast in einer Tabelle mit INSERTUPDATE, oder DELETE Triggern führt zu einer großen Anzahl von Aufrufen an Ihren AWS Lambda Funktion.