Oracle Functions : Démarrer avec Cloud Shell

Dans ce tutoriel, vous utiliserez un compte Oracle Cloud Infrastructure pour configurer le développement avec Oracle Functions à l'aide de Cloud Shell. Ensuite, vous créerez une application de fonction et une fonction.

Voici les principales tâches :

  • Configurer un jeton d'authentification.
  • Collecter les informations requises.
  • Configurer un VCN.
  • Se connecter au registre OCI (OCIR).
  • Configurer Cloud Shell pour déployer des fonctions.
  • Configurer votre contexte Fn.
  • Créer une application pour votre fonction Oracle.
  • Créer une fonction.
  • Déployer votre fonction.
  • Tester votre fonction.
Images illustrant les composants OCI utilisés pour exécuter Oracle Functions.

Pour plus d'informations, voir :

1. Collecter les informations requises

Collectez toutes les informations nécessaires pour suivre le tutoriel.

Collecter des informations sur la région et le registre

Préparez les informations nécessaires à partir de la console OCI.

  1. Recherchez l'identificateur de votre région et la clé de votre région dans Régions et domaines de disponibilité.

    Exemple : us-ashburn-1 et iad pour Ashburn.

  2. Créez un nom de projet de registre pour stocker vos images de fonction dans le registre OCI (OCIR).

    Lorsque vous publiez une fonction, une image Docker est créée dans OCIR. Le nom de votre projet OCIR est ajouté au début de vos images de fonction pour retrouver celles-ci plus facilement. Par exemple, avec :

    • Nom de projet de registre : my-func-prj
    • Nom de fonction : node-func

    Votre image de fonction serait stockée dans OCIR sous : my-func-prj/node-func

Créer ou sélectionner un compartiment

Pour créer un compartiment, voir Créer un compartiment. Une fois votre compartiment créé, enregistrez son OCID.

Pour obtenir l'OCID du compartiment à partir d'un compartiment existant :

  1. Dans le menu de navigation, cliquez sur Identité et sécurité. Sous Identity, cliquez sur Compartments.
  2. Sélectionnez votre compartiment.
  3. Cliquez sur le lien Copier pour le champ OCID.
Créer un jeton d'autorisation

Vous créez un jeton d'autorisation pour vous connecter au registre OCI. Pour créer un jeton d'autorisation :

  1. Dans le menu de navigation , sélectionnez le menu Profil Icône du menu Profil, puis sélectionnez Paramètres de l'utilisateur ou Mon profil, selon l'option que vous voyez.
  2. Cliquez sur Jetons d'authentification.
  3. Cliquez sur Créer un jeton.
  4. Indiquez une description.
  5. Cliquez sur Créer un jeton.
  6. Copiez le jeton et enregistrez-le.
    Note

    Enregistrez votre jeton juste après l'avoir créé. Vous ne pourrez plus y accéder ultérieurement.
Collecter vos informations

Collectez toutes les informations nécessaires pour suivre le tutoriel. Copiez les informations suivantes dans votre bloc-notes.

  1. région : <region-identifier>

    Exemple : us-ashburn-1.

  2. Clé de région : <region-key>

    Exemple : iad.

  3. Nom de projet de registre : <your-project-name>

    Exemple : my-func-prj.

  4. ID compartiment : <compartment-id>

    Exemple : ocid1.compartment.oc1.aaaaaaa...

  5. Jeton d'authentification : <auth-token>

    Exemple : ABC.1aBC...

  6. Nom de la location : <tenancy-name>

    À partir de votre avatar d'utilisateur, par exemple : mytenancyname

  7. OCID de la location : <tenancy-ocid>

    À partir de votre avatar d'utilisateur, allez à Location : <your-tenancy> et copiez l'OCID, par exemple : ocid1.tenancy.oc1.aaaaaaa...

  8. Nom d'utilisateur : <user-name>

    À partir de votre avatar d'utilisateur.

2. Créer votre réseau en nuage virtuel (VCN)

Configurez un VCN pour connecter votre instance Linux à Internet.

