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 AWS Lambda Funktion aus einem Aurora My SQL DB-Cluster aufrufen, indem Sie die nativen Funktionen lambda_sync
und lambda_async
aufrufen. Dieser Ansatz kann nützlich sein, wenn Sie Ihre auf Aurora My SQL ausgeführte Datenbank in andere AWS Dienste integrieren möchten. 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
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 verwendenrole_name
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
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
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
Stellen Sie sicher, dass Sie die Rolle dem richtigen Benutzer zuweisen, wie in den mysql.users
Tabelleneinträgen gezeigt. Möglicherweise gibt es mehrere Benutzer mit demselben Namen, aber auf unterschiedlichen Hosts. Je nachdem, welche Anwendung oder welcher Host die lambda_sync
Funktion aufruft, SQL wählt My anhand der host
Spalteneinträge den Benutzer mit der besten Übereinstimmung aus.
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. JSONParsen 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. JSONParsen 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, wenn Sie eine AWS Lambda Funktion über Trigger in Tabellen aufrufen, die viel Schreibverkehr haben. INSERT
,UPDATE
, und DELETE
Trigger werden pro Zeile aktiviert. Eine umfangreiche Arbeitslast in einer Tabelle mit INSERT
UPDATE
, oder DELETE
Triggern führt zu einer großen Anzahl von Aufrufen Ihrer AWS Lambda Funktion.