Pasos para llamar a AWS Lambda como funciones SQL
Muestra los pasos para llamar a las funciones remotas de AWS como funciones SQL en la base de datos.
Para llamar a AWS Lambda como funciones SQL, crearemos un catálogo de funciones de envoltorio SQL que hagan referencia a sus respectivas funciones en la nube y las llamen a través de sus puntos finales de API. Antes de crear este catálogo, se supone que ha creado las funciones en la nube necesarias a las que puede hacer referencia este catálogo.
Para acceder a las funciones lambda de AWS, debe configurar las políticas necesarias. Consulte Creación de una política de IAM para acceder a los recursos de AWS Lambda y Uso de políticas basadas en recursos para Lambda para obtener más información.
- Cree una credencial mediante el procedimiento DBMS_CLOUD.CREATE_CREDENTIAL. El objeto de credencial que está creando debe ser de tipo clave secreta.SET DEFINE OFF BEGINDBMS_CLOUD.CREATE_CREDENTIAL( credential_name => 'AWS_CRED', username => 'access_key_ID', password => 'secret_access_key' ); END; /Esto crea la credencial AWS_CRED.Consulte CREATE_CREDENTIAL Procedure para obtener más información. 
- Crear un catálogo.Un catálogo es una recopilación de funciones de envoltorio que hacen referencia a sus respectivas funciones en la nube y las llaman a través de sus puntos finales de API. Ejemplo para crear un catálogo para las funciones de AWS. BEGINDBMS_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.Esto crea el catálogo AWS_DEMO_CATALOG.Consulte CREATE_CATALOG Procedure para obtener más información. Puede consultar las vistas DBA_CLOUD_FUNCTION_CATALOG View y USER_CLOUD_FUNCTION_CATALOG View para recuperar la lista de todos los catálogos de la base de datos. 
- Puede mostrar las funciones de un catálogo.A continuación se muestra un ejemplo para enumerar las funciones de AWS Lambda: VAR function_list CLOB; BEGINDBMS_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/" } ]Consulte LIST_FUNCTIONS Procedure para obtener más información. 
- Ejecute DBMS_CLOUD_FUNCTION.SYNC_FUNCTIONSpara crear funciones SQL de envoltorio. Puede utilizar uno de los siguientes métodos para crear las funciones SQL de encapsulador en el catálogo, que llaman a sus respectivas funciones en la nube:- 
SYNC_FUNCTIONS: SYNC_FUNCTIONSes el método más rápido y sencillo, que sincroniza automáticamente (crea o suprime) funciones de envoltorio en el catálogo con la lista completa de funciones en la nube definidas en la región, el compartimento y el arrendamiento con los que se ha creado el catálogo. Por ejemplo:
 BEGINDBMS_CLOUD_FUNCTION.SYNC_FUNCTIONS( catalog_name => 'AWS_DEMO_CATALOG' ); END; / PL/SQL procedure successfully completed.Esto crea un envoltorio PL/SQL para agregar nuevas funciones al catálogo y eliminar envoltorios para las funciones que se han suprimido del catálogo. Ejecute la siguiente consulta para verificar la sincronización. SELECT object_name FROM sys.all_objects WHERE owner='TEST_USER' AND object_type='FUNCTION'; OBJECT_NAME -------------------------------------------------------------------------------- TESTLAMBDA HELLP-PYTHON TESTLAM TEST3 SUMOFNUMBERSNota
 Tenga en cuenta el usuario actual para ejecutar este comando.Consulte SYNC_FUNCTIONS Procedure para obtener más información. - Puede crear manualmente una función SQLen el catálogo que llame a su función en la nube respectiva medianteDBMS_CLOUD.CREATE_FUNCTION.
 Ejemplo para crear una función en el catálogo AWS_DEMO_CATALOG.BEGINDBMS_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.Esto crea la función AWS_TESTLAMBDAen el catálogoAWS_DEMO_CATALOG.La función AWS_TESTLAMBDAdel catálogo es una referencia a la función en la nube correspondiente a cuyo punto final hace referencia el parámetroFUNCTION_ID. La llamada a la función en el catálogo junto con sus argumentos ejecuta la función en la nube correspondiente y proporciona la salida devuelta por la función en la nube.Puede consultar las vistas DBA_CLOUD_FUNCTION View y USER_CLOUD_FUNCTION View para recuperar la lista de todas las funciones de la base de datos. Consulte CREATE_FUNCTION Procedure para obtener más información. 
- 
- Después de crear la función, puede DESCRIBEy llamarla.DESC AWS_TESTLAMBDA COLUMN STATUS format a30 COLUMN OUTPUT format a30SELECT AWS_TESTLAMBDA(NULL) FROM dual; AWS_TESTLAMBDA(NULL) ---------------------------------------------------- {"STATUS":"200","RESPONSE_BODY":"Hello Python!!"}Esto llama a la función AWS_TESTLAMBDAllamando a la referencia de funciónarn:aws:lambda:ap-northeast-1:378079562280:function:hellp-pythonen el catálogoAWS_DEMO_CATALOG.
- Puede borrar una función existente mediante el procedimiento DROP_FUNCTION. Por ejemplo:EXEC DBMS_CLOUD_FUNCTION.DROP_FUNCTION (CATALOG_NAME => 'AWS_DEMO_CATALOG', FUNCTION_NAME => 'AWS_TESTLAMBDA'); PL/SQL procedure successfully completed.Esto borra la función AWS_TESTLAMBDAdel catálogoAWS_DEMO_CATALOG.Consulte DROP_FUNCTION Procedure para obtener más información. 
- Puede borrar un catálogo existente mediante el procedimiento DROP_CATALOG. Por ejemplo:BEGINDBMS_CLOUD_FUNCTION.DROP_CATALOG( catalog_name => 'AWS_DEMO_CATALOG' ); END; / PL/SQL procedure successfully completed.Esto borra AWS_DEMO_CATALOGde la base de datos.Consulte DROP_CATALOG Procedure para obtener más información. 
Tema principal: Llamada a funciones definidas por el usuario