Configurer votre VCN

Pour configurer le réseau en nuage virtuel, procédez de la façon suivante.

  1. Cliquez sur l'icône Oracle Cloud pour accéder à la page de renvoi principale.
    • Accédez à Lancement de ressources.
    • Sélectionnez Configurer un réseau avec un assistant.
  2. Dans le flux de travail Démarrer l'assistant VCN, sélectionnez Créer un VCN avec connectivité Internet, puis cliquez sur Démarrer l'assistant VCN.
  3. Dans la boîte de dialogue de configuration, entrez le nom du VCN pour votre VCN. Votre compartiment est déjà réglé au dernier compartiment dans lequel vous avez travaillé, ou par défaut, à <your-tenancy> (root).
  4. Dans la section Configurer le VCN et les sous-réseaux, gardez les valeurs par défaut pour les blocs CIDR :
    • BLOC CIDR DE VCN : 10.0.0.0/16
    • BLOC CIDR DE SOUS-RÉSEAU PUBLIC : 10.0.0.0/24
    • BLOC CIDR DE SOUS-RÉSEAU PRIVÉ : 10.0.1.0/24
    Note

    Les sous-réseaux public et privé ont des adresses de réseau différentes.
  5. Pour la résolution DNS, désélectionnez Utiliser des noms d'hôte DNS dans ce VCN.
  6. Cliquez sur Next (Suivant).

    La boîte de dialogue de configuration Créer un VCN avec connectivité Internet ne s'affiche pas ici pour confirmer toutes les valeurs que vous venez d'entrer.

  7. Cliquez sur Créer pour créer votre VCN.

    La boîte de dialogue Création de ressources présente tous les composants VCN en cours de création.

  8. Cliquez sur Voir le réseau en nuage virtuel pour voir votre nouveau VCN.

    Votre nouveau VCN s'affiche. À présent, vous devez ajouter une règle de sécurité pour autoriser les connexions HTTP sur le port 80, utilisé par défaut pour vos applications.

  9. Maintenant que votre nouveau VCN est affiché, cliquez sur le lien de sous-réseau Public.

    Les informations sur le sous-réseau public s'affichent avec les listes de sécurité au bas de la page. Un lien vers la liste de sécurité par défaut de votre VCN doit être présent.

  10. Cliquez sur le lien Liste de sécurité par défaut.

    Les règles de trafic entrant par défaut pour votre VCN s'affichent.

  11. Cliquez sur Ajouter des règles de trafic entrant.

    Une boîte de dialogue Ajouter des règles de trafic entrant s'affiche.

  12. Entrez les informations suivantes pour la règle de trafic entrant. Une fois toutes les données entrées, cliquez sur Ajouter des règles de trafic entrant.

    Définissez la règle de trafic entrant comme suit :

    • Sans état : Coché
    • Type de source : CIDR
    • CIDR source : 0.0.0.0/0
    • Protocole IP : TCP
    • Intervalle de ports sources : (Laissez vide)
    • Intervalle de ports de destination : 80
    • Description : VCN pour les applications

    Après que vous avez cliqué sur Ajouter des règles de trafic entrant, les connexions HTTP à votre sous-réseau public sont autorisées.

Note

Pour ouvrir un autre port, remplacez 80 à la dernière étape par le numéro de port voulu.
Vous avez créé un VCN qui rend vos applications disponibles à partir d'Internet.

3. Se connecter au registre OCI

À présent, journalisez Docker dans le registre OCI (OCIR).

Journaliser Docker dans OCIR
  1. Récupérez les informations que vous avez collectées plus tôt.
  2. Ouvrez une fenêtre de terminal.
  3. Connectez-vous à OCIR :
    docker login <region-key>.ocir.io

    Vous êtes invité à entrer votre nom de connexion et votre mot de passe.

    • Nom d'utilisateur : <tenancy-name>/<user-name>
    • Mot de passe : <auth-token>

Vous avez journalisé votre instance dans OCIR.

4. Configurer Oracle Functions

