Créer votre première fonction durable dans PowerShellCreate your first durable function in PowerShell

Durable Functions est une extension d’Azure Functions qui vous permet d’écrire des fonctions avec état dans un environnement serverless.Durable Functions is an extension of Azure Functions that lets you write stateful functions in a serverless environment. L’extension gère l’état, les points de contrôle et les redémarrages à votre place.The extension manages state, checkpoints, and restarts for you.

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 ».In this article, you learn how to use the Visual Studio Code Azure Functions extension to locally create and test a "hello world" durable function. Cette fonction permet d’orchestrer et de chaîner des appels à d’autres fonctions.This function will orchestrate and chain together calls to other functions. Vous allez ensuite publier le code de la fonction dans Azure.You then publish the function code to Azure.

Exécution d’une fonction durable dans Azure

PrérequisPrerequisites

Pour suivre ce tutoriel :To complete this tutorial:

Si vous n’avez pas d’abonnement Azure, créez un compte gratuit avant de commencer.If you don't have an Azure subscription, create a free account before you begin.

Créer votre projet localCreate your local project

Dans cette section, vous utilisez Visual Studio Code pour créer un projet Azure Functions local.In this section, you use Visual Studio Code to create a local Azure Functions project.

  1. Dans Visual Studio Code, appuyez sur F1 (ou Ctrl/Cmd+Maj+P) pour ouvrir la palette de commandes.In Visual Studio Code, press F1 (or Ctrl/Cmd+Shift+P) to open the command palette. Dans la palette de commandes, recherchez et sélectionnez Azure Functions: Create New Project....In the command palette, search for and select Azure Functions: Create New Project....

    Créer une fonction

  2. Désignez un emplacement de dossier vide pour votre projet et choisissez Sélectionner.Choose an empty folder location for your project and choose Select.

  3. Suivez les invites et fournissez les informations suivantes :Following the prompts, provide the following information:

    PromptPrompt ValeurValue DescriptionDescription
    Sélectionnez un langage pour votre projet d’application de fonctionSelect a language for your function app project PowerShellPowerShell Créez un projet Fonctions de PowerShell local.Create a local PowerShell Functions project.
    Sélectionner une versionSelect a version Azure Functions v3Azure Functions v3 Vous voyez cette option uniquement quand les outils Core Tools ne sont pas déjà installés.You only see this option when the Core Tools aren't already installed. Dans le cas présent, les outils Core Tools sont installés la première fois que vous exécutez l’application.In this case, Core Tools are installed the first time you run the app.
    Sélectionner un modèle pour la première fonction de votre projetSelect a template for your project's first function Ignorer pour le momentSkip for now
    Sélectionner la façon dont vous souhaitez ouvrir votre projetSelect how you would like to open your project Ouvrir dans la fenêtre activeOpen in current window Ouvre à nouveau VS Code dans le dossier que vous avez sélectionné.Reopens VS Code in the folder you selected.

Visual Studio Code installe la solution Azure Functions Core Tools, si nécessaire.Visual Studio Code installs the Azure Functions Core Tools, if needed. Il crée également un projet d’application de fonction dans un dossier.It also creates a function app project in a folder. Ce projet contient les fichiers config host.json et local.settings.json.This project contains the host.json and local.settings.json configuration files.

Un fichier package.json est également créé dans le dossier racine.A package.json file is also created in the root folder.

Configurer l’application de fonction pour utiliser PowerShell 7Configure function app to use PowerShell 7

Ouvrez le fichier local.settings.json et confirmez que le paramètre nommé FUNCTIONS_WORKER_RUNTIME_VERSION est défini sur ~7.Open the local.settings.json file and confirm that a setting named FUNCTIONS_WORKER_RUNTIME_VERSION is set to ~7. Si ce paramètre est manquant ou défini sur une autre valeur, mettez à jour les contenus du fichier.If it is missing or set to another value, update the contents of the file.

{
  "IsEncrypted": false,
  "Values": {
    "AzureWebJobsStorage": "",
    "FUNCTIONS_WORKER_RUNTIME": "powershell",
    "FUNCTIONS_WORKER_RUNTIME_VERSION" : "~7"
  }
}

Créer vos fonctionsCreate your functions

