Pasos para llamar a Google Cloud Run Functions como funciones SQL

Muestra los pasos para llamar a las funciones de Google Cloud Run como funciones SQL en la base de datos.

Para llamar a las funciones de Google Cloud Run como funciones SQL, cree una biblioteca de funciones de envoltorio SQL que hagan referencia y llamen a sus respectivas funciones en la nube. Antes de crear este catálogo, se supone que ha creado las funciones en la nube necesarias a las que hace referencia este catálogo. Consulte Creación de una función de ejecución en la nube mediante la consola de Google Cloud para obtener más información.

  1. Para acceder a las funciones de Google Cloud Run desde una instancia de Autonomous Database, utilice su cuenta de servicio de Google. Debe otorgar el permiso cloudfunctions.functions.list y los roles Cloud Functions Invoker y Cloud Run Invoker a la cuenta de servicio de Google para la aplicación Google Cloud Platform (GCP).
  2. Cree un catálogo. Para crear un catálogo para las funciones de Google Cloud Run con un usuario que no sea ADMIN, debe otorgar privilegios de lectura en la vista CLOUD_INTEGRATIONS a ese usuario.

    Un catálogo es una recopilación de funciones de envoltorio que hacen referencia y llaman a sus respectivas funciones en la nube mediante sus puntos finales de API.

    BEGIN
        DBMS_CLOUD_FUNCTION.CREATE_CATALOG (
            credential_name  => 'GCP$PA', 
            catalog_name     => 'GCP_DEMO_CATALOG', 
            service_provider => 'GCP',
            cloud_params     => '{"project_id":"example_XXXXXX"}'
     );
    END;
    /
    

    El valor project_id de cloud_params es el ID de proyecto de Google Cloud Platform (GCP).

    Esto crea el catálogo GCP_DEMO_CATALOG y cataloga todas las funciones de la project_id proporcionada.

    Consulte procedimiento CREATE_CATALOG 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.

  3. Enumerar las funciones de un catálogo.

    A continuación se muestra el ejemplo para mostrar las funciones de Google Cloud Run:

    VAR function_list CLOB;
    
    BEGIN
        DBMS_CLOUD_FUNCTION.LIST_FUNCTIONS (
            credential_name  => 'GCP$PA',
            catalog_name     => 'GCP_DEMO_CATALOG',
            function_list    => :function_list
     );
    END;
    /
    
    SELECT JSON_QUERY (:function_list, '$' RETURNING VARCHAR2(32676) pretty) AS search_results FROM dual;
    

    Consulte procedimiento LIST_FUNCTIONS para obtener más información.

  4. Ejecute DBMS_CLOUD_FUNCTION.SYNC_FUNCTIONS para crear funciones SQL de encapsulador. Puede utilizar uno de los siguientes métodos para crear las funciones SQL de envoltorio en el catálogo, que llaman a sus respectivas funciones en la nube:
    • SYNC_FUNCTIONS: el método SYNC_FUNCTIONS para crear la función SQL del encapsulador es el método más rápido y sencillo, que sincroniza (crea o suprime) automáticamente las funciones del encapsulador 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:

    
    BEGIN
        DBMS_CLOUD_FUNCTION.SYNC_FUNCTIONS (
            catalog_name => 'GCP_DEMO_CATALOG'
     );
    END;
    /
    

    Esto crea un envoltorio PL/SQL para agregar nuevas funciones al catálogo y eliminar envoltorios para 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';
    
    Nota

    Tenga en cuenta el usuario actual para ejecutar este comando.

    Consulte procedimiento SYNC_FUNCTIONS para obtener más información.

    • Puede crear manualmente una función SQL en el catálogo que llame a su respectiva función en la nube mediante DBMS_CLOUD.CREATE_FUNCTION.

    Ejemplo para crear una función en el catálogo GCP_DEMO_CATALOG.

    EXEC :function_args  := TO_CLOB('{"name": "VARCHAR2"}');
    BEGIN
        DBMS_CLOUD_FUNCTION.CREATE_FUNCTION (
            credential_name => 'GCP$PA',
            catalog_name    => 'GCP_DEMO_CATALOG',
            function_name   => 'gcp_testfunc',
            function_id     => 'function_id_path',
            input_args      => :function_args
     );
    END;
    /
    

    Esto crea la función GCP_TESTFUNC en el catálogo GCP_DEMO_CATALOG.

    La función GCP_TESTFUNC del catálogo es una referencia a la función correspondiente de Google Cloud Run cuyo ID de proyecto hace referencia el parámetro FUNCTION_ID. La llamada a la función en el catálogo junto con sus argumentos ejecuta la función correspondiente de Google Cloud Run y proporciona la salida devuelta por la función.

    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 Procedimiento para obtener más información.

  5. Una vez creada la función, puede utilizar DESCRIBE y llamarla.
    DESC GCP_TESTFUNC
    COLUMN STATUS format a30
    COLUMN OUTPUT format a30
    SELECT GCP_TESTFUNC(NULL) FROM dual;

    Esto llama a la función GCP_TESTFUNC llamando a la referencia de función especificada en el parámetro function_id.

  6. Puede borrar una función existente mediante el procedimiento DROP_FUNCTION. Por ejemplo:
    EXEC DBMS_CLOUD_FUNCTION.DROP_FUNCTION (CATALOG_NAME => 'GCP_DEMO_CATALOG', FUNCTION_NAME => 'GCP_TESTFUNC');
    

    Esto borra la función GCP_TESTFUNC del catálogo GCP_DEMO_CATALOG.

    Consulte DROP_FUNCTION Procedimiento para obtener más información.

  7. Puede borrar un catálogo existente mediante el procedimiento DROP_CATALOG. Por ejemplo:
    BEGIN
        DBMS_CLOUD_FUNCTION.DROP_CATALOG (
            catalog_name     => 'GCP_DEMO_CATALOG'
     );
    END;
    /

    Esto borra GCP_DEMO_CATALOG de la base de datos.

    Consulte DROP_CATALOG Procedimiento para obtener más información.