Pour utiliser Oracle Functions, vous devez configurer le contexte d'application Fn. Le contexte stocke les valeurs nécessaires pour se connecter au service Oracle Functions. Les commandes du client Fn sont utilisées pour ajouter les données de configuration requises.

Configurer le contexte Fn pour le Cloud Shell

Vous avez besoin des informations que vous avez collectées plus tôt. Utilisez les commandes du client Fn pour configurer Fn.

  1. Ouvrez votre instance Cloud Shell.
  2. Obtenez une liste de contextes Fn.

    fn list context

    Le contexte default et les contextes dont le nom inclut <your-region-identifier> sont affichés.

  3. Sélectionnez le contexte dont le nom inclut <your-region-identifier>.

    Par exemple : fn use context us-phoenix-1

  4. Répertoriez les contextes Fn pour vérifier que celui dont le nom inclut <your-region-identifier> est sélectionné. (Signalé par une étoile.)
  5. Définissez le compartiment pour Oracle Functions.

    Exemple : fn update context oracle.compartment-id ocid1.compartment.oc1..aaaaaaaarvdfa72n...

  6. Définissez l'URL de votre référentiel de registre.

    Exemple de commande : fn update context registry <region-key>.ocir.io/<tenancy-namespace>/<registry-project-name>

    Exemple : fn update context registry phx.ocir.io/my-tenancy/my-func-prj

Note

Voir/Modifier un contexte

Vos fichiers de contexte Fn se trouvent dans le répertoire ~/.fn/contexts. Chaque contexte est stocké dans un fichier .yaml. Par exemple, votre fichier us-phoenix-1.yaml peut ressembler à ceci :

api-url: https://functions.us-phoenix-1.oci.oraclecloud.com
oracle.compartment-id: ocid1.compartment.oc1..aaaaaaaarvdfa72n...
provider: oraclecs
registry: phx.ocir.io/my-tenancy/my-func-prj
                

Vous pouvez modifier le fichier directement à l'aide d'un éditeur si nécessaire.

Pour obtenir plus de détails sur chaque étape, voir : Démarrage rapide avec Oracle Functions sur Cloud Shell

Vous avez maintenant configuré le contexte Fn pour votre instance.

5. Créer et déployer une fonction

Maintenant que votre configuration est terminée, créez et déployez une fonction.

Créer une application

Une application est le principal conteneur de stockage pour les fonctions. Chaque fonction doit être dotée d'une application à des fins de déploiement. Pour créer une application, procédez de la façon suivante.

  1. Ouvrez le menu de navigation et cliquez sur Services de développement. Sous Fonctions, cliquez sur Applications.
  2. Cliquez sur Créer une application.

    Complétez le formulaire.

    • Nom : <your-app-name>
    • VCN : <your-VCN>
    • sous-réseaux : <your-public-subnet> ou <your-private-subnet>
    Note

    Il est possible d'utiliser un sous-réseau public ou privé. Sélectionnez l'un ou l'autre.
  3. Cliquez sur Créer.

Votre application est créée.

Sélectionner un langage

Sélectionnez l'un des langages suivants pour créer et déployer une fonction. Si vous le souhaitez, vous pouvez exécuter les trois procédures.

Créer et déployer une fonction Java

Maintenant que vous avez créé votre application, déployez une fonction Java. Procédez de la façon suivante pour créer une fonction Java "Hello World".

Note

