Créer des fonctions Durable Functions à l’aide du portail Azure

L’extension Fonctions durables d’Azure Functions est fournie dans le package NuGet Microsoft.Azure.WebJobs.Extensions.DurableTask. Cette extension doit être installée dans votre application de fonction. Cet article explique comment installer ce package, pour vous permettre de développer des fonctions durables dans le portail Azure.

Notes

Créer une application de fonction

Vous devez disposer d’une application de fonction pour héberger l’exécution d’une fonction. Une application de fonctions vous permet de regrouper vos fonctions en une unité logique pour faciliter la gestion, le déploiement, la mise à l'échelle et le partage des ressources. Vous pouvez créer une application .NET ou JavaScript.

  1. Dans le menu du portail Azure ou dans la page Accueil, sélectionnez Créer une ressource.

  2. Dans la page Nouveau, sélectionnez Calcul>Application de fonction.

  3. Dans la page De base, utilisez les paramètres d’application de fonction comme indiqué dans le tableau ci-dessous :

    Paramètre Valeur suggérée Description
    Abonnement Votre abonnement L'abonnement sous lequel vous créez votre nouvelle application de fonction.
    Groupe de ressources myResourceGroup Nom du nouveau groupe de ressources dans lequel vous créez votre application de fonction. Vous devez créer un groupe de ressources du fait de limitations connues lors de la création d’applications de fonction dans un groupe de ressources existant.
    Nom de l’application de fonction Nom globalement unique Nom qui identifie votre nouvelle Function App. Les caractères valides sont a-z (insensible à la casse), 0-9et -.
    Voulez-vous déployer du code ou une image conteneur ? Code Option de publication de fichiers de code ou d'un conteneur Docker.
    Pile d’exécution Langage préféré Choisissez un runtime qui prend en charge votre langage de programmation de fonction favori. L’édition dans le portail n’est disponible que pour les scripts JavaScript, PowerShell, Python, TypeScript et C#. La bibliothèque de classes C# et les fonctions Java doivent être développées localement.
    Version Numéro de version Choisissez la version de votre runtime installé.
    Région Région recommandée Sélectionnez une région proche de chez vous, ou proche d’autres services auxquels vos fonctions peuvent accéder.
    Système d’exploitation Windows Un système d'exploitation est présélectionné pour vous en fonction de votre sélection de pile d'exécution, mais vous pouvez modifier ce paramètre si nécessaire. La modification sur le portail est prise en charge sur Windows uniquement. La publication de conteneurs est prise en charge uniquement sur Linux.
    Options et plans d’hébergement Consommation (serverless) Plan d’hébergement qui définit la façon dont les ressources sont allouées à votre Function App. Dans le plan de Consommation par défaut, les ressources sont ajoutées dynamiquement en fonction des besoins de vos fonctions. Avec cet hébergement serverless, vous payez uniquement pour la durée d’exécution de vos fonctions. Le plan Premium offre également une mise à l'échelle dynamique. Si vous exécutez dans un plan App Service, vous devez gérer la mise à l’échelle de votre application de fonction.
  4. Acceptez les options par défaut de création d'un nouveau compte de stockage dans l'onglet Stockage et d'une nouvelle instance Application Insight dans l'onglet Surveillance. Vous pouvez également choisir d'utiliser un compte de stockage ou une instance Application Insights existants.

  5. Sélectionnez Examiner + créer pour examiner la configuration de l'application que vous avez choisie, puis sélectionnez Créer pour approvisionner et déployer l'application de fonction.

  6. Cliquez sur l’icône Notifications en haut à droite du portail pour voir le message Le déploiement a été effectué.

  7. Sélectionnez Accéder à la ressource pour afficher votre nouvelle application de fonction. Vous pouvez également sélectionner Épingler au tableau de bord. L’épinglage permet de revenir plus facilement à cette ressource d’application de fonction à partir de votre tableau de bord.

    Screenshot of deployment notification.

Par défaut, l’application de fonction créée utilise la version 2.x du runtime d’Azure Functions. L’extension Durable Functions fonctionne sur les deux versions 1.x et 2.x du runtime d’Azure Functions en C#, et dans la version 2.x en JavaScript. Toutefois, les modèles sont disponibles uniquement lorsque vous ciblez la version 2.x du runtime, quel que soit le langage choisi.

