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.
Inhalt
- Arbeiten mit nativen Funktionen zum Aufrufen einer Lambda-Funktion
- Gewährung der Rolle in Aurora My SQL Version 3
- Gewährung des Privilegs in Aurora My SQL Version 2
- Syntax für die lambda_sync-Funktion
- Parameter für die lambda_sync-Funktion
- Beispiel für die lambda_sync-Funktion
- Syntax für die lambda_async-Funktion
- Parameter für die lambda_async-Funktion
- Beispiel für die lambda_async-Funktion
- Aufrufen einer Lambda-Funktion innerhalb eines Auslösers
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
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 INSERT
UPDATE
, oder DELETE
Triggern führt zu einer großen Anzahl von Aufrufen an Ihren AWS Lambda Funktion.