Assurez-vous que Java 8+ est installé avant d'effectuer les étapes suivantes.
  1. Ouvrez Cloud Shell.
  2. Créez un répertoire dans lequel stocker vos fonctions et accédez à ce répertoire.
    mkdir my-dir-name
    cd my-dir-name                        
                        
  3. Créez une fonction Java "Hello World" avec Fn.
    fn init --runtime java my-func-name

    Cette commande crée un répertoire nommé my-func-name comportant plusieurs fichiers.

    • func.yaml - Fichier de configuration de la fonction.
    • pom.xml - Fichier de génération Maven.
    • src/main/java/com/example/fn/HelloFunction.java - Fichier de la fonction.
  4. Accédez au répertoire.
  5. Déployez la fonction.
    fn -v deploy --app your-app-name

    Divers messages s'affichent au fur et à mesure que les images Docker sont créées, poussées vers OCIR, puis déployées dans Oracle Functions.

  6. Appelez la fonction.
    fn invoke your-app-name my-func-name

    Retourne : Hello, world!

  7. Appelez la fonction avec un paramètre.
    echo -n "Bob" | fn invoke your-app-name my-func-name

    Retourne : Hello, Bob!

  8. Si vous voulez vous connecter à votre fonction à partir du réseau, vous devez obtenir le point d'extrémité d'appel de la fonction. Pour déterminer votre point d'extrémité d'appel, utilisez la commande inspect.
    fn inspect function your-app-name my-func-name
  9. Examinez les résultats de la commande inspect. Notez que l'URL du point d'extrémité d'appel est incluse dans la section annotations des données JSON retournées.
    {
        "annotations": {
            "fnproject.io/fn/invokeEndpoint": "https://aaaaaaaaa.us-ashburn-1.functions.oci.oraclecloud.com/1111111/functions/ocid1.fnfunc.oc1.iad.aaaaaaaaa.../actions/invoke",
            "oracle.com/oci/compartmentId": "ocid1.compartment.oc1..aaaaaaaa...",
            "__comment":"Remaining output left out for brevity",
    
  10. Utilisez l'URL retournée par inspect pour appeler la fonction. Comme les fonctions nécessitent que les demandes soient signées numériquement, la commande oci raw-request est utilisée pour cet exemple.
    oci raw-request --http-method POST --request-body "" --target-uri https://https://aaaaaaaaa.us-ashburn-1.functions.oci.oraclecloud.com/1111111/functions/ocid1.fnfunc.oc1.iad.aaaaaaaaa.../actions/invoke

    La commande retourne :

    {
        "data": "Hello, world!",
        "headers": {
            "Content-Length": "13",
            "Content-Type": "text/plain",
            "Date": "Tue, 20 Oct 2020 00:53:08 GMT",
            "Fn-Call-Id": "11111111111",
            "Fn-Fdk-Version": "fdk-java/1.0.111 (jvm=OpenJDK 64-Bit Server VM, jvmv=11.0.8)",
            "Opc-Request-Id": "1111111/11111"
        },
        "status": "200 OK"
    }
    Note

    Vous pouvez vous connecter à un point d'extrémité Oracle Functions à l'aide d'outils comme curl. Toutefois, pour des raisons de sécurité, le script est complexe. Vous pouvez également utiliser la commande raw-request de l'interface de ligne de commande OCI. Voir Appel de fonctions : Envoi d'une demande signée à une fonction à l'aide de raw-request.

Vous avez déployé et testé une fonction Java.

Créer et déployer une fonction Python

Maintenant que vous avez créé votre application, déployez une fonction Python. Procédez de la façon suivante pour créer une fonction Python "Hello World".

  1. Ouvrez Cloud Shell.
  2. Créez un répertoire dans lequel stocker vos fonctions et accédez à ce répertoire.
    mkdir my-dir-name
    cd my-dir-name                        
                        
  3. Créez une fonction Python "Hello World" avec Fn.
    fn init --runtime python my-func-name

    Cette commande crée un répertoire nommé my-func-name comportant plusieurs fichiers.

    • func.yaml - Fichier de configuration de la fonction.
    • requirements.txt - Liste des bibliothèques Python requises.
    • func.py - Fichier de la fonction.
  4. Accédez au répertoire.
  5. Déployez la fonction.
    fn -v deploy --app your-app-name

    Divers messages s'affichent au fur et à mesure que les images Docker sont créées, poussées vers OCIR, puis déployées dans Oracle Functions.

  6. Appelez la fonction.
    fn invoke your-app-name my-func-name

    Retourne : {"message": "Hello World"}

  7. Appelez la fonction avec un paramètre.
    echo -n '{"name":"Bob"}' | fn invoke your-app-name my-func-name

    Retourne : {"message": "Hello Bob"}

  8. Si vous voulez vous connecter à votre fonction à partir du réseau, vous devez obtenir le point d'extrémité d'appel de la fonction. Pour déterminer votre point d'extrémité d'appel, utilisez la commande inspect.
    fn inspect function your-app-name my-func-name
  9. Examinez les résultats de la commande inspect. Notez que l'URL du point d'extrémité d'appel est incluse dans la section annotations des données JSON retournées.
    {
        "annotations": {
            "fnproject.io/fn/invokeEndpoint": "https://aaaaaaaaa.us-ashburn-1.functions.oci.oraclecloud.com/1111111/functions/ocid1.fnfunc.oc1.iad.aaaaaaaaa.../actions/invoke",
            "oracle.com/oci/compartmentId": "ocid1.compartment.oc1..aaaaaaaa...",
            "__comment":"Remaining output left out for brevity",
    
  10. Utilisez l'URL retournée par inspect pour appeler la fonction. Comme les fonctions nécessitent que les demandes soient signées numériquement, la commande oci raw-request est utilisée pour cet exemple.
    oci raw-request --http-method POST --request-body "" --target-uri https://https://aaaaaaaaa.us-ashburn-1.functions.oci.oraclecloud.com/1111111/functions/ocid1.fnfunc.oc1.iad.aaaaaaaaa.../actions/invoke

    La commande retourne :

    {
        "data": "Hello World",
        "headers": {
            "Content-Length": "24",
            "Content-Type": "application/json",
            "Date": "Tue, 20 Oct 2020 00:53:08 GMT",
            "Fn-Call-Id": "11111111111",
            "Fn-Fdk-Version": "fdk-python/0.1.18",
            "Opc-Request-Id": "1111111/11111"
        },
        "status": "200 OK"
    }
    Note

    Vous pouvez vous connecter à un point d'extrémité Oracle Functions à l'aide d'outils comme curl. Toutefois, pour des raisons de sécurité, le script est complexe. Vous pouvez également utiliser la commande raw-request de l'interface de ligne de commande OCI. Voir Appel de fonctions : Envoi d'une demande signée à une fonction à l'aide de raw-request.

Vous avez déployé et testé une fonction Python.

Créer et déployer une fonction Node

Maintenant que vous avez créé votre application, déployez une fonction Node. Procédez de la façon suivante pour créer une fonction Node "Hello World".

Note

Assurez-vous que Node.js 10+ est installé avant d'effectuer les étapes suivantes.
  1. Ouvrez Cloud Shell.
  2. Créez un répertoire dans lequel stocker vos fonctions et accédez à ce répertoire.
    mkdir my-dir-name
    cd my-dir-name                        
                        
  3. Créez une fonction Node "Hello World" avec Fn.
    fn init --runtime node my-func-name

    Cette commande crée un répertoire nommé my-func-name comportant plusieurs fichiers.

    • func.yaml - Fichier de configuration de la fonction.
    • package.json - Fichier de génération NPM.
    • func.js - Fichier de la fonction.
  4. Accédez au répertoire.
  5. Déployez la fonction.
    fn -v deploy --app your-app-name

    Divers messages s'affichent au fur et à mesure que les images Docker sont créées, poussées vers OCIR, puis déployées dans Oracle Functions.

  6. Appelez la fonction.
    fn invoke your-app-name my-func-name

    Retourne : {"message":"Hello World"}

  7. Appelez la fonction avec un paramètre.
    echo -n '{"name":"Bob"}' | fn invoke your-app-name my-func-name

    Retourne : {"message":"Hello Bob"}

  8. Si vous voulez vous connecter à votre fonction à partir du réseau, vous devez obtenir le point d'extrémité d'appel de la fonction. Pour déterminer votre point d'extrémité d'appel, utilisez la commande inspect.
    fn inspect function your-app-name my-func-name
  9. Examinez les résultats de la commande inspect. Notez que l'URL du point d'extrémité d'appel est incluse dans la section annotations des données JSON retournées.
    {
        "annotations": {
            "fnproject.io/fn/invokeEndpoint": "https://aaaaaaaaa.us-ashburn-1.functions.oci.oraclecloud.com/1111111/functions/ocid1.fnfunc.oc1.iad.aaaaaaaaa.../actions/invoke",
            "oracle.com/oci/compartmentId": "ocid1.compartment.oc1..aaaaaaaa...",
            "__comment":"Remaining output left out for brevity",
    
  10. Utilisez l'URL retournée par inspect pour appeler la fonction. Comme les fonctions nécessitent que les demandes soient signées numériquement, la commande oci raw-request est utilisée pour cet exemple.
    oci raw-request --http-method POST --request-body "" --target-uri https://https://aaaaaaaaa.us-ashburn-1.functions.oci.oraclecloud.com/1111111/functions/ocid1.fnfunc.oc1.iad.aaaaaaaaa.../actions/invoke

    La commande retourne :

    {
        "data": "Hello World",
        "headers": {
            "Content-Length": "23",
            "Content-Type": "application/json",
            "Date": "Tue, 22 Oct 2020 00:53:08 GMT",
            "Fn-Call-Id": "11111111111",
            "Fn-Fdk-Version": "fdk-node/0.1.18 (njsv=v11.15.0)",
            "Opc-Request-Id": "1111111/11111"
        },
        "status": "200 OK"
    }
    Note

    Vous pouvez vous connecter à un point d'extrémité Oracle Functions à l'aide d'outils comme curl. Toutefois, pour des raisons de sécurité, le script est complexe. Vous pouvez également utiliser la commande raw-request de l'interface de ligne de commande OCI. Voir Appel de fonctions : Envoi d'une demande signée à une fonction à l'aide de raw-request.

Vous avez déployé et testé une fonction Node.

6. Vérifier les informations sur la fonction

Une fois vos fonctions exécutées, des informations les concernant sont disponibles dans la console OCI.

Voir les images de fonction dans OCIR

Lors du déploiement, la fonction est chargée et stockée dans OCIR. Vous pouvez naviguer jusqu'à OCIR et examiner les images de fonction.

  1. Ouvrez le menu de navigation et cliquez sur Services de développement. Sous Conteneurs et artificiels, cliquez sur Container Registry.
  2. Recherchez <your-repository-project-name>.
  3. Sous le nom de votre projet, figure une entrée pour chaque fonction que vous avez déployée.
  4. Cliquez sur le lien de chaque image pour laquelle vous souhaitez voir des informations.
Voir les informations sur l'exécution de la fonction

Après avoir exécuté une fonction, vous pouvez afficher des mesures pour cette fonction.

  1. Ouvrez le menu de navigation et cliquez sur Services de développement. Sous Fonctions, cliquez sur Applications. Vos applications s'affichent sur la page.
  2. Cliquez sur le lien vers l'application que vous avez créée.
  3. Cliquez sur le lien vers la fonction que vous souhaitez examiner.

    Les mesures relatives à votre fonction s'affichent.

Activer et voir les informations de journalisation

Pour activer la journalisation d'une application, procédez de la façon suivante.

  1. Ouvrez le menu de navigation et cliquez sur Services de développement. Sous Fonctions, cliquez sur Applications. Vos applications s'affichent sur la page.
  2. Cliquez sur le lien vers l'application que vous avez créée.
  3. Dans la partie gauche de la page de l'application, cliquez sur le lien Logs.
  4. Cliquez sur Activé pour activer la journalisation de votre application.
  5. La boîte de dialogue Activer le journal s'affiche. Entrez les informations suivantes :
    • compartiment : <your-compartment-name>
    • Groupe de journaux : Utilisez la valeur par défaut Auto-Create a Default Log Group
    • Nom du journal : <take-default>
    • Conservation des journaux : <take-default>
    • Cliquez sur Activer le journal

      Attendez un instant que votre journal soit créé.

Pour voir votre journal, cliquez sur le lien de nom de journal créé par les étapes précédentes.