Exercice - Créer une fonction localement en utilisant Core Tools

Effectué

Les outils Azure Functions Core Tools vous permettent de développer des fonctions localement sur votre ordinateur comme suit :

  • Créer des fichiers et dossiers nécessaires pour un projet de fonctions.
  • Fournir un hôte Functions qui s’exécute localement à partir du répertoire racine de votre projet.

Vous décidez de débuter vous travail localement avec Azure Functions en développant une fonction qui calcule un intérêt simple. Par la suite, vous pouvez créer des fonctions plus complexes qui fonctionnent ensemble et appellent d’autres services et bases de données. Créer une fonction qui effectue un calcul de prêt basique à l’aide de Core Tools est un bon point de départ. Vous souhaitez également essayer d’exécuter votre fonction sur votre ordinateur avant de la publier sur Azure. Vous pouvez effectuer toutes ces actions à partir d’Azure Cloud Shell en utilisant les outils Core Tools.

Azure Cloud Shell est fourni avec Core Tools, Azure CLI et un éditeur que vous pouvez utiliser pour écrire du code. Veillez à sélectionner Activer le bac à sable ci-dessus avant de continuer.

Créer un projet Azure Functions local

Dans cet exercice, vous allez utiliser Cloud Shell pour développer votre première fonction JavaScript à l’aide de Core Tools. Les versions appropriées de Core Tools et de Node.js sont déjà installées dans Cloud Shell.

  1. Depuis le dossier racine, exécutez func init pour créer un projet Functions dans un nouveau dossier loan-wizard.

    func init loan-wizard
    
  2. Quand vous êtes invité à sélectionner un runtime Worker, entrez 3 pour node (nœud).

  3. Quand vous êtes invité à sélectionner un langage, entrez 1 pour JavaScript.

    La sortie dresse la liste des fichiers écrits sur disque, ce qui comprend les suivants :

    • host.json prend en charge la configuration au niveau de l’application pour l’instance de runtime et des types de déclencheur et de liaison spécifiques.
    • local.settings.json définit les comportements et les paramètres d’application uniquement locaux (variables d’environnement locales).
    • package.json est un fichier spécifique à JavaScript qui effectue le suivi de tous les packages que vous installez et utilisez dans votre code.
    • .gitignore et extensions.json sont les fichiers config utilisés par l’outil de gestion de versions Git et par Visual Studio Code, respectivement. Vous pouvez les ignorer pour le moment.

Créer une fonction déclenchée par HTTP

Le moment est venu de créer votre fonction.

  1. Dans Cloud Shell, accédez au nouveau répertoire loan-wizard.

    cd ~/loan-wizard
    
  2. Exécutez func new pour démarrer l’Assistant de création de fonction.

    func new
    
  3. Quand vous êtes invité à sélectionner un modèle, entrez 7 pour HTTP trigger (Déclencheur HTTP).

  4. Quand vous êtes invité à fournir un nom de fonction pour le déclencheur HTTP, entrez simple-interest.

  5. Exécutez la commande suivante pour ouvrir l’éditeur Cloud Shell.

    code .
    

    Screenshot showing the simple-interest folder with the function.json file open in Cloud Shell code editor.

    L’Assistant crée un fichier dans le projet Functions sous src/functions appelé simple-interest.js, qui comprend le contenu du modèle par défaut. Ce code prend en charge le modèle de programmation Node.js v4 pour Azure Functions. Prenez un moment pour explorer les fichiers du projet avec l’éditeur. La capture d’écran montre le dossier développé avec simple-interest.js ouvert dans l’éditeur.

Implémenter la fonction simple-interest