L’application Durable Functions la plus simple contient trois fonctions :The most basic Durable Functions app contains three functions:

  • La fonction d’orchestrateur : elle décrit un workflow qui orchestre d’autres fonctions.Orchestrator function - describes a workflow that orchestrates other functions.
  • La fonction d’activité : appelée par la fonction d’orchestrateur, elle effectue un travail et retourne éventuellement une valeur.Activity function - called by the orchestrator function, performs work, and optionally returns a value.
  • La fonction de client : une fonction Azure normale qui démarre une fonction d’orchestrateur.Client function - a regular Azure Function that starts an orchestrator function. Cet exemple utilise une fonction déclenchée via HTTP.This example uses an HTTP triggered function.

Fonction d’orchestrateurOrchestrator function

Vous utilisez un modèle pour créer le code de fonction durable dans votre projet.You use a template to create the durable function code in your project.

  1. Dans la palette de commandes, recherchez et sélectionnez Azure Functions: Create Function....In the command palette, search for and select Azure Functions: Create Function....

  2. Suivez les invites et fournissez les informations suivantes :Following the prompts, provide the following information:

    PromptPrompt ValeurValue DescriptionDescription
    Sélectionner un modèle pour votre fonctionSelect a template for your function Orchestrateur Durable Functions (préversion)Durable Functions orchestrator (preview) Créer une orchestration Durable FunctionsCreate a Durable Functions orchestration
    Fournir un nom de fonctionProvide a function name HelloOrchestratorHelloOrchestrator Nom de votre fonction durableName of your durable function

Vous avez ajouté un orchestrateur pour coordonner les fonctions d’activité.You've added an orchestrator to coordinate activity functions. Ouvrez HelloOrchestrator/run.ps1 pour voir la fonction d’orchestrateur.Open HelloOrchestrator/run.ps1 to see the orchestrator function. Chaque appel à la cmdlet Invoke-ActivityFunction appelle une fonction d’activité nommée Hello.Each call to the Invoke-ActivityFunction cmdlet invokes an activity function named Hello.

Ajoutez maintenant la fonction d’activité Hello référencée.Next, you'll add the referenced Hello activity function.

Fonction d’activitéActivity function

  1. Dans la palette de commandes, recherchez et sélectionnez Azure Functions: Create Function....In the command palette, search for and select Azure Functions: Create Function....

  2. Suivez les invites et fournissez les informations suivantes :Following the prompts, provide the following information:

    PromptPrompt ValeurValue DescriptionDescription
    Sélectionner un modèle pour votre fonctionSelect a template for your function Activité Durable Functions (préversion)Durable Functions activity (preview) Créer une fonction d’activitéCreate an activity function
    Fournir un nom de fonctionProvide a function name HelloHello Nom de votre fonction d’activitéName of your activity function

Vous avez ajouté la fonction d’activité Hello qui est appelée par l’orchestrateur.You've added the Hello activity function that is invoked by the orchestrator. Ouvrez Hello/run.ps1 pour voir qu’elle accepte un nom comme entrée et retourne un message d’accueil.Open Hello/run.ps1 to see that it's taking a name as input and returning a greeting. Une fonction d’activité vous permet d’effectuer des actions, telles que le lancement d’un appel de base de données ou l’exécution d’un calcul.An activity function is where you'll perform actions such as making a database call or performing a computation.

Pour terminer, vous ajouterez une fonction déclenchée par HTTP qui démarrera l’orchestration.Finally, you'll add an HTTP triggered function that starts the orchestration.

Fonction de client (démarrage HTTP)Client function (HTTP starter)

  1. Dans la palette de commandes, recherchez et sélectionnez Azure Functions: Create Function....In the command palette, search for and select Azure Functions: Create Function....

  2. Suivez les invites et fournissez les informations suivantes :Following the prompts, provide the following information:

    PromptPrompt ValeurValue DescriptionDescription
    Sélectionner un modèle pour votre fonctionSelect a template for your function Démarrage HTTP Durable Functions (préversion)Durable Functions HTTP starter (preview) Créer une fonction de démarrage HTTPCreate an HTTP starter function
    Fournir un nom de fonctionProvide a function name HttpStartHttpStart Nom de votre fonction d’activitéName of your activity function
    Niveau d’autorisationAuthorization level AnonymeAnonymous À des fins de démonstration, autorisez l’appel sans authentification à la fonctionFor demo purposes, allow the function to be called without authentication

