Créer votre première fonction durable dans JavaScript

Durable Functions est une extension d’Azure Functions qui vous permet d’écrire des fonctions avec état dans un environnement serverless. L’extension gère l’état, les points de contrôle et les redémarrages à votre place.

Dans cet article, vous allez découvrir comment utiliser l’extension Azure Functions pour Visual Studio Code afin de créer et tester localement une fonction durable appelée « Hello World ». Cette fonction permet d’orchestrer et de chaîner des appels à d’autres fonctions. Vous allez ensuite publier le code de la fonction dans Azure.

Important

Le contenu de cet article change en fonction de votre choix de modèle de programmation Node.js dans le sélecteur en haut de la page. Le modèle v4 est en disponibilité générale. Il est conçu pour offrir une expérience plus flexible et intuitive aux développeurs JavaScript et TypeScript. En savoir plus sur les différences entre v3 et v4 dans le guide de migration.

Capture d’écran d’une fenêtre Edge. La fenêtre affiche la sortie de l’appel d’une fonction durable simple dans Azure.

Prérequis

Pour suivre ce tutoriel :

  • Installez l’extension Azure Functions de VS Code version 1.10.4 ou ultérieure.
  • Durable Functions nécessite un compte de stockage Azure. Vous avez besoin d’un abonnement Azure.
  • Assurez-vous d’avoir installé la version 16.x de Node.js.
  • Assurez-vous que la version 18.x ou ultérieure de Node.js est installée.

Si vous n’avez pas d’abonnement Azure, créez un compte gratuit Azure avant de commencer.

Créer votre projet local

Dans cette section, vous utilisez Visual Studio Code pour créer un projet Azure Functions local.

  1. Dans Visual Studio Code, appuyez sur F1 (ou Ctrl/Cmd+Maj+P) pour ouvrir la palette de commandes. Dans la palette de commandes, recherchez et sélectionnez Azure Functions: Create New Project....

    Capture d’écran de la palette de commandes Visual Studio Code. La commande intitulée « Azure Functions : Créer un projet... » est mis en surbrillance.

  2. Désignez un emplacement de dossier vide pour votre projet et choisissez Sélectionner.

  1. Suivez les invites et fournissez les informations suivantes :

    Prompt Valeur Description
    Sélectionnez un langage pour votre projet d’application de fonction JavaScript Créez un projet Node.js Functions local.
    Sélectionner un modèle de programmation JavaScript Modèle V3 Choisissez le modèle de programmation V3.
    Sélectionner une version Azure Functions v4 Vous voyez cette option uniquement quand les outils Core Tools ne sont pas déjà installés. Dans le cas présent, les outils Core Tools sont installés la première fois que vous exécutez l’application.
    Sélectionner un modèle pour la première fonction de votre projet Ignorer pour le moment
    Sélectionner la façon dont vous souhaitez ouvrir votre projet Ouvrir dans la fenêtre active Ouvre à nouveau VS Code dans le dossier que vous avez sélectionné.
  1. Suivez les invites et fournissez les informations suivantes :

    Prompt Valeur Description
    Sélectionnez un langage pour votre projet d’application de fonction JavaScript Créez un projet Node.js Functions local.
    Sélectionner un modèle de programmation JavaScript Modèle V4 Choisissez le modèle de programmation V4.
    Sélectionner une version Azure Functions v4 Vous voyez cette option uniquement quand les outils Core Tools ne sont pas déjà installés. Dans le cas présent, les outils Core Tools sont installés la première fois que vous exécutez l’application.
    Sélectionner un modèle pour la première fonction de votre projet Ignorer pour le moment
    Sélectionner la façon dont vous souhaitez ouvrir votre projet Ouvrir dans la fenêtre active Ouvre à nouveau VS Code dans le dossier que vous avez sélectionné.

Visual Studio Code installe la solution Azure Functions Core Tools, si nécessaire. Il crée également un projet d’application de fonction dans un dossier. Ce projet contient les fichiers config host.json et local.settings.json.

Un fichier package.json est également créé dans le dossier racine.

Installer le package npm Durable Functions