L’implémentation de fonction par défaut créée automatiquement par Core Tools dans simple-interest.js recherche une entrée appelée name dans la chaîne de requête ou le corps de la requête HTTP entrante, puis retourne la chaîne Hello, [name]. Il s’agit d’une bonne illustration de la façon dont un déclencheur HTTP s’utilise, mais il convient de remplacer ce code par du code qui calcule un intérêt simple à partir de trois paramètres d’entrée.

  1. Dans le volet FILES de l’éditeur, développez le dossier src>functions, puis sélectionnez simple-interest.js pour ouvrir le fichier dans l’éditeur.

  2. Remplacez tout le contenu de simple-interest.js par le code suivant :

    const { app } = require('@azure/functions');
    
    app.http('simple-interest', {
        methods: ['GET','POST'],
        authLevel: 'anonymous',
        handler: async (request, context) => {
            const principal = parseFloat(request.query.get('principal'));
            const rate = parseFloat(request.query.get('rate'));
            const term = parseFloat(request.query.get('term'));
    
          if ([principal, rate, term].some(isNaN)) {
            // If any empty or non-numeric values, return a 400 response with an
            // error message
            return {
              status: 400,
              body: "Please supply principal, rate and term in the query string"
            };
          } else {
            // Otherwise set the response body to the product of the three values
            return { body: principal * rate * term };
          }
        }
    });
    

    Ce script recherche les paramètres nommés principal, rate et term dans la chaîne de la requête HTTP. Il retourne ensuite le résultat du calcul d’intérêt simple (principal * rate * term).

  3. Enregistrez le fichier en appuyant sur Ctrl+S, puis fermez l’éditeur en appuyant sur Ctrl+Q.

Exécuter la fonction dans Cloud Shell

Pour exécuter la nouvelle fonction localement et l’essayer, utilisez func start pour démarrer le runtime Functions (func.exe) dans un processus en arrière-plan de façon à pouvoir utiliser la ligne de commande pendant l’exécution. Ensuite, utilisez l’outil en ligne de commande curl pour interagir avec la fonction.

Si vous utilisez Core Tools sur votre propre ordinateur, vous pouvez simplement utiliser curl dans une deuxième fenêtre de terminal ou un navigateur web. La sortie produite par Core Tools apparaît en temps réel dans la première fenêtre de terminal. Dans Cloud Shell, vous êtes limité à un seul terminal. Vous devez donc exécuter Core Tools (func.exe) dans un processus en arrière-plan.

  1. Exécutez la commande suivante pour démarrer l’hôte de fonctions sans assistance en arrière-plan.

    func start &> ~/output.txt &
    

    Comme avec func new, Cloud Shell doit toujours se trouver dans le répertoire loan-wizard.

    L’hôte Functions écrit maintenant sa sortie dans le fichier ~/output.txt. Vous pouvez continuer à utiliser la ligne de commande pendant l’exécution.

    Utilisez la commande ps pour vérifier que le processus func est en cours d’exécution.

  2. Entrez la commande suivante pour afficher le journal de sortie.

    code ~/output.txt
    

    Dans la sortie, un message indique qui indique que Functions: simple-interest: est disponible sous forme de requête HTTP GET ou POST http://localhost:7071/api/simple-interest.

    Remarque

    Si vous voyez un message d’erreur, sélectionnez Ctrl+C pour arrêter l’hôte. Veillez à ce que le contenu de votre fichier de code soit identique à l’exemple.

    Cette URL localhost n’est pas publiée sur le web. Elle n’est accessible qu’à partir des outils qui s’exécutent dans votre session Cloud Shell.

  3. Fermez l’éditeur en sélectionnant Ctrl+Q.

  4. Exécutez la commande suivante pour envoyer une requête HTTP GET à votre fonction qui s’exécute localement.

    curl "http://localhost:7071/api/simple-interest" -w "\n"
    

    La sortie Please supply principal, rate and term in the query string indique que la fonction a été correctement appelée et qu’elle peut retourner une réponse, mais vous ne l’appelez pas volontairement. Vous devez fournir les paramètres dans la requête HTTP.

  5. Rappelez la fonction. Cette fois, fournissez une valeur pour chacun des paramètres de chaîne de requête.

    curl "http://localhost:7071/api/simple-interest?principal=5000&rate=.035&term=36" -w "\n"
    

    Cette fois-ci, la sortie est 6300. Tout fonctionne comme prévu.

  6. Entrez la commande suivante pour afficher à nouveau le journal de sortie.

    code ~/output.txt
    

    Après les entrées du journal de démarrage, un ensemble horodaté d’entrées de journal sont ajoutées pour chacun de vos appels de la fonction avec curl :

    [2024-02-20T06:25:56.700Z] Executing 'Functions.simple-interest' (Reason='This function was programmatically called via the host APIs.', Id=5daf20c3-f204-41bb-a5b9-021acaf17c04)
    [2024-02-20T06:25:56.893Z] Executed 'Functions.simple-interest' (Succeeded, Id=5daf20c3-f204-41bb-a5b9-021acaf17c04, Duration=228ms)
    
    
  7. Fermez l’éditeur en sélectionnant Ctrl+Q.