Vous avez ajouté une fonction déclenchée par HTTP qui démarre une orchestration.You've added an HTTP triggered function that starts an orchestration. Ouvrez HttpStart/run.ps1 pour voir que la cmdlet Start-NewOrchestration est utilisée pour démarrer une nouvelle orchestration.Open HttpStart/run.ps1 to see that it uses the Start-NewOrchestration cmdlet to start a new orchestration. Elle utilise ensuite la cmdlet New-OrchestrationCheckStatusResponse pour retourner une réponse HTTP contenant des URL qui peuvent être utilisées pour superviser et gérer la nouvelle orchestration.Then it uses the New-OrchestrationCheckStatusResponse cmdlet to return an HTTP response containing URLs that can be used to monitor and manage the new orchestration.

Vous disposez maintenant d’une application Durable Functions qui peut être exécutée localement, et déployée sur Azure.You now have a Durable Functions app that can be run locally and deployed to Azure.

Tester la fonction en localTest the function locally

Azure Functions Core Tools vous permet d’exécuter un projet Azure Functions sur votre ordinateur de développement local.Azure Functions Core Tools lets you run an Azure Functions project on your local development computer. Vous êtes invité à installer ces outils la première fois que vous démarrez une application de fonction dans Visual Studio Code.You're prompted to install these tools the first time you start a function app from Visual Studio Code.

  1. Pour tester votre fonction, définissez un point d’arrêt dans le code de la Hellofonction d’activité (Hello/run.ps1).To test your function, set a breakpoint in the Hello activity function code (Hello/run.ps1). Appuyez sur F5 ou sélectionnez Debug: Start Debugging dans la palette de commandes pour démarrer le projet d’application de fonction.Press F5 or select Debug: Start Debugging from the command palette to start the function app project. La sortie de Core Tools est affichée dans le panneau Terminal.Output from Core Tools is displayed in the Terminal panel.

    Notes

    Pour plus d’informations sur le débogage, consultez Diagnostics Durable Functions.Refer to the Durable Functions Diagnostics for more information on debugging.

  2. Durable Functions nécessite l’exécution d’un compte de stockage Azure.Durable Functions requires an Azure Storage account to run. Lorsque VS Code vous invite à sélectionner un compte de stockage, choisissez Sélectionner un compte de stockage.When VS Code prompts you to select a storage account, choose Select storage account.

    Créer un compte de stockage

  3. En suivant les invites, fournissez les informations suivantes pour créer un compte de stockage dans Azure.Following the prompts, provide the following information to create a new storage account in Azure.

    PromptPrompt ValeurValue DescriptionDescription
    Sélectionner un abonnementSelect subscription nom de votre abonnementname of your subscription Sélectionner votre abonnement AzureSelect your Azure subscription
    Sélectionner un compte de stockageSelect a storage account Création d’un nouveau compte de stockageCreate a new storage account
    Entrer le nom du nouveau compte de stockageEnter the name of the new storage account nom uniqueunique name Nom du compte de stockage à créerName of the storage account to create
    Sélectionner un groupe de ressourcesSelect a resource group nom uniqueunique name Nom du groupe de ressources à créerName of the resource group to create
    Sélectionner un emplacementSelect a location regionregion Sélectionner une région proche de vousSelect a region close to you
  4. Dans le panneau Terminal, copiez le point de terminaison de l’URL de votre fonction déclenchée via HTTP.In the Terminal panel, copy the URL endpoint of your HTTP-triggered function.

    Sortie Azure locale

  5. À 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.Using your browser, or a tool like Postman or cURL, send an HTTP POST request to the URL endpoint. Remplacez le dernier segment par le nom de la fonction d’orchestrateur (HelloOrchestrator).Replace the last segment with the name of the orchestrator function (HelloOrchestrator). L’URL doit ressembler à http://localhost:7071/api/orchestrators/HelloOrchestrator.The URL should be similar to 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.The response is the initial result from the HTTP function letting you know the durable orchestration has started successfully. Il ne s’agit pas encore du résultat final de l’orchestration.It is not yet the end result of the orchestration. La réponse contient plusieurs URL utiles.The response includes a few useful URLs. Pour le moment, demandons l’état de l’orchestration.For now, let's query the status of the orchestration.

  6. Copiez la valeur de l’URL pour statusQueryGetUri, collez-la dans la barre d’adresse du navigateur, puis exécutez la requête.Copy the URL value for statusQueryGetUri and paste it in the browser's address bar and execute the request. Vous pouvez également continuer à utiliser Postman pour envoyer la requête GET.Alternatively you can also continue to use Postman to issue the GET request.

    La requête interroge l’instance d’orchestration pour obtenir l’état.The request will query the orchestration instance for the status. 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.You should get an eventual response, which shows us the instance has completed, and includes the outputs or results of the durable function. Voici comment il se présente :It looks like:

    {
        "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"
    }
    
  7. Pour arrêter le débogage, appuyez sur Maj + F5 dans VS Code.To stop debugging, press Shift + F5 in 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.After you've verified that the function runs correctly on your local computer, it's time to publish the project to Azure.

