Schritte zum Aufrufen von AWS Lambda als SQL-Funktionen
Zeigt die Schritte zum Aufrufen von AWS-Remotefunktionen als SQL-Funktionen in der Datenbank an.
Um AWS Lambda als SQL-Funktionen aufzurufen, erstellen wir einen Katalog mit SQL-Wrapper-Funktionen, die ihre jeweilige Cloud-Funktion über ihre API-Endpunkte referenzieren und aufrufen. Bevor Sie diesen Katalog erstellen, wird hier davon ausgegangen, dass Sie die erforderlichen Cloud-Funktionen erstellt haben, die von diesem Katalog referenziert werden sollen.
Um auf AWS-Lambda-Funktionen zuzugreifen, müssen Sie die erforderlichen Policys konfigurieren. Weitere Informationen finden Sie unter IAM-Policy für den Zugriff auf AWS Lambda-Ressourcen erstellen und Ressourcenbasierte Policys für Lambda verwenden.
- Erstellen Sie Zugangsdaten mit der Prozedur
DBMS_CLOUD.CREATE_CREDENTIAL
. Das Zugangsdatenobjekt, das Sie erstellen, muss den Typ "Secret Key" aufweisen.SET DEFINE OFF BEGIN
DBMS_CLOUD.CREATE_CREDENTIAL
( credential_name => 'AWS_CRED', username => 'access_key_ID', password => 'secret_access_key' ); END; /Dadurch werden die Zugangsdaten
AWS_CRED
erstellt.Weitere Informationen finden Sie unter Prozedur CREATE_CREDENTIAL.
- Erstellen Sie einen Katalog.
Ein Katalog ist eine Sammlung von Wrapper-Funktionen, die ihre jeweiligen Cloud-Funktionen über ihre API-Endpunkte referenzieren und aufrufen.
Beispiel zum Erstellen eines Katalogs für AWS-Funktionen.
BEGIN
DBMS_CLOUD_FUNCTION.CREATE_CATALOG
( credential_name => 'AWS_CRED', catalog_name => 'AWS_DEMO_CATALOG', service_provider => 'AWS', cloud_params => '{"region_id":"ap-northeast-1"}' ); END; / PL/SQL procedure successfully completed.Dadurch wird der Katalog
AWS_DEMO_CATALOG
erstellt.Weitere Informationen finden Sie unter Prozedur CREATE_CATALOG. Sie können die Views DBA_CLOUD_FUNCTION_CATALOG View und USER_CLOUD_FUNCTION_CATALOG View abfragen, um die Liste aller Kataloge in der Datenbank abzurufen.
- Sie können die Funktionen in einem Katalog auflisten.
Im Folgenden finden Sie das Beispiel für die Auflistung der AWS Lambda-Funktionen:
VAR function_list CLOB; BEGIN
DBMS_CLOUD_FUNCTION.LIST_FUNCTIONS
( credential_name => 'AWS_CRED', catalog_name => 'AWS_DEMO_CATALOG', function_list => :function_list ); END; / PL/SQL procedure successfully completed. SELECT JSON_QUERY (:function_list, '$' RETURNING VARCHAR2(32676) pretty) AS search_results FROM dual; SEARCH_RESULTS --This is a sample output ------------------------------------------------------------------------------------------------ [ { "functionName" : "test3_example", "functionArn" : "arn:aws:lambda:ap-north-1:378:func:test3_example", "invokeEndpoint" : "https://swiy3.lambda-url.ap-north-1.on.aws_example/" }, { "functionName" : "SumOfNum_example", "functionArn" : "arn:aws:lambda:ap-north-1:378:func:SumOfNum_example" SEARCH_RESULTS --------------------------------------------------------------------------------------------------- "invokeEndpoint" : "https://swiy3.lambda-url.ap-north-1.on.aws_example/" }, { "functionName" : "testlambda_example", "functionArn" : "arn:aws:lambda:ap-north-1:378:func:testlambda_example", "invokeEndpoint" : "https://swiy3.lambda-url.ap-north-1.on.aws_example/" }, SEARCH_RESULTS --------------------------------------------------------------------------------------------------- { "functionName" : "hellp-python_example", "functionArn" : "arn:aws:lambda:ap-north-1:378:func:hellp-python_example", "invokeEndpoint" : "https://swiy3.lambda-url.ap-north-1.on.aws_example/" }, { "functionName" : "testlam_example", "functionArn" : "arn:aws:lambda:ap-north-1:378:func:testlam_example", SEARCH_RESULTS --------------------------------------------------------------------------------------------------- "invokeEndpoint" : "https://swiy3.lambda-url.ap-north-1.on.aws_example/" } ]Weitere Informationen finden Sie unter Prozedur LIST_FUNCTIONS.
- Führen Sie
DBMS_CLOUD_FUNCTION.SYNC_FUNCTIONS
aus, um Wrapper-SQL-Funktionen zu erstellen. Mit einer der folgenden Methoden können Sie die Wrapper-SQL-Funktionen im Katalog erstellen, die ihre jeweiligen Cloud-Funktionen aufrufen:-
SYNC_FUNCTIONS:
SYNC_FUNCTIONS
ist die schnellste und einfachste Methode, die Wrapper-Funktionen im Katalog automatisch mit der vollständigen Liste der Cloud-Funktionen synchronisiert (erstellt oder löscht), die in der Region, dem Compartment und dem Mandanten definiert sind, mit denen der Katalog erstellt wurde. Beispiele:
BEGIN
DBMS_CLOUD_FUNCTION.SYNC_FUNCTIONS
( catalog_name => 'AWS_DEMO_CATALOG' ); END; / PL/SQL procedure successfully completed.Dadurch wird ein PL/SQL-Wrapper erstellt, mit dem dem Katalog neue Funktionen hinzugefügt und Wrapper für Funktionen entfernt werden können, die aus dem Katalog gelöscht wurden.
Führen Sie die folgende Abfrage aus, um die Synchronisierung zu prüfen.
SELECT object_name FROM sys.all_objects WHERE owner='TEST_USER' AND object_type='FUNCTION'; OBJECT_NAME -------------------------------------------------------------------------------- TESTLAMBDA HELLP-PYTHON TESTLAM TEST3 SUMOFNUMBERS
Hinweis
Notieren Sie sich den aktuellen Benutzer, um diesen Befehl auszuführen.Weitere Informationen finden Sie unter Prozedur SYNC_FUNCTIONS.
- Sie können manuell eine
SQL
-Funktion in Ihrem Katalog erstellen, die ihre jeweilige Cloud-Funktion mitDBMS_CLOUD.CREATE_FUNCTION
aufruft.
Beispiel zum Erstellen einer Funktion im Katalog
AWS_DEMO_CATALOG
.BEGIN
DBMS_CLOUD_FUNCTION.CREATE_FUNCTION
( credential_name => 'AWS_CRED', catalog_name => 'AWS_DEMO_CATALOG', function_name => 'aws_testlambda', function_id => 'arn:aws:lambda:ap-northeast-1:378079562280:function:hellp-python' ); END; / PL/SQL procedure successfully completed.Dadurch wird die Funktion
AWS_TESTLAMBDA
im KatalogAWS_DEMO_CATALOG
erstellt.Die Funktion
AWS_TESTLAMBDA
im Katalog ist eine Referenz auf die jeweilige Cloud-Funktion, deren Endpunkt vom ParameterFUNCTION_ID
referenziert wird. Wenn Sie die Funktion im Katalog zusammen mit ihren Argumenten aufrufen, wird die entsprechende Cloud-Funktion ausgeführt und die von der Cloud-Funktion zurückgegebene Ausgabe bereitgestellt.Sie können die Views DBA_CLOUD_FUNCTION View und USER_CLOUD_FUNCTION View abfragen, um die Liste aller Funktionen in der Datenbank abzurufen.
Weitere Informationen finden Sie unter Prozedur CREATE_FUNCTION.
-
- Nachdem die Funktion erstellt wurde, können Sie
DESCRIBE
aufrufen.DESC AWS_TESTLAMBDA COLUMN STATUS format a30 COLUMN OUTPUT format a30
SELECT AWS_TESTLAMBDA(NULL) FROM dual; AWS_TESTLAMBDA(NULL) ---------------------------------------------------- {"STATUS":"200","RESPONSE_BODY":"Hello Python!!"}
Dadurch wird die Funktion
AWS_TESTLAMBDA
aufgerufen, indem die Funktionsreferenzarn:aws:lambda:ap-northeast-1:378079562280:function:hellp-python
im KatalogAWS_DEMO_CATALOG
aufgerufen wird. - Sie können eine vorhandene Funktion mit der Prozedur
DROP_FUNCTION
löschen. Beispiele:EXEC DBMS_CLOUD_FUNCTION.DROP_FUNCTION (CATALOG_NAME => 'AWS_DEMO_CATALOG', FUNCTION_NAME => 'AWS_TESTLAMBDA'); PL/SQL procedure successfully completed.
Dadurch wird die Funktion
AWS_TESTLAMBDA
aus dem KatalogAWS_DEMO_CATALOG
gelöscht.Weitere Informationen finden Sie unter Prozedur DROP_FUNCTION.
- Sie können einen vorhandenen Katalog mit der Prozedur
DROP_CATALOG
löschen. Beispiele:BEGIN
DBMS_CLOUD_FUNCTION.DROP_CATALOG
( catalog_name => 'AWS_DEMO_CATALOG' ); END; / PL/SQL procedure successfully completed.Dadurch wird der
AWS_DEMO_CATALOG
aus der Datenbank gelöscht.Weitere Informationen finden Sie unter Prozedur DROP_CATALOG.
Übergeordnetes Thema: Benutzerdefinierte Funktionen aufrufen