Pour travailler avec Durable Functions dans une application de fonction Node.js, vous utilisez une bibliothèque nommée durable-functions.

Pour utiliser le modèle de programmation V4, vous devez installer la préversion v3.x de durable-functions.

  1. Utilisez le menu Affichage ou le raccourci Ctrl + Maj + ` pour ouvrir un nouveau terminal dans VS Code.
  1. Installez le package npm durable-functions en exécutant npm install durable-functions dans le répertoire racine de l’application de fonction.
  1. Installez la préversion du package npm durable-functions en exécutant npm install durable-functions@preview dans le répertoire racine de l’application de fonction.

Création de vos fonctions

L’application Durable Functions la plus simple contient trois fonctions :

  • La fonction d’orchestrateur : elle décrit un workflow qui orchestre d’autres fonctions.
  • La fonction d’activité : appelée par la fonction d’orchestrateur, elle effectue un travail et retourne éventuellement une valeur.
  • La fonction de client : une fonction Azure normale qui démarre une fonction d’orchestrateur. Cet exemple utilise une fonction déclenchée via HTTP.

Fonction d’orchestrateur

Vous utilisez un modèle pour créer le code de fonction durable dans votre projet.

  1. Dans la palette de commandes, recherchez et sélectionnez Azure Functions: Create Function....

  2. Suivez les invites et fournissez les informations suivantes :

    Prompt Valeur Description
    Sélectionner un modèle pour votre fonction Orchestrateur Durable Functions Créer une orchestration Durable Functions
    Choisissez un type de stockage durable. Stockage Azure (par défaut) Sélectionnez le back-end de stockage utilisé pour Durable Functions.
    Fournir un nom de fonction HelloOrchestrator Nom de votre fonction durable

Vous avez ajouté un orchestrateur pour coordonner les fonctions d’activité. Ouvrez HelloOrchestrator/index.js pour voir la fonction d’orchestrateur. Chaque appel à context.df.callActivity appelle une fonction d’activité nommée Hello.

Ajoutez maintenant la fonction d’activité Hello référencée.

Fonction d’activité

  1. Dans la palette de commandes, recherchez et sélectionnez Azure Functions: Create Function....

  2. Suivez les invites et fournissez les informations suivantes :

    Prompt Valeur Description
    Sélectionner un modèle pour votre fonction Activité Durable Functions Créer une fonction d’activité
    Fournir un nom de fonction Hello Nom de votre fonction d’activité

Vous avez ajouté la fonction d’activité Hello qui est appelée par l’orchestrateur. Ouvrez Hello/index.js pour voir qu’elle accepte un nom comme entrée et retourne un message d’accueil. Une fonction d’activité est l’endroit où vous effectuez « le vrai travail » dans votre flux de travail : par exemple, effectuer un appel de base de données ou effectuer un calcul non déterministe.

Pour terminer, vous ajouterez une fonction déclenchée par HTTP qui démarrera l’orchestration.

Fonction de client (démarrage HTTP)

  1. Dans la palette de commandes, recherchez et sélectionnez Azure Functions: Create Function....

  2. Suivez les invites et fournissez les informations suivantes :

    Prompt Valeur Description
    Sélectionner un modèle pour votre fonction Démarrage HTTP Durable Functions Créer une fonction de démarrage HTTP
    Fournir un nom de fonction DurableFunctionsHttpStart Nom de votre fonction d’activité
    Niveau d’autorisation Anonyme À des fins de démonstration, autorisez l’appel sans authentification à la fonction

Vous avez ajouté une fonction déclenchée par HTTP qui démarre une orchestration. Ouvrez DurableFunctionsHttpStart/index.js pour voir qu’elle se sert de client.startNew pour démarrer une nouvelle orchestration. Elle utilise ensuite client.createCheckStatusResponse pour retourner une réponse HTTP contenant des URL qui peuvent être utilisées pour superviser et gérer la nouvelle orchestration.

Vous disposez maintenant d’une application Durable Functions qui peut être exécutée localement, et déployée sur Azure.

L’un des avantages du modèle de programmation V4 est la flexibilité de l’emplacement où vous écrivez vos fonctions. Dans le modèle V4, vous pouvez utiliser un modèle unique pour créer les trois fonctions dans un fichier de votre projet.

  1. Dans la palette de commandes, recherchez et sélectionnez Azure Functions: Create Function....

  2. Suivez les invites et fournissez les informations suivantes :

    Prompt Valeur Description
    Sélectionner un modèle pour votre fonction Orchestrateur Durable Functions Créez un fichier avec une orchestration Durable Functions, une fonction d’activité et une fonction de démarrage de client durable.
    Choisir un type de stockage durable Stockage Azure (par défaut) Sélectionnez le back-end de stockage utilisé pour Durable Functions.
    Fournir un nom de fonction hello Nom utilisé pour vos fonctions durables

Ouvrez src/functions/hello.js pour afficher les fonctions que vous avez créées.

Vous avez créé un orchestrateur appelé helloOrchestrator pour coordonner les fonctions d’activité. Chaque appel de context.df.callActivity appelle une fonction d’activité nommée hello.

Vous avez également ajouté la fonction d’activité hello qui est appelée par l’orchestrateur. Dans le même fichier, vous verrez qu’elle accepte un nom comme entrée et retourne un message d’accueil. Une fonction d’activité est l’endroit où vous effectuez « le vrai travail » dans votre flux de travail : par exemple, un appel de base de données ou un calcul non déterministe.

Enfin, vous avez aussi ajouté une fonction déclenchée par HTTP qui démarre une orchestration. Dans le même fichier, vous pouvez voir qu’il utilise client.startNew pour démarrer une nouvelle orchestration. Elle utilise ensuite client.createCheckStatusResponse pour retourner une réponse HTTP contenant des URL qui peuvent être utilisées pour superviser et gérer la nouvelle orchestration.

Vous disposez maintenant d’une application Durable Functions qui peut être exécutée localement, et déployée sur Azure.

Tester la fonction en local

Azure Functions Core Tools vous permet d’exécuter un projet Azure Functions sur votre ordinateur de développement local. Vous êtes invité à installer ces outils la première fois que vous démarrez une fonction dans Visual Studio Code.

  1. Pour tester votre fonction, définissez un point d’arrêt dans le code de la fonction d’activité Hello (Hello/index.js). Appuyez sur F5 ou sélectionnez Debug: Start Debugging dans la palette de commandes pour démarrer le projet d’application de fonction. La sortie de Core Tools est affichée dans le panneau Terminal.
  1. Pour tester votre fonction, définissez un point d’arrêt dans le code de la fonction d’activité hello (src/functions/hello.js). Appuyez sur F5 ou sélectionnez Debug: Start Debugging dans la palette de commandes pour démarrer le projet d’application de fonction. La sortie de Core Tools est affichée dans le panneau Terminal.

Notes

Pour plus d’informations sur le débogage, consultez Diagnostics Durable Functions.

  1. Durable Functions nécessite l’exécution d’un compte de stockage Azure. Lorsque VS Code vous invite à sélectionner un compte de stockage, choisissez Sélectionner un compte de stockage.

    Capture d’écran d’une fenêtre d’alerte Visual Studio Code. La fenêtre indique « Pour déboguer, vous devez sélectionner un compte de stockage à utiliser en interne par le runtime Azure Functions ». Le bouton intitulé « Sélectionner un compte de stockage » est mis en surbrillance.

  2. En suivant les invites, fournissez les informations suivantes pour créer un compte de stockage dans Azure.

    Prompt Valeur Description
    Sélectionner un abonnement nom de votre abonnement Sélectionner votre abonnement Azure
    Sélectionner un compte de stockage Création d’un nouveau compte de stockage
    Entrer le nom du nouveau compte de stockage nom unique Nom du compte de stockage à créer
    Sélectionner un groupe de ressources nom unique Nom du groupe de ressources à créer
    Sélectionner un emplacement region Sélectionner une région proche de vous
  3. Dans le panneau Terminal, copiez le point de terminaison de l’URL de votre fonction déclenchée via HTTP.

    Capture d’écran du panneau terminal Visual Studio Code. Le terminal affiche la sortie de l’exécution d’une application Durable Functions localement. La table intitulée « Terminal » et l’URL de la fonction de démarrage HTTP sont mises en évidence.

  1. À l’aide de votre navigateur ou d’un outil comme Postman ou cURL, envoyez une requête HTTP POST au point de terminaison de l’URL. Remplacez le dernier segment par le nom de la fonction d’orchestrateur (HelloOrchestrator). L’URL doit ressembler à http://localhost:7071/api/orchestrators/HelloOrchestrator.
  1. À l’aide de votre navigateur ou d’un outil comme Postman ou cURL, envoyez une requête HTTP POST au point de terminaison de l’URL. Remplacez le dernier segment par le nom de la fonction d’orchestrateur (helloOrchestrator). L’URL doit ressembler à http://localhost:7071/api/orchestrators/helloOrchestrator.

La réponse est le résultat initial provenant de la fonction HTTP, qui vous indique que l’orchestration durable a bien été démarrée. Il ne s’agit pas encore du résultat final de l’orchestration. La réponse contient plusieurs URL utiles. Pour le moment, demandons l’état de l’orchestration.

  1. Copiez la valeur de l’URL pour statusQueryGetUri, collez-la dans la barre d’adresse du navigateur, puis exécutez la requête. Vous pouvez également continuer à utiliser Postman pour envoyer la requête GET.

    La requête interroge l’instance d’orchestration pour obtenir l’état. Une fois l’exécution de l’instance terminée, vous devez recevoir une réponse comprenant les sorties ou résultats de la fonction durable. Voici comment il se présente :

    {
        "name": "HelloOrchestrator",
        "instanceId": "9a528a9e926f4b46b7d3deaa134b7e8a",
        "runtimeStatus": "Completed",
        "input": null,
        "customStatus": null,
        "output": [
            "Hello Tokyo!",
            "Hello Seattle!",
            "Hello London!"
        ],
        "createdTime": "2020-03-18T21:54:49Z",
        "lastUpdatedTime": "2020-03-18T21:54:54Z"
    }
    
    {
        "name": "helloOrchestrator",
        "instanceId": "6ba3f77933b1461ea1a3828c013c9d56",
        "runtimeStatus": "Completed",
        "input": "",
        "customStatus": null,
        "output": [
            "Hello, Tokyo",
            "Hello, Seattle",
            "Hello, Cairo"
        ],
        "createdTime": "2023-02-13T23:02:21Z",
        "lastUpdatedTime": "2023-02-13T23:02:25Z"
    }
    
  2. Pour arrêter le débogage, appuyez sur Maj + F5 dans VS Code.

Après avoir vérifié que la fonction s’exécute correctement sur votre ordinateur local, il est temps de publier le projet sur Azure.

Connexion à Azure

Avant de pouvoir créer des ressources Azure ou de publier votre application, vous devez vous connecter à Azure.

  1. Si vous n’êtes pas déjà connecté, choisissez l’icône Azure dans la barre d’activité. Puis, dans la zone Ressources, choisissez Se connecter à Azure....

    Capture d’écran de la connexion à la fenêtre Azure dans VS Code.

    Si vous êtes déjà connecté et que vous pouvez voir vos abonnements existants, accédez à la section suivante. Si vous n’avez pas encore de compte Azure, choisissez Créer un compte Azure.... Les étudiants peuvent choisir Créer un compte Microsoft Azure for Students....

  2. Quand vous y êtes invité dans le navigateur, choisissez votre compte Azure, puis connectez-vous à l’aide de vos informations d’identification de compte Azure. Si vous créez un compte, vous pouvez vous connecter une fois votre compte créé.

  3. Une fois la connexion réussie, vous pouvez fermer la nouvelle fenêtre de navigateur. Les abonnements qui font partie de votre compte Azure sont affichés dans la barre latérale.

Créer l’application de fonction dans Azure

Dans cette section, vous créez une application de fonction et les ressources associées dans votre abonnement Azure.

  1. Sélectionnez l’icône Azure dans la barre Activité. Ensuite, dans la zone Ressources, sélectionnez l’icône + et choisissez l’option Créer une application de fonction dans Azure.

    Créer une ressource dans votre abonnement Azure

  2. Quand vous y êtes invité, indiquez les informations suivantes :

    Prompt Sélection
    Sélectionner un abonnement choisissez l’abonnement à utiliser. Vous ne verrez pas cette invite si vous n’avez qu’un abonnement visible sous Ressources.
    Entrer un nom global unique pour l’application de fonction Tapez un nom valide dans un chemin d’URL. Le système vérifie que le nom que vous tapez est unique dans Azure Functions.
    Sélectionner une pile d’exécution Choisissez la version du langage que vous avez exécutée localement.
    Sélectionnez un emplacement pour les nouvelles ressources Pour de meilleures performances, choisissez une région proche de vous.

    L’extension montre l'état des ressources individuelles au fur et à mesure qu’elles sont créées dans Azure, dans le panneau Azure : journal d’activité.

    Journal de création de ressource Azure

  3. Quand la création est terminée, les ressources Azure suivantes sont créées dans votre abonnement. Les ressources sont nommées en fonction du nom de votre application de fonction :

    • Un groupe de ressources, qui est un conteneur logique pour les ressources associées.
    • Un compte Stockage Azure standard, qui conserve l’état et d’autres informations spécifiques à vos projets.
    • Une application de fonction, qui fournit l’environnement d’exécution de votre code de fonction. Une application de fonction vous permet de regrouper des fonctions en une unité logique pour faciliter la gestion, le déploiement et le partage des ressources au sein du même plan d’hébergement.
    • Un plan App Service, qui définit l’hôte sous-jacent pour votre application de fonction.
    • Une instance Application Insights connectée à l’application de fonction, qui suit l’utilisation de vos fonctions dans l’application.

    Une notification s’affiche après que votre application de fonction a été créée et que le package de déploiement a été appliqué.

    Conseil

    Par défaut, les ressources Azure nécessaires à votre application de fonction sont créées d’après le nom d’application de fonction que vous indiquez. Par défaut, elles sont également créées dans le même nouveau groupe de ressources avec l’application de fonction. Si vous souhaitez personnaliser les noms de ces ressources ou réutiliser des ressources existantes, vous devez plutôt publier le projet à l’aide des options de création avancées.

Déployer le projet dans Azure

Important

Le déploiement vers une application de fonction existante remplace toujours le contenu de cette application dans Azure.

  1. Dans la zone Ressources de l’activité Azure, recherchez la ressource d’application de fonction que vous venez de créer, cliquez avec le bouton droit sur la ressource, puis sélectionnez Déployer sur l’application de fonction....

  2. Quand vous êtes invité à remplacer les déploiements précédents, sélectionnez Déployer pour déployer le code de votre fonction sur la nouvelle ressource de l’application de fonction.

  3. Une fois le déploiement terminé, sélectionnez Afficher la sortie pour afficher les résultats de la création et du déploiement, y compris les ressources Azure que vous avez créées. Si vous manquez la notification, sélectionnez l’icône de cloche dans le coin inférieur droit pour la voir de nouveau.

    Capture d’écran de la fenêtre Afficher la sortie.

Tester votre fonction dans Azure

Remarque

Pour utiliser le modèle de programmation de nœud V4, assurez-vous que votre application s’exécute sur au moins la version 4.25 du runtime Azure Functions.

  1. Copiez l’URL du déclencheur HTTP à partir du panneau Sortie. L’URL qui appelle la fonction déclenchée via HTTP doit se présenter sous ce format : https://<functionappname>.azurewebsites.net/api/orchestrators/HelloOrchestrator
  1. Copiez l’URL du déclencheur HTTP à partir du panneau Sortie. L’URL qui appelle la fonction déclenchée via HTTP doit se présenter sous ce format : https://<functionappname>.azurewebsites.net/api/orchestrators/helloOrchestrator
  1. Collez cette nouvelle URL de requête HTTP dans la barre d’adresse de votre navigateur. Vous devez obtenir la même réponse d’état que lorsque vous avez utilisé l’application publiée.

Étapes suivantes

Vous avez utilisé Visual Studio Code pour créer et publier une application de fonction durable JavaScript.