Connexion à AzureSign in to Azure

Avant de pouvoir publier votre application, vous devez vous connecter à Azure.Before you can publish your app, you must sign in to Azure.

  1. Si vous n’êtes pas déjà connecté, choisissez l’icône Azure dans la barre d’activité, puis dans la zone Azure : Fonctions, choisissez Se connecter à Azure... . Si vous ne l’avez pas encore fait, vous pouvez créer un compte Azure gratuit .If you aren't already signed in, choose the Azure icon in the Activity bar, then in the Azure: Functions area, choose Sign in to Azure.... If you don't already have one, you can Create a free Azure account. Les étudiants peuvent créer un compte gratuit Azure pour Étudiant .Students can create a free Azure account for Students.

    Se connecter à Azure dans VS Code

    Si vous êtes déjà connecté, passez à la section suivante.If you're already signed in, go to the next section.

  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.When prompted in the browser, choose your Azure account and sign in using your Azure account credentials.

  3. Une fois la connexion réussie, vous pouvez fermer la nouvelle fenêtre de navigateur.After you've successfully signed in, you can close the new browser window. Les abonnements qui font partie de votre compte Azure sont affichés dans la barre latérale.The subscriptions that belong to your Azure account are displayed in the Side bar.

Publication du projet sur AzurePublish the project to Azure

Dans cette section, vous créez une application de fonction et les ressources associées dans votre abonnement Azure, puis vous déployez votre code.In this section, you create a function app and related resources in your Azure subscription and then deploy your code.

Important

La publication sur une application de fonction existante remplace le contenu de cette application dans Azure.Publishing to an existing function app overwrites the content of that app in Azure.

  1. Choisissez l’icône Azure dans la barre d’activité, puis dans la zone Azure : Fonctions, choisissez le bouton Déployer sur une application de fonction.Choose the Azure icon in the Activity bar, then in the Azure: Functions area, choose the Deploy to function app... button.

    Publier votre projet sur Azure

  2. Quand vous y êtes invité, indiquez les informations suivantes :Provide the following information at the prompts:

    • Sélectionnez le dossier : choisissez un dossier dans votre espace de travail ou accédez à un dossier qui contient votre application de fonction.Select folder: Choose a folder from your workspace or browse to one that contains your function app. Vous ne verrez pas ceci si vous avez déjà ouvert une application de fonction valide.You won't see this if you already have a valid function app opened.

    • Sélectionnez l’abonnement : choisissez l’abonnement à utiliser.Select subscription: Choose the subscription to use. Vous ne verrez pas ceci si vous n’avez qu’un seul abonnement.You won't see this if you only have one subscription.

    • Sélectionnez une application de fonction dans Azure : Choisissez + Create new Function App.Select Function App in Azure: Choose + Create new Function App. (Ne choisissez pas l’option Advanced, qui n’est pas abordée dans cet article.)(Don't choose the Advanced option, which isn't covered in this article.)

    • Entrer un nom global unique pour l’application de fonction : Tapez un nom valide dans un chemin d’URL.Enter a globally unique name for the function app: Type a name that is valid in a URL path. Le système vérifie que le nom que vous tapez est unique dans Azure Functions.The name you type is validated to make sure that it's unique in Azure Functions.

    • Sélectionnez un runtime : Choisissez la version de PowerShell que vous avez exécutée localement.Select a runtime: Choose the version of PowerShell you've been running on locally. Vous pouvez utiliser la commande pwsh -version pour vérifier votre version.You can use the pwsh -version command to check your version.

      Notes

      L’extension VS Code d’Azure Functions ne prend peut-être pas encore en charge PowerShell 7.The Azure Functions VS Code extension may not support PowerShell 7 yet. Si PowerShell 7 n’est pas disponible comme option, sélectionnez PowerShell 6 pour le moment, puis mettez à jour la version manuellement après création de l’application de fonction.If PowerShell 7 is not available as an option, select PowerShell 6.x for now and update the version manually after the function app has been created.

    • Sélectionnez un emplacement pour les nouvelles ressources : Pour de meilleures performances, choisissez une région proche de vous.Select a location for new resources: For better performance, choose a region near you.

  3. Quand vous avez terminé, les ressources Azure suivantes sont créées dans votre abonnement et leurs noms reposent sur le nom de votre application de fonction :When completed, the following Azure resources are created in your subscription, using names based on your function app name:

    • Un groupe de ressources, qui est un conteneur logique pour les ressources associées.A resource group, which is a logical container for related resources.
    • Un compte de stockage Azure standard, qui conserve l’état et d’autres informations spécifiques à vos projets.A standard Azure Storage account, which maintains state and other information about your projects.
    • Un plan de consommation, qui définit l’hôte sous-jacent pour votre application de fonction serverless.A consumption plan, which defines the underlying host for your serverless function app.
    • Une application de fonction, qui fournit l’environnement d’exécution de votre code de fonction.A function app, which provides the environment for executing your function code. 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.A function app lets you group functions as a logical unit for easier management, deployment, and sharing of resources within the same hosting plan.
    • Une instance Application Insights connectée à l’application de fonction, qui effectue le suivi de l’utilisation de votre fonction serverless.An Application Insights instance connected to the function app, which tracks usage of your serverless function.

    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é.A notification is displayed after your function app is created and the deployment package is applied.

  4. Si vous n’avez pas pu sélectionner PowerShell 7 avant lors de la création de l’application de fonction, appuyez sur F1 (ou Ctrl/Cmd+Shift+P) pour ouvrir la palette de commandes.If you were unable to select PowerShell 7 earlier when creating the function app, press F1 (or Ctrl/Cmd+Shift+P) to open the command palette. Dans la palette de commandes, recherchez et sélectionnez Azure Functions: Upload Local Settings....In the command palette, search for and select Azure Functions: Upload Local Settings.... Suivez les invites pour sélectionner l’application de fonction que vous avez créée.Follow the prompts to select the function app you created. Si vous êtes invité à remplacer les paramètres existants, sélectionnez Non pour tout.If prompted to overwrite existing settings, select No to all.

  5. Sélectionnez Afficher la sortie de dans cette notification pour afficher les résultats de la création et du déploiement, y compris les ressources Azure que vous avez créées.Select View Output in this notification to view the creation and deployment results, including the Azure resources that you created. Si vous manquez la notification, sélectionnez l’icône de cloche dans le coin inférieur droit pour la voir de nouveau.If you miss the notification, select the bell icon in the lower right corner to see it again.

    Créer une notification de fin

Tester votre fonction dans AzureTest your function in Azure

  1. Copiez l’URL du déclencheur HTTP à partir du panneau Sortie.Copy the URL of the HTTP trigger from the Output panel. L’URL qui appelle la fonction déclenchée via HTTP doit se présenter sous ce format : http://<functionappname>.azurewebsites.net/api/orchestrators/HelloOrchestratorThe URL that calls your HTTP-triggered function should be in this format: http://<functionappname>.azurewebsites.net/api/orchestrators/HelloOrchestrator

  2. Collez cette nouvelle URL de requête HTTP dans la barre d’adresse de votre navigateur.Paste this new URL for the HTTP request into your browser's address bar. Vous devez obtenir la même réponse d’état que lorsque vous avez utilisé l’application publiée.You should get the same status response as before when using the published app.

Étapes suivantesNext steps

Vous avez utilisé Visual Studio Code pour créer et publier une application de fonction durable PowerShell.You have used Visual Studio Code to create and publish a PowerShell durable function app.