Nota:
- Este tutorial requiere acceso a Oracle Cloud. Para registrarse para obtener una cuenta gratuita, consulte Introducción al nivel gratuito de Oracle Cloud Infrastructure.
- Utiliza valores de ejemplo para credenciales, arrendamiento y compartimentos de Oracle Cloud Infrastructure. Al finalizar el laboratorio, sustituya estos valores por otros específicos de su entorno en la nube.
Utilizar Oracle Functions para cargar archivos en la base de datos autónoma
Introducción
En este tutorial, creará cubos de almacenamiento de objetos, Oracle Function, Oracle Autonomous Data Warehouse y disparará la función cada vez que se cargue un archivo en Object Storage. La función tomará el archivo y lo escribirá en la base de datos.
Objetivos
- Crear una Aplicación
- Creación de un grupo dinámico
- Crear cubo de almacenamiento de objetos
- Crear una base de datos autónoma
- Despliegue de una función
- Crear una regla de evento
- Pruebe la función creada
Requisitos previos para funciones
Crear compartimento
Ignore este paso si utiliza un arrendamiento proporcionado por Oracle de forma gratuita.
Si desea utilizar un compartimento existente, vaya al siguiente paso. De lo contrario, haga clic en Compartimentos y, a continuación, en Crear compartimento para crear un compartimento nuevo.
Crear VCN y subredes
Si aún no existe una VCN adecuada en la que crear recursos de red, conéctese a la consola como administrador de arrendamiento y en Infraestructura básica, vaya a Red y, a continuación:
- Haga clic en Redes virtuales en la nube y seleccione un compartimento en el paso anterior.
- Haga clic en Iniciar asistente de VCN, VCN con conexión a Internet y, a continuación, en Iniciar asistente de VCN.
- Introduzca un nombre para la nueva VCN (por ejemplo:
fn-vcn
), haga clic en Siguiente y, a continuación, haga clic en Crear para crear la VCN junto con los recursos de red relacionados.
Crear política para Oracle Functions
Conéctese a la consola como administrador del arrendamiento y, en Gobierno y administración, vaya a Identidad y haga clic en Políticas y, a continuación, realice lo siguiente:
-
Seleccione el compartimento raíz del arrendamiento
-
Haga clic en Crear política.
-
Para Name, introduzca
faas-policy
. -
Para obtener una descripción, introduzca
Policy for Functions
. -
Haga clic en el enlace Personalizar (avanzado) y pegue las sentencias de política en el campo Creador de políticas:
Allow group <group-name> to read metrics in tenancy Allow group <group-name> to read objectstorage-namespaces in tenancy Allow group <group-name> to use virtual-network-family in tenancy Allow group <group-name> to manage functions-family in tenancy Allow group <group-name> to use cloud-shell in tenancy
-
Haga clic en Crear.
Asegúrese de que el usuario forma parte del grupo al que se hace referencia en las sentencias de política anteriores. Para crear grupos y agregar usuarios a grupos, consulte Create a group.
Creación de una aplicación
En este paso, se debe crear una aplicación y configurar la CLI de Fn en Cloud Shell.
-
En Solutions and Platform, seleccione Developer Services y haga clic en Functions.
-
Seleccione el compartimento de desarrollo en la lista compartimento.
-
Haga clic en Crear aplicación.
-
Para Name, introduzca
etl-app
. -
Seleccione la VNC que ha creado anteriormente (e.g.
fn-vcn
). -
Seleccione la subred pública.
-
Haga clic en Crear.
-
Haga clic en la aplicación creada para abrir los detalles de la aplicación.
-
Haga clic en el enlace Introducción y siga las secciones Inicio de la sesión de Cloud Shell y Configuración de la CLI Fn en Cloud Shell en Configuración de Cloud Shell.
Esto implica iniciar Cloud Shell, actualizar el contexto de Fn, generar un token de autenticación para el registro y conectarse a Oracle Cloud Infrastructure Registry.
Creación de un grupo dinámico
Para utilizar otros servicios de OCI, la función debe formar parte de un grupo dinámico. Para obtener información sobre la creación de grupos dinámicos, consulte la documentación.
Antes de crear un grupo dinámico, debe obtener el OCID del compartimento de desarrollo. Utilizará el OCID de compartimento en la regla de coincidencia de grupo dinámico.
- Abra el menú de navegación, seleccione Identidad y, a continuación, Compartimentos.
- Busque el compartimento de desarrollo en la lista, pase el cursor sobre la celda de la columna OCID y haga clic en Copiar para copiar el OCID del compartimento en el portapapeles.
- Almacene el OCID del compartimento ya que lo utilizará en breve.
Ahora está listo para crear un grupo dinámico.
-
Para crear un grupo dinámico, abra el menú de navegación, seleccione Identidad y, a continuación, Grupos dinámicos.
-
Haga clic en Crear grupo dinámico.
-
Para Name, introduzca
functions-dynamic-group
. -
Para obtener una descripción, introduzca
Group with all functions in a compartment
. -
Para seleccionar las funciones que pertenecen al grupo dinámico, [escribir reglas de coincidencia] (https://docs.cloud.oracle.com/en-us/iaas/Content/Identity/Tasks/managingdynamicgroups.htm#Writing). Escriba la siguiente regla de coincidencia que incluya todas las funciones dentro de un compartimento en el que ha creado la aplicación:
All {resource.type = 'fnfunc', resource.compartment.id = 'ocid1.compartment.oc1..example'}
Nota: Asegúrese de sustituir el valor anterior por el OCID del compartimento almacenado anteriormente.
Crear cubo de almacenamiento de objetos
Necesita un cubo input-bucket
en Object Storage. Utilizará input-bucket
para distribuir los archivos CSV. La función procesará el archivo e importará en Oracle Autonomous Data Warehouse.
Vamos a crear input-bucket
primero:
-
Abra el menú de navegación, seleccione Object Storage y, a continuación, Object Storage.
-
Seleccione el compartimento de desarrollo en la lista compartimento.
-
Haga clic en Crear cubo.
-
Asigne al cubo el nombre input-bucket.
-
Seleccione el nivel de almacenamiento Standard.
-
Active la casilla de control Emitir eventos de objeto.
-
Haga clic en Crear cubo.
Creación de políticas de IAM
Cree una nueva política que permita al grupo dinámico (functions-dynamic-group
) gestionar objetos en el cubo.
-
Abra el menú de navegación, seleccione Identidad y, a continuación, seleccione Políticas.
-
Haga clic en Crear política.
-
Para Name, introduzca
functions-buckets-policy
. -
Para obtener una descripción, introduzca
Policy that allows functions dynamic group to manage objects in the bucket
. -
Haga clic en el enlace Personalizar (avanzado) y pegue las sentencias de política en el campo Creador de políticas:
Allow dynamic-group functions-dynamic-group to manage objects in compartment [compartment-name] where target.bucket.name='input-bucket'
Nota: sustituya
compartment-name
por el nombre del compartimento de desarrollo (el que ha creado la VCN y la aplicación de función). -
Haga clic en Crear.
Crear Autonomous Database
La función accede a la base de datos autónoma mediante SODA (Simple Oracle Document Access) para mayor simplicidad. Puede utilizar el otro tipo de acceso modificando la función.
-
Abra el menú de navegación, seleccione Autonomous Data Warehouse.
-
Haga clic en Crear base de datos autónoma.
-
En la lista, seleccione el compartimento de desarrollo.
-
Para el nombre mostrado y el nombre de la base de datos, introduzca
funcdb
. -
Para el tipo de carga de trabajo, seleccione Procesamiento de transacciones.
-
Para el tipo de despliegue, seleccione Infraestructura compartida.
-
Introduzca la contraseña de administrador.
-
Haga clic en Crear base de datos autónoma.
Espere a que OCI aprovisione la base de datos autónoma y, a continuación, haga clic en el botón Consola de servicio.
-
Haga clic en Desarrollo en la barra lateral.
-
En RESTful Services y SODA, haga clic en Copiar URL.
-
Desde el terminal (o Cloud Shell), cree la recopilación denominada
regionsnumbers
ejecutando el siguiente comando. Asegúrese de sustituir<ORDS_BASE_URL>
por el valor que ha copiado en el paso anterior y<DB-PASSWORD>
por la contraseña de administrador definida al crear la base de datos autónoma.export ORDS_BASE_URL=<ORDS_BASE_URL> curl -X PUT -u 'ADMIN:<DB-PASSWORD>' -H "Content-Type: application/json" $ORDS_BASE_URL/admin/soda/latest/regionsnumbers
-
Para comprobar la creación de la recopilación, puede enumerar todas las recopilaciones. La salida debe ser similar a la siguiente:
bash $ curl -u 'ADMIN:<DB-password>' -H "Content-Type: application/json" $ORDS_BASE_URL/admin/soda/latest/ {"items":[{"name":"regionsnumbers","properties":{"schemaName":"ADMIN","tableName":"REGIONSNUMBERS","keyColumn":{"name":"ID","sqlType":"VARCHAR2","maxLength":255,"assignmentMethod":"UUID"},"contentColumn":{"name":"JSON_DOCUMENT","sqlType":"BLOB","jsonFormat":"OSON"},"versionColumn":{"name":"VERSION","type":"String","method":"UUID"},"lastModifiedColumn":{"name":"LAST_MODIFIED"},"creationTimeColumn":{"name":"CREATED_ON"},"readOnly":false},"links":[{"rel":"canonical","href":"https://.../ords/admin/soda/latest/regionsnumbers"}]}],"hasMore":false}
Despliegue de la función
En este paso, clonará el repositorio de código fuente de funciones y utilizará el comando fn deploy
para crear la imagen de Docker, transferir la imagen a OCIR y desplegar la función en Oracle Functions en la aplicación.
-
Desde la interfaz de usuario de la consola, abra Cloud Shell.
-
Clone el repositorio de código fuente de Functions:
git clone https://github.com/oracle/oracle-functions-samples.git
-
Vaya a la carpeta
samples/oci-load-file-into-adw-python
:cd oracle-functions-samples/samples/oci-load-file-into-adw-python
-
Despliegue la función en
etl-app
:fn -v deploy --app etl-app
Después de desplegar la función, debe definir los valores de configuración de la función para que la función sepa cómo conectarse a Autonomous Database.
-
Con la CLI de Fn, defina los siguientes valores de configuración. Asegúrese de sustituir
[ORDS_BASE_URL]
y[DB_PASSWORD]
por sus valores:fn config function etl-app oci-load-file-into-adw-python ords-base-url [ORDS_BASE_URL] fn config function etl-app oci-load-file-into-adw-python db-schema admin fn config function etl-app oci-load-file-into-adw-python db-user admin fn config function etl-app oci-load-file-into-adw-python dbpwd-cipher [DB-PASSWORD] fn config function etl-app oci-load-file-into-adw-python input-bucket input-bucket fn config function etl-app oci-load-file-into-adw-python processed-bucket processed-bucket
Creación de una Regla de Evento
En este paso, configurará un evento en la nube para disparar la función al borrar los archivos en input-bucket
.
-
En la interfaz de usuario de la consola, abra la navegación, seleccione Integración de aplicación y haga clic en Servicio de eventos.
-
Seleccione el compartimento de desarrollo en la lista compartimento.
-
Haga clic en Crear regla.
-
Para el nombre mostrado, introduzca
load_CSV_into_ADW
. -
Para obtener una descripción, introduzca
Load CSV file into ADW
. -
Cree tres reglas. Puede hacer clic en Otra condición para agregar más condiciones:
Condición Servicio/Nombre de atributo Valores de atributo/tipo de evento Tipo de Evento Object Storage Objeto - Crear Atributo compartmentName Atributo bucketName cubo de entrada -
En Acciones, seleccione Funciones:
- Para el compartimento de funciones, seleccione el compartimento de desarrollo.
- Para la aplicación de función, seleccione
etl-app
. - Para la función, seleccione
oci-load-file-into-adw-python
.
-
Haga clic en Crear regla.
Prueba de la función
Para probar la función, puede cargar un archivo .csv
en input-bucket
. Puede hacerlo desde la interfaz de usuario de la consola o Cloud Shell mediante la CLI de OCI.
-
Abra Cloud Shell.
-
Vaya a la carpeta de funciones:
cd ~/oracle-functions-samples/samples/oci-load-file-into-adw-python
-
Utilice la CLI de OCI para cargar
file1.csv
eninput-bucket
:$ oci os object put --bucket-name input-bucket --file file1.csv Uploading object [####################################] 100% { "etag": "607fd72d-a041-484c-9ee0-93b9f5488084", "last-modified": "Tue, 20 Oct 2020 18:03:50 GMT", "opc-content-md5": "O8mZv0X2gLagQGT5CutWsQ==" }
Para ver los datos de la base de datos, siga estos pasos:
-
Desde la consola de OCI, navegue a Autonomous Data Warehouse.
-
Seleccione el compartimento de desarrollo en la lista compartimento.
-
Seleccione Procesamiento de transacciones en la lista Tipo de carga de trabajo.
-
Haga clic en el nombre de la base de datos (
funcdb
). -
Haga clic en Consola de servicio.
-
Haga clic en el enlace Desarrollo en la barra lateral.
-
Haga clic en SQL Developer Web.
-
Utilice ADMIN y la contraseña de administrador para autenticarse.
-
En la hoja de trabajo, introduzca la siguiente consulta:
select UTL_RAW.CAST_TO_VARCHAR2( DBMS_LOB.SUBSTR( JSON_DOCUMENT, 4000, 1 )) AS json from regionsnumbers
-
Haga clic en el botón verde de reproducción para ejecutar la consulta.
-
Los datos del archivo CSV se encuentran en el separador Resultado de consulta.
-
Felicidades. Ha finalizado correctamente el tutorial.
Agradecimientos
- Autor: Greg Verstraeten
- Colaboradores: Peter Jausovec, Prasenjit Sarkar, Adao Junior
Más recursos de aprendizaje
Explore otros laboratorios en docs.oracle.com/learn o acceda a más contenido de aprendizaje gratuito en el canal YouTube de Oracle Learning. Además, visite education.oracle.com/learning-explorer para convertirse en un explorador de Oracle Learning.
Para obtener documentación sobre el producto, visite Oracle Help Center.
Use Oracle Functions to load files into autonomous database
F40586-03
October 2022
Copyright © 2022, Oracle and/or its affiliates.