Installer le package npm durable-functions (JavaScript uniquement)

Si vous créez des fonctions Durable Functions JavaScript, vous devez installer le package NPM durable-functions :

  1. Dans la page de votre application de fonction, dans le volet gauche, sélectionnez Outils avancés sous Outils de développement.

    Functions platform features choose Kudu

  2. Dans la page Outils avancés, sélectionnez Go.

  3. Dans la console Kudu, sélectionnez Console de débogage, puis CMD.

    Kudu debug console

  4. La structure de répertoires de fichiers de votre application de fonction doit s’afficher. Accédez au dossier site/wwwroot. À partir de cet emplacement, vous pouvez charger un fichier package.json en le faisant glisser et en le déposant dans la fenêtre de répertoires de fichiers. Voici un exemple de fichier package.json :

    {
      "dependencies": {
        "durable-functions": "^1.3.1"
      }
    }
    

    Kudu upload package.json

  5. Une fois votre fichier package.json chargé, exécutez la commande npm install dans la console d’exécution à distance Kudu.

    Kudu run npm install

Créer une fonction d’orchestrateur

  1. Dans votre application de fonction, sélectionnez Fonctions dans le volet de gauche, puis Ajouter dans le menu supérieur.

  2. Dans le champ de recherche de la page nouvelle fonction, entrez durable, puis choisissez le modèle Démarrage HTTP Durable Functions.

    Select Durable Functions HTTP starter

  3. Pour la nom de la Nouvelle fonction, entrez HttpStart, puis sélectionnez Créer une fonction.

    La fonction créée est utilisée pour démarrer l’orchestration.

  4. Créez une autre fonction dans l’application de fonction, cette fois en utilisant le modèle Orchestrateur Durable Functions. Nommez votre nouvelle fonction d’orchestration HelloSequence.

  5. Créez une troisième fonction nommée Hello à l’aide du modèle Activité Durable Functions.

Tester l’orchestration de la fonction durable

  1. Revenez à la fonction HttpStart, choisissez Obtenir l’URL de la fonction, puis sélectionnez l’icône Copier dans le Presse-papiers pour copier l’URL. Cette URL vous permet de démarrer la fonction HelloSequence.

  2. Utilisez un outil HTTP tel que Postman ou cURL pour envoyer une requête POST à l’URL que vous avez copiée. L’exemple suivant est une commande cURL qui envoie une requête POST à la fonction durable :

    curl -X POST https://{your-function-app-name}.azurewebsites.net/api/orchestrators/{functionName} --header "Content-Length: 0"
    

    Dans cet exemple, {your-function-app-name} est le domaine qui est le nom de votre application de fonction, et {functionName} est la fonction d’orchestrateur HelloSequence. Le message de réponse contient un ensemble de points de terminaison d’URI que vous pouvez utiliser pour surveiller et gérer l’exécution, qui ressemble à l’exemple suivant :

    {  
       "id":"10585834a930427195479de25e0b952d",
       "statusQueryGetUri":"https://...",
       "sendEventPostUri":"https://...",
       "terminatePostUri":"https://...",
       "rewindPostUri":"https://..."
    }
    
  3. Appelez l’URI de point de terminaison statusQueryGetUri et l’état actuel de la fonction durable s’affiche. Il peut se présenter comme dans cet exemple :

        {
            "runtimeStatus": "Running",
            "input": null,
            "output": null,
            "createdTime": "2017-12-01T05:37:33Z",
            "lastUpdatedTime": "2017-12-01T05:37:36Z"
        }
    
  4. Continuez d’appeler le point de terminaison statusQueryGetUri jusqu’à ce que l’état passe à Terminé, et qu’une réponse s’affiche, similaire à l’exemple suivant :

    {
            "runtimeStatus": "Completed",
            "input": null,
            "output": [
                "Hello Tokyo!",
                "Hello Seattle!",
                "Hello London!"
            ],
            "createdTime": "2017-12-01T05:38:22Z",
            "lastUpdatedTime": "2017-12-01T05:38:28Z"
        }
    

Votre première fonction durable est maintenant opérationnelle dans Azure.

Étapes suivantes