Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Utilisez Durable Functions, une fonctionnalité de Azure Functions, pour écrire des fonctions avec état dans un environnement serverless. Vous installez Durable Functions en installant l’extension Azure Functions dans Visual Studio Code. L’extension gère l’état, les points de contrôle et les redémarrages dans votre application.
Dans ce guide de démarrage rapide, vous utilisez l’extension Durable Functions dans Visual Studio Code pour créer et tester localement une application Durable Functions « hello world » dans Azure Functions. L’application Durable Functions orchestre et chaîne les appels à d’autres fonctions. Ensuite, vous publiez le code de fonction sur Azure. Les outils que vous utilisez sont disponibles via l’extension Visual Studio Code.
Remarque
Ce guide de démarrage rapide utilise le modèle de programmation v2, basé sur des décorateurs, pour Python. Ce modèle offre une structure de fichiers plus simple et est plus centrée sur le code que v1.
Prérequis
Pour effectuer ce démarrage rapide, les éléments suivants sont requis :
Visual Studio Code installé.
L’extension Visual Studio Code Azure Functions installée.
La dernière version de Azure Functions Core Tools installée.
Un outil de test HTTP qui garde vos données en sécurité. Pour découvrir plus d’informations, consultez Outils de test HTTP.
Un abonnement Azure pour le déploiement de l’application sur Azure.
Python version 3.7, 3.8, 3.9 ou 3.10 installée.
Si vous n'avez pas de compte Azure, créez un compte free avant de commencer.
Créer votre projet local
Dans cette section, vous utilisez Visual Studio Code pour créer un projet Azure Functions local.
Dans Visual Studio Code, sélectionnez F1 (ou Ctrl/Cmd+Maj+P) pour ouvrir la palette de commandes. À l’invite (
>), entrez, puis sélectionnez Azure Functions : Créer un projet.Capture d’écran de la fenêtre Créer une fonction.
Sélectionnez Parcourir. Dans la boîte de dialogue Sélectionner un dossier, accédez à un dossier à utiliser pour votre projet, puis choisissez Sélectionner.
En suivant les invites, saisissez les informations suivantes :
Invite Action Descriptif Sélectionner un langage pour votre projet d’application de fonction Sélectionnez Python. Crée un projet Python Functions local. Sélectionner une version Sélectionnez Azure Functions v4. Vous voyez cette option seulement quand Core Tools n’est pas déjà installé. Dans ce cas, Core Tools est installé la première fois que vous exécutez l’application. version Python Sélectionnez Python 3.7, Python 3.8, Python 3.9 ou Python 3.10. Visual Studio Code crée un environnement virtuel à l’aide de la version que vous sélectionnez. Sélectionner un modèle pour la première fonction de votre projet Sélectionnez Ignorer pour le moment. Sélectionner la façon dont vous souhaitez ouvrir votre projet Sélectionnez Ouvrir dans la fenêtre actuelle. Ouvre Visual Studio Code dans le dossier que vous avez sélectionné.
Visual Studio Code installe Azure Functions Core Tools s'il est nécessaire de créer un projet. 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 requirements.txt est également créé dans le dossier racine. Il spécifie les packages Python requis pour exécuter votre application de fonction.
Installer azure-functions-durable à partir de PyPI
Lorsque vous créez le projet, l’extension Azure Functions Visual Studio Code crée automatiquement un environnement virtuel avec votre version Python sélectionnée. Vous devez ensuite activer l’environnement virtuel dans un terminal et installer certaines dépendances requises par Azure Functions et Durable Functions.
Ouvrez le fichier requirements.txt dans l’éditeur et remplacez son contenu par le code suivant :
azure-functions azure-functions-durableDans le dossier actif, ouvrez le terminal intégré de l’éditeur (Ctrl+Maj+’).
Dans le terminal intégré, activez l’environnement virtuel dans le dossier actif, selon votre système d’exploitation.
- Linux
- macOS
- Windows
source .venv/bin/activate
Ensuite, dans le terminal intégré où l’environnement virtuel est activé, utilisez pip pour installer les packages que vous avez définis.
python -m pip install -r requirements.txt
Remarque
Vous devez installer azure-functions-durable v1.2.4 ou version ultérieure.
Créer vos fonctions
L’application Durable Functions la plus simple a trois fonctions :
- Fonction d’orchestrateur : un workflow qui orchestre d’autres fonctions.
- Fonction d’activité : une fonction appelée par la fonction d’orchestrateur. Elle effectue un travail et retourne éventuellement une valeur.
- fonction Client : fonction régulière dans Azure qui démarre une fonction d’orchestrateur. Cet exemple utilise une fonction déclenchée par HTTP.
Exemple de code
Pour créer une application Durable Functions de base à l’aide de ces trois types de fonctions, remplacez le contenu de function_app.py par le code Python suivant :
import azure.functions as func
import azure.durable_functions as df
myApp = df.DFApp(http_auth_level=func.AuthLevel.ANONYMOUS)
# An HTTP-triggered function with a Durable Functions client binding
@myApp.route(route="orchestrators/{functionName}")
@myApp.durable_client_input(client_name="client")
async def http_start(req: func.HttpRequest, client):
function_name = req.route_params.get('functionName')
instance_id = await client.start_new(function_name)
response = client.create_check_status_response(req, instance_id)
return response
# Orchestrator
@myApp.orchestration_trigger(context_name="context")
def hello_orchestrator(context):
result1 = yield context.call_activity("hello", "Seattle")
result2 = yield context.call_activity("hello", "Tokyo")
result3 = yield context.call_activity("hello", "London")
return [result1, result2, result3]
# Activity
@myApp.activity_trigger(input_name="city")
def hello(city: str):
return f"Hello {city}"
Consultez le tableau suivant pour obtenir une explication de chaque fonction et de son objectif dans l’exemple :
| Méthode | Descriptif |
|---|---|
hello_orchestrator |
Fonction d’orchestrateur, qui décrit le flux de travail. Dans ce cas, l’orchestration démarre, appelle trois fonctions dans une séquence, puis retourne les résultats des 3 fonctions triés dans une liste. |
hello |
La fonction d’activité, qui effectue le travail orchestré. La fonction retourne un message d’accueil simple à la ville passée en tant qu’argument. |
http_start |
Une fonction déclenchée par HTTP qui démarre une instance de l’orchestration et retourne une réponse . |
Remarque
Durable Functions prend également en charge le modèle de programmation Python v2 blueprints. Pour utiliser des blueprints, enregistrez vos fonctions blueprint à l’aide de la azure-functions-durableBlueprintclass. Vous pouvez inscrire le blueprint résultant comme d’habitude. Vous pouvez utiliser notre sample comme exemple.
Configurer l’émulateur de stockage
Vous pouvez utiliser Azurite, un émulateur pour stockage Azure, pour tester la fonction localement. Dans local.settings.json, définissez la valeur de sur , comme dans cet exemple :
{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "UseDevelopmentStorage=true",
"FUNCTIONS_WORKER_RUNTIME": "python"
}
}
Pour installer et démarrer l’exécution de l’extension Azurite dans Visual Studio Code, dans la palette de commandes, entrez Azurite : Démarrer et sélectionnez Entrée.
Vous pouvez utiliser d’autres options de stockage pour votre application Durable Functions. Pour plus d’informations sur les options de stockage et les avantages, consultez Durable Functions fournisseurs de stockage.
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. S'il n'est pas installé, vous êtes invité à installer ces outils la première fois que vous démarrez une fonction dans Visual Studio Code.
Pour tester votre fonction, définissez un point d’arrêt dans le code de la fonction d’activité. Sélectionnez F5 ou Déboguer : Démarrer le débogage dans la palette de commandes pour démarrer le projet d’application de fonction. La sortie de Core Tools s’affiche dans le panneau Terminal.
Remarque
Pour plus d’informations sur le débogage, consultez Durable Functions diagnostics.
Dans le panneau Terminal, copiez le point de terminaison d’URL de votre fonction déclenchée par HTTP.
Utilisez votre navigateur ou un outil de test HTTP pour envoyer une requête HTTP POST au point de terminaison d’URL.
Remplacez le dernier segment par le nom de la fonction d’orchestrateur (). L’URL doit ressembler à .
La réponse est le résultat initial de la fonction HTTP. Elle vous permet de savoir que l’orchestration durable a démarré correctement. Elle n’affiche pas encore le résultat final de l’orchestration. La réponse contient plusieurs URL utiles. Pour le moment, interrogez l’état de l’orchestration.
Copiez la valeur de l’URL pour , collez-la dans la barre d’adresse de votre navigateur, puis exécutez la requête. Vous pouvez également continuer à utiliser votre outil de test HTTP pour émettre la requête GET.
La requête interroge l’instance d’orchestration pour obtenir l’état. Vous devez voir que l’instance s’est terminée, et qu’elle inclut les sorties ou les résultats de la fonction durable. Elle se présente de façon similaire à cet exemple :
{ "name": "hello_orchestrator", "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" }Pour arrêter le débogage, dans Visual Studio Code, sélectionnez Maj+F5.
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.
Connectez-vous à Azure
Avant de pouvoir créer Azure ressources ou publier votre application, vous devez vous connecter à Azure.
Si vous n'êtes pas encore connecté, dans la barre Activity, sélectionnez l'icône Azure. Ensuite, sous Resources, sélectionnez Sign in to Azure.
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, sélectionnez Créer un compte Azure. Les étudiants peuvent sélectionner Créer un Azure pour le compte Étudiants.
Lorsque vous êtes invité dans le navigateur, sélectionnez votre compte Azure et 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éé.
Une fois la connexion réussie, vous pouvez fermer la nouvelle fenêtre du navigateur. Les abonnements appartenant à votre compte Azure sont affichés dans la barre latérale.
Créer l’application de fonction dans Azure
Dans cette section, vous allez créer une application de fonction dans le plan Flex Consumption, ainsi que des ressources associées dans votre abonnement Azure. La plupart des décisions de création de ressources sont prises pour vous en fonction de comportements par défaut. Pour plus de contrôle sur les ressources créées, vous devez plutôt créer votre application de fonction avec des options avancées.
Dans Visual Studio Code, sélectionnez F1 pour ouvrir la palette de commandes. À l’invite (
>), entrez, puis sélectionnez Azure Functions : Créer une application de fonction dans Azure.En suivant les invites, saisissez les informations suivantes :
Invite Action Sélectionner un abonnement Sélectionnez l’abonnement Azure à utiliser. L’invite n’apparaît pas quand vous n’avez qu’un seul abonnement visible sous Ressources. Entrez un nouveau nom d’application de fonction Entrez un nom global unique valide dans un chemin d’URL. Le nom que vous entrez est validé pour vous assurer qu'il est unique dans Azure Functions. Sélectionnez un emplacement pour les nouvelles ressources Sélectionnez une région Azure. Pour de meilleures performances, sélectionnez une région proche de vous. Seules les régions prises en charge par les plans Flex Consumption sont affichées. Sélectionner une pile d’exécution Sélectionnez la version du langage que vous exécutez actuellement au niveau local. Sélectionner le type d’authentification des ressources Sélectionnez Identité managée, qui est l’option la plus sécurisée pour la connexion au compte de stockage hôte par défaut. Dans le panneau Azure : Journal d'activité, l'extension Azure affiche l'état des ressources individuelles à mesure qu'elles sont créées dans Azure.
Lorsque l’application de fonction est créée, les ressources associées suivantes sont créées dans votre abonnement Azure. Les ressources sont nommées en fonction du nom que vous avez entré pour votre application de fonction.
- Un groupe de ressources, qui est un conteneur logique pour les ressources associées.
- 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 Azure App Service, qui définit l’hôte sous-jacent pour votre application de fonction.
- Un compte standard stockage Azure, utilisé par l’hôte Functions pour maintenir l’état et d’autres informations sur votre application de fonction.
- Une instance Application Insights connectée à l’application de fonction et qui fait le suivi de l’utilisation de vos fonctions dans l’application.
- Identité managée associée par l'utilisateur qui est ajoutée au rôle de Contributeur aux données blob de stockage dans le nouveau compte de stockage hôte par défaut.
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 requises par votre application de fonction sont créées en fonction du nom que vous entrez pour votre application de fonction. Par défaut, les ressources sont créées avec l’application de fonction dans le même nouveau groupe de ressources. Si vous voulez personnaliser les noms des ressources associées ou réutiliser des ressources existantes, publiez le projet en utilisant les options de création avancées.
Déployer le projet sur Azure
Important
Le déploiement sur une application de fonction existante remplace toujours le contenu de cette application dans Azure.
Dans la palette de commandes, entrez, puis sélectionnez Azure Functions : Déployer sur l’application de fonction.
Sélectionnez l’application de fonction que vous venez de créer. 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.
Une fois le déploiement terminé, sélectionnez View Output pour afficher les résultats de création et de déploiement, y compris les ressources Azure que vous avez créées. Si vous manquez la notification, sélectionnez l’icône de la cloche dans le coin inférieur droit pour la voir à nouveau.
Capture d’écran de la fenêtre Afficher la sortie.
Tester votre fonction dans Azure
Copiez l’URL du déclencheur HTTP à partir du panneau de sortie. L’URL qui appelle la fonction déclenchée par HTTP doit avoir le format suivant :
https://<functionappname>.azurewebsites.net/api/orchestrators/hello_orchestratorCollez la nouvelle URL pour la requête HTTP dans la barre d’adresse de votre navigateur. Quand vous utilisez l’application publiée, vous pouvez vous attendre à obtenir la même réponse d’état que celle que vous avez obtenue quand vous l’avez testée localement.
L’application Python Durable Functions que vous avez créée et publiée à l’aide de Visual Studio Code est prête à être utilisée.
Nettoyer les ressources
Si vous n’avez plus besoin des ressources que vous avez créées pour suivre le guide de démarrage rapide, pour éviter les coûts associés dans votre abonnement Azure, delete le groupe de ressources et toutes les ressources associées.
Contenu connexe
- Découvrez les modèles d’application common Durable Functions.
- En savoir plus sur Unit Testing Durable Functions dans Python