Exercice - Créer une fonction localement en utilisant Core Tools
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.
Depuis le dossier racine, exécutez
func init
pour créer un projet Functions dans un nouveau dossierloan-wizard
.func init loan-wizard
Quand vous êtes invité à sélectionner un runtime Worker, entrez 3 pour node (nœud).
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.
Dans Cloud Shell, accédez au nouveau répertoire
loan-wizard
.cd ~/loan-wizard
Exécutez
func new
pour démarrer l’Assistant de création de fonction.func new
Quand vous êtes invité à sélectionner un modèle, entrez 7 pour HTTP trigger (Déclencheur HTTP).
Quand vous êtes invité à fournir un nom de fonction pour le déclencheur HTTP, entrez
simple-interest
.Exécutez la commande suivante pour ouvrir l’éditeur Cloud Shell.
code .
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.
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.
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
etterm
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
).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.
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épertoireloan-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 processusfunc
est en cours d’exécution.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 POSThttp://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.
Fermez l’éditeur en sélectionnant Ctrl+Q.
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.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.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)
Fermez l’éditeur en sélectionnant Ctrl+Q.