Passi per richiamare AWS Lambda come funzioni SQL
Mostra i passi per richiamare le funzioni remote AWS come funzioni SQL nel database.
Per richiamare AWS Lambda come funzioni SQL, creeremo un catalogo di funzioni wrapper SQL che fanno riferimento e chiamano la loro rispettiva funzione cloud tramite i loro endpoint API. Prima di creare questo catalogo, si presume che siano state create le funzioni cloud necessarie a cui questo catalogo fa riferimento.
Per accedere alle funzioni AWS lambda, è necessario configurare i criteri necessari. Per ulteriori informazioni, vedere Creazione di un criterio IAM per accedere alle risorse AWS Lambda e Utilizzo di criteri basati sulle risorse per Lambda.
- Creare una credenziale utilizzando la procedura
DBMS_CLOUD.CREATE_CREDENTIAL
. L'oggetto credenziale che si sta creando deve essere di tipo chiave segreta.SET DEFINE OFF BEGIN
DBMS_CLOUD.CREATE_CREDENTIAL
( credential_name => 'AWS_CRED', username => 'access_key_ID', password => 'secret_access_key' ); END; /In questo modo viene creata la credenziale
AWS_CRED
.Per ulteriori informazioni, vedere CREATE_CREDENTIAL Procedura.
- Creare un catalogo.
Un catalogo è una raccolta di funzioni wrapper che fanno riferimento e richiamano le rispettive funzioni cloud tramite gli endpoint API.
Esempio per creare un catalogo per le funzioni AWS.
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.In questo modo viene creato il catalogo
AWS_DEMO_CATALOG
.Per ulteriori informazioni, vedere CREATE_CATALOG Procedure. È possibile eseguire una query sulle viste DBA_CLOUD_FUNCTION_CATALOG View e USER_CLOUD_FUNCTION_CATALOG View per recuperare la lista di tutti i cataloghi del database.
- È possibile elencare le funzioni in un catalogo.
Di seguito è riportato l'esempio per elencare le funzioni AWS Lambda:
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/" } ]Per ulteriori informazioni, vedere LIST_FUNCTIONS Procedura.
- Eseguire
DBMS_CLOUD_FUNCTION.SYNC_FUNCTIONS
per creare funzioni SQL wrapper. È possibile utilizzare uno dei seguenti metodi per creare le funzioni SQL wrapper nel catalogo, che richiamano le rispettive funzioni cloud:-
SYNC_FUNCTIONS:
SYNC_FUNCTIONS
è il metodo più rapido e semplice, che sincronizza automaticamente (crea o elimina) le funzioni wrapper nel catalogo con la lista completa delle funzioni cloud definite nell'area, nel compartimento e nella tenancy con cui è stato creato il catalogo. Ad esempio:
BEGIN
DBMS_CLOUD_FUNCTION.SYNC_FUNCTIONS
( catalog_name => 'AWS_DEMO_CATALOG' ); END; / PL/SQL procedure successfully completed.In questo modo viene creato un wrapper PL/SQL per l'aggiunta di nuove funzioni al catalogo e la rimozione dei wrapper per le funzioni eliminate dal catalogo.
Eseguire la seguente query per verificare la sincronizzazione.
SELECT object_name FROM sys.all_objects WHERE owner='TEST_USER' AND object_type='FUNCTION'; OBJECT_NAME -------------------------------------------------------------------------------- TESTLAMBDA HELLP-PYTHON TESTLAM TEST3 SUMOFNUMBERS
Nota
Per eseguire questo comando, conservare una nota dell'utente corrente.Per ulteriori informazioni, vedere SYNC_FUNCTIONS Procedura.
- È possibile creare manualmente nel catalogo una funzione
SQL
che richiama la rispettiva funzione cloud utilizzandoDBMS_CLOUD.CREATE_FUNCTION
.
Esempio di creazione di una funzione nel catalogo
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.In questo modo viene creata la funzione
AWS_TESTLAMBDA
nel catalogoAWS_DEMO_CATALOG
.La funzione
AWS_TESTLAMBDA
nel catalogo è un riferimento alla rispettiva funzione cloud al cui endpoint fa riferimento il parametroFUNCTION_ID
. Richiamando la funzione nel catalogo insieme ai relativi argomenti, viene eseguita la funzione cloud corrispondente e viene fornito l'output restituito dalla funzione cloud.È possibile eseguire una query sulle viste DBA_CLOUD_FUNCTION View e USER_CLOUD_FUNCTION View per recuperare la lista di tutte le funzioni del database.
Per ulteriori informazioni, vedere CREATE_FUNCTION Procedura.
-
- Dopo aver creato la funzione, è possibile
DESCRIBE
e richiamarla.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!!"}
La funzione
AWS_TESTLAMBDA
viene richiamata richiamando il riferimento funzionearn:aws:lambda:ap-northeast-1:378079562280:function:hellp-python
nel catalogoAWS_DEMO_CATALOG
. - È possibile eliminare una funzione esistente utilizzando la procedura
DROP_FUNCTION
. Ad esempio:EXEC DBMS_CLOUD_FUNCTION.DROP_FUNCTION (CATALOG_NAME => 'AWS_DEMO_CATALOG', FUNCTION_NAME => 'AWS_TESTLAMBDA'); PL/SQL procedure successfully completed.
La funzione
AWS_TESTLAMBDA
viene eliminata dal catalogoAWS_DEMO_CATALOG
.Per ulteriori informazioni, vedere DROP_FUNCTION Procedura.
- È possibile eliminare un catalogo esistente utilizzando la procedura
DROP_CATALOG
. Ad esempio:BEGIN
DBMS_CLOUD_FUNCTION.DROP_CATALOG
( catalog_name => 'AWS_DEMO_CATALOG' ); END; / PL/SQL procedure successfully completed.Viene eliminato
AWS_DEMO_CATALOG
dal database.Per ulteriori informazioni, vedere DROP_CATALOG Procedura.
Argomento padre: Richiama funzioni definite dall'utente