Remarque :
- Ce tutoriel requiert l'accès à Oracle Cloud. Pour vous inscrire à un compte gratuit, reportez-vous à Introduction au niveau gratuit d'Oracle Cloud Infrastructure.
- Il utilise des exemples de valeur pour les informations d'identification, la location et les compartiments Oracle Cloud Infrastructure. A la fin de l'exercice, remplacez ces valeurs par des valeurs propres à votre environnement cloud.
Utiliser Oracle Functions pour charger des fichiers dans une base de données autonome
Introduction
Dans ce tutoriel, vous allez créer des buckets Object Storage, une fonction Oracle, Oracle Autonomous Data Warehouse et déclencher la fonction dès qu'un fichier est téléchargé vers Object Storage. La fonction prend le fichier et l'écrit dans la base de données.
Objectifs
- Créer une application
- Créer un groupe dynamique
- Créer un bucket Object Storage
- Créer une base de données autonome
- Déployer une fonction
- Créer une règle d'événement
- Tester la fonction créée
Prérequis pour Functions
Créer un compartiment
Ignorez cette étape si vous utilisez une location gratuite fournie par Oracle.
Si vous souhaitez utiliser un compartiment existant, passez à l'étape suivante. Sinon, cliquez sur Compartiments, puis sur Créer un compartiment pour créer un compartiment.
Créer un VCN et des sous-réseaux
Si un VCN approprié dans lequel créer des ressources réseau n'existe pas déjà, connectez-vous à la console en tant qu'administrateur de location et sous Infrastructure de base, accédez à Fonctions de réseau, puis :
- Cliquez sur Réseaux cloud virtuels et choisissez un compartiment à l'étape précédente.
- Cliquez sur Démarrer l'assistant VCN, VCN avec connectivité Internet, puis Démarrer l'assistant VCN.
- Saisissez le nom du nouveau VCN (par exemple :
fn-vcn
), cliquez sur Suivant, puis sur Créer pour créer le VCN avec les ressources réseau associées.
Création d'une stratégie pour Oracle Functions
Connectez-vous à la console en tant qu'administrateur de location. Sous Gouvernance et administration, accédez à Identité, cliquez sur Stratégies, puis procédez comme suit :
-
Sélectionner le compartiment racine de la location
-
Cliquez sur Créer une stratégie.
-
Pour le nom, entrez
faas-policy
. -
Pour la description, entrez
Policy for Functions
. -
Cliquez sur le lien Personnaliser (Avancé) et collez les instructions de stratégie dans le champ Générateur de stratégies :
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
-
Cliquez sur Créer.
Assurez-vous que l'utilisateur fait partie du groupe référencé dans les instructions de stratégie ci-dessus. Pour créer des groupes et ajouter des utilisateurs aux groupes, reportez-vous à Création d'un groupe.
Création d'une application
Cette étape consiste à créer une application et à configurer l'interface de ligne de commande Fn sur Cloud Shell.
-
Sous Solutions et plate-forme, sélectionnez Services de développeur et cliquez sur Fonctions.
-
Sélectionnez le compartiment de développement dans la liste Compartiment.
-
Cliquez sur Créer une application.
-
Entrez le nom
etl-app
. -
Sélectionnez le VNC créé précédemment (e.g.
fn-vcn
). -
Sélectionnez le sous-réseau public.
-
Cliquez sur Créer.
-
Cliquez sur l'application créée pour ouvrir ses détails.
-
Cliquez sur le lien Mise en route et suivez les sections Début de la session Cloud Shell et Configuration de l'interface de ligne de commande Fn sur Cloud Shell dans Configuration de Cloud Shell.
Cela implique de lancer Cloud Shell, de mettre à jour le contexte Fn, de générer un jeton d'authentification pour le registre et de se connecter à Oracle Cloud Infrastructure Registry.
Créer un groupe dynamique
Pour utiliser d'autres services OCI, votre fonction doit faire partie d'un groupe dynamique. Pour plus d'informations sur la création de groupes dynamiques, reportez-vous à la documentation.
Avant de créer un groupe dynamique, vous devez obtenir l'OCID de compartiment de développement. Vous utiliserez l'OCID de compartiment dans la règle de mise en correspondance de groupe dynamique.
- Ouvrez le menu de navigation, sélectionnez Identité, puis Compartiments.
- Recherchez votre compartiment de développement dans la liste, placez le curseur de la souris sur la cellule dans la colonne OCID, puis cliquez sur Copier pour copier l'OCID de compartiment dans le presse-papiers.
- Stockez l'OCID de compartiment tel que vous l'utiliserez prochainement.
Vous êtes maintenant prêt à créer un groupe dynamique.
-
Pour créer un groupe dynamique, ouvrez le menu de navigation, sélectionnez Identité, puis Groupes dynamiques.
-
Cliquez sur Créer un groupe dynamique.
-
Entrez le nom
functions-dynamic-group
. -
Pour la description, entrez
Group with all functions in a compartment
. -
Pour sélectionner les fonctions appartenant au groupe dynamique, [écrivez les règles de mise en correspondance] (https://docs.cloud.oracle.com/en-us/iaas/Content/Identity/Tasks/managingdynamicgroups.htm#Writing). Ecrivez la règle de mise en correspondance suivante qui inclut toutes les fonctions d'un compartiment dans lequel vous avez créé l'application :
All {resource.type = 'fnfunc', resource.compartment.id = 'ocid1.compartment.oc1..example'}
Remarque : veillez à remplacer la valeur ci-dessus par l'OCID de compartiment stocké précédemment.
Créer un bucket Object Storage
Vous avez besoin d'un bucket input-bucket
dans Object Storage. Vous allez utiliser input-bucket
pour déposer les fichiers CSV. La fonction traite le fichier et l'importe dans Oracle Autonomous Data Warehouse.
Créons d'abord le fichier input-bucket
:
-
Ouvrez le menu de navigation, sélectionnez Object Storage, puis Object Storage.
-
Sélectionnez le compartiment de développement dans la liste Compartiment.
-
Cliquez sur Créer un bucket.
-
Nommez le bucket input-bucket.
-
Sélectionnez le niveau de stockage Standard.
-
Cochez la case Emettre des événements d'objet.
-
Cliquez sur Créer un bucket.
Création de stratégies IAM
Créez une stratégie qui permet au groupe dynamique (functions-dynamic-group
) de gérer les objets dans le bucket.
-
Ouvrez le menu de navigation, sélectionnez Identité, puis Stratégies.
-
Cliquez sur Créer une stratégie.
-
Entrez le nom
functions-buckets-policy
. -
Pour la description, entrez
Policy that allows functions dynamic group to manage objects in the bucket
. -
Cliquez sur le lien Personnaliser (Avancé) et collez les instructions de stratégie dans le champ Générateur de stratégies :
Allow dynamic-group functions-dynamic-group to manage objects in compartment [compartment-name] where target.bucket.name='input-bucket'
Remarque : remplacez
compartment-name
par le nom de votre compartiment de développement (celui dans lequel vous avez créé le VCN et l'application de fonction). -
Cliquez sur Créer.
Créer une instance Autonomous Database
La fonction accède à la base de données autonome à l'aide de SODA (Simple Oracle Document Access) pour plus de simplicité. Vous pouvez utiliser l'autre type d'accès en modifiant la fonction.
-
Ouvrez le menu de navigation et sélectionnez Autonomous Data Warehouse.
-
Cliquez sur Créer une base de données autonome.
-
Dans la liste, sélectionnez le compartiment de développement.
-
Pour le nom d'affichage et le nom de la base de données, entrez
funcdb
. -
Pour le type de charge globale, sélectionnez Traitement des transactions.
-
Pour le type de déploiement, sélectionnez Infrastructure partagée.
-
Entrez le mot de passe d'administrateur.
-
Cliquez sur Créer une base de données autonome.
Attendez qu'OCI provisionne la base de données autonome, puis cliquez sur le bouton Console de service.
-
Dans la barre latérale, cliquez sur Développement.
-
Sous Services RESTful et SODA, cliquez sur Copier l'URL.
-
A partir de votre terminal (ou Cloud Shell), créez la collection nommée
regionsnumbers
en exécutant la commande ci-dessous. Veillez à remplacer<ORDS_BASE_URL>
par la valeur que vous avez copiée à l'étape précédente et<DB-PASSWORD>
par le mot de passe d'administrateur que vous avez défini lors de la création de la base de données autonome.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
-
Pour créer une collection de chèques doubles, vous pouvez répertorier toutes les collections. La sortie doit ressembler à ce qui suit :
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}
Déployer la fonction
Cette étape consiste à cloner le référentiel de code source des fonctions et à utiliser la commande fn deploy
pour créer l'image Docker, la propager vers OCIR et la déployer vers Oracle Functions dans votre application.
-
Dans l'interface utilisateur de la console, ouvrez Cloud Shell.
-
Clonez le référentiel de code source Functions :
git clone https://github.com/oracle/oracle-functions-samples.git
-
Accédez au dossier
samples/oci-load-file-into-adw-python
:cd oracle-functions-samples/samples/oci-load-file-into-adw-python
-
Déployez la fonction vers
etl-app
:fn -v deploy --app etl-app
Après avoir déployé la fonction, vous devez définir des valeurs de configuration de fonction afin que la fonction sache comment se connecter à Autonomous Database.
-
A l'aide de la CLI Fn, définissez les valeurs de configuration suivantes. Veillez à remplacer
[ORDS_BASE_URL]
et[DB_PASSWORD]
par les valeurs suivantes :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
Créer une règle d'événement
Cette étape consiste à configurer un événement cloud pour déclencher la fonction lorsque vous déposez les fichiers dans input-bucket
.
-
Dans l'interface utilisateur de la console, ouvrez la navigation, sélectionnez Intégration d'application, puis cliquez sur Service d'événements.
-
Sélectionnez le compartiment de développement dans la liste Compartiment.
-
Cliquez sur Créer une règle.
-
Pour le nom d'affichage, entrez
load_CSV_into_ADW
. -
Pour la description, entrez
Load CSV file into ADW
. -
Créez trois règles. Vous pouvez cliquer sur Autre condition pour ajouter d'autres conditions :
Condition Nom d'attribut/de service Valeurs d'attribut/de type d'événement Type d'événement Stockage d'objet Objet - Création Attribut compartmentName Attribut bucketName bucket d'entrée -
Sous Actions, sélectionnez Fonctions :
- Pour le compartiment de fonction, sélectionnez votre compartiment de développement.
- Pour l'application de fonction, sélectionnez
etl-app
. - Pour la fonction, sélectionnez
oci-load-file-into-adw-python
.
-
Cliquez sur Créer une règle.
Tester la fonction
Pour tester la fonction, vous pouvez télécharger un fichier .csv
vers input-bucket
. Pour ce faire, accédez à l'interface utilisateur de la console ou à Cloud Shell à l'aide de l'interface de ligne de commande OCI.
-
Ouvrez Cloud Shell.
-
Accédez au dossier Functions (Fonctions) :
cd ~/oracle-functions-samples/samples/oci-load-file-into-adw-python
-
Utilisez l'interface de ligne de commande OCI pour télécharger
file1.csv
versinput-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==" }
Pour afficher les données de la base, procédez comme suit :
-
A partir de la console OCI, accédez à Autonomous Data Warehouse.
-
Sélectionnez le compartiment de développement dans la liste Compartiment.
-
Sélectionnez Transaction Processing dans la liste Workload Type.
-
Cliquez sur le nom de la base de données (
funcdb
). -
Cliquez sur Console de service.
-
Cliquez sur le lien Développement dans la barre latérale.
-
Cliquez sur SQL Developer Web.
-
Utilisez ADMIN et le mot de passe administrateur pour vous authentifier.
-
Dans la feuille de calcul, entrez l'interrogation suivante :
select UTL_RAW.CAST_TO_VARCHAR2( DBMS_LOB.SUBSTR( JSON_DOCUMENT, 4000, 1 )) AS json from regionsnumbers
-
Cliquez sur le bouton vert pour exécuter la requête.
-
Les données du fichier CSV se trouvent dans l'onglet Résultat de la requête.
-
Bravo ! Vous avez terminé le tutoriel.
Remerciements
- Auteur - Greg Verstraeten
- Contributeurs - Peter Jausovec, Prasenjit Sarkar, Adao Junior
Ressources de formation supplémentaires
Parcourez d'autres ateliers sur docs.oracle.com/learn ou accédez à d'autres contenus de formation gratuite sur le canal Oracle Learning YouTube. En outre, visitez le site education.oracle.com/learning-explorer pour devenir un explorateur Oracle Learning.
Pour consulter la documentation du produit, visitez le site Oracle Help Center.
Use Oracle Functions to load files into autonomous database
F40586-03
October 2022
Copyright © 2022, Oracle and/or its affiliates.