Partager via


Coder et tester Azure Functions localement

Dans la mesure du possible, vous devez créer et valider votre projet de code Azure Functions dans un environnement de développement local. Azure Functions Core Tools fournit une version de runtime local d’Azure Functions qui s’intègre aux outils de développement populaires pour un développement intégré, un débogage et des déploiements. Vos fonctions locales peuvent même se connecter aux services Azure en direct.

Cet article fournit des conseils partagés pour le développement local, tels que l’utilisation du fichierlocal.settings.json. Il est également lié à des conseils spécifiques à l’environnement de développement.

Conseil / Astuce

Vous trouverez des informations détaillées sur le développement de fonctions localement dans les articles d’aide spécifiques à l’IDE liés.

Environnements de développement local

La façon dont vous développez des fonctions sur votre ordinateur local dépend de votre langage et de vos préférences d’outils. Veillez à choisir votre langue préférée en haut de l’article.

Conseil / Astuce

Tout le développement local s’appuie sur Azure Functions Core Tools pour fournir le runtime Functions pour le débogage dans un environnement local.

Vous pouvez utiliser ces environnements de développement pour coder des fonctions localement dans votre langage préféré :

Environnement Description
Visual Studio Les outils Azure Functions sont inclus dans la charge de travail de développement Azure de Visual Studio. Vous permet de compiler et de déployer votre code de fonction C# sur Azure en tant que bibliothèque de classes .NET. Inclut les principaux outils pour effectuer des test en local. Pour en savoir plus, consultez Créer votre première fonction C# dans Azure à l’aide de Visual Studio
Visual Studio Code L’extension Azure Functions pour Visual Studio Code ajoute la prise en charge de Functions à Visual Studio Code. Requiert les outils de base. Prend en charge le développement sur Linux, macOS et Windows. Pour en savoir plus, voir Créer votre première fonction à l’aide de Visual Studio Code.
Invite de commandes terminal Azure Functions Core Tools fournit le runtime et les modèles principaux de création de fonctions, ce qui permet le développement local. Prend en charge le développement sur Linux, macOS et Windows. Pour en savoir plus, consultez Créer une fonction C# dans Azure à partir de la ligne de commande.
Environnement Description
Maven L’archétype Maven utilise Core Tools pour permettre le développement de fonctions Java. Prend en charge le développement sur Linux, macOS et Windows. Pour en savoir plus, consultez Créer votre première fonction dans Azure avec Java et Maven.
Visual Studio Code L’extension Azure Functions pour Visual Studio Code ajoute la prise en charge de Functions à Visual Studio Code. Requiert les outils de base. Prend en charge le développement sur Linux, macOS et Windows. Pour en savoir plus, voir Créer votre première fonction à l’aide de Visual Studio Code.
IntelliJ IDEA L’archétype Maven et Core Tools vous permet de développer vos fonctions à l’aide d’IntelliJ. Pour plus d’informations, consultez Créer votre première fonction Java dans Azure à l’aide d’IntelliJ.
Éclipse L’archétype Maven et Core Tools vous permet de développer vos fonctions à l’aide d’Eclipse. Pour plus d’informations, consultez Créer votre première fonction Java dans Azure à l’aide d’Ecplise.
Environnement Description
Visual Studio Code L’extension Azure Functions pour Visual Studio Code ajoute la prise en charge de Functions à Visual Studio Code. Requiert les outils de base. Prend en charge le développement sur Linux, macOS et Windows. Pour en savoir plus, voir Créer votre première fonction à l’aide de Visual Studio Code.
Invite de commandes terminal Azure Functions Core Tools fournit le runtime et les modèles principaux de création de fonctions, ce qui permet le développement local. Prend en charge le développement sur Linux, macOS et Windows. Pour plus d’informations, consultez Créer une fonction Node.js dans Azure à partir de la ligne de commande.
Environnement Description
Visual Studio Code L’extension Azure Functions pour Visual Studio Code ajoute la prise en charge de Functions à Visual Studio Code. Requiert les outils de base. Prend en charge le développement sur Linux, macOS et Windows. Pour en savoir plus, voir Créer votre première fonction à l’aide de Visual Studio Code.
Invite de commandes terminal Azure Functions Core Tools fournit le runtime et les modèles principaux de création de fonctions, ce qui permet le développement local. Prend en charge le développement sur Linux, macOS et Windows. Pour plus d’informations, consultez Créer une fonction PowerShell dans Azure à partir de la ligne de commande.
Environnement Description
Visual Studio Code L’extension Azure Functions pour Visual Studio Code ajoute la prise en charge de Functions à Visual Studio Code. Requiert les outils de base. Prend en charge le développement sur Linux, macOS et Windows. Pour en savoir plus, voir Créer votre première fonction à l’aide de Visual Studio Code.
Invite de commandes terminal Azure Functions Core Tools fournit le runtime et les modèles principaux de création de fonctions, ce qui permet le développement local. Prend en charge le développement sur Linux, macOS et Windows. Pour plus d’informations, consultez Créer une fonction Python dans Azure à partir de la ligne de commande.

Chacun de ces environnements de développement local vous permet de créer des projets d’application de fonction et d’utiliser des modèles de fonctions prédéfinis pour créer de nouvelles fonctions. Ils intègrent les outils principaux afin que vous puissiez tester et déboguer vos fonctions selon le runtime Functions réel sur votre propre ordinateur comme vous le feriez pour toute autre application. Vous pouvez également publier votre projet d’application de fonction à partir d’un de ces environnements sur Azure.

Fichiers projet locaux

Un répertoire de projet Functions contient les fichiers suivants dans le dossier racine du projet, quel que soit le langage :

Nom de fichier Description
host.json Pour plus d’informations, consultez la référence host.json.
local.settings.json Paramètres utilisé par les outils de base lors de l’exécution locale, y compris les paramètres de l’application. Pour en savoir plus, consultez la section local.settings.file.
.gitignore Empêche la publication accidentelle du fichier local.settings.json dans un référentiel Git. Pour en savoir plus, consultez la section local.settings.file.
.vscode\extensions.json Fichier de paramètres utilisé lors de l’ouverture du dossier du projet dans Visual Studio Code.

Les autres fichiers du projet dépendent de votre langage et des fonctions spécifiques. Pour plus d’informations, consultez le guide du développeur pour votre langage.

Fichier de paramètres locaux

Le local.settings.json fichier stocke les paramètres d’application et les paramètres utilisés par les outils de développement locaux. Les paramètres du fichier local.settings.json sont utilisés uniquement lorsque vous exécutez votre projet localement. Lorsque vous publiez votre projet sur Azure, veillez également à ajouter tous les paramètres requis aux paramètres de l’application pour l’application de fonction.

Important

Étant donné que le fichier local.settings.json peut contenir des secrets, tels que des chaînes de connexion, vous devez utiliser la prudence lors de la validation du contrôle de code source. Les outils qui prennent en charge Functions permettent de synchroniser les paramètres dans le local.settings.json fichier avec les paramètres d’application dans l’application de fonction sur laquelle votre projet est déployé.

Le local.settings.json fichier a cette structure :

{
  "IsEncrypted": false,
  "Values": {
    "FUNCTIONS_WORKER_RUNTIME": "<language worker>",
    "AzureWebJobsStorage": "<connection-string>",
    "MyBindingConnection": "<binding-connection-string>",
    "AzureWebJobs.HttpExample.Disabled": "true"
  },
  "Host": {
    "LocalHttpPort": 7071,
    "CORS": "*",
    "CORSCredentials": false
  },
  "ConnectionStrings": {
    "SQLConnectionString": "<sqlclient-connection-string>"
  }
}

Ces paramètres sont pris en charge lorsque vous exécutez des projets localement :

Paramètre Description
IsEncrypted Lorsque ce paramètre est défini sur true, toutes les valeurs sont chiffrées à l’aide d’une clé d’ordinateur local. Utilisé avec les commandes func settings. La valeur par défaut est false. Vous voudrez peut-être chiffrer le fichier local.settings.json sur votre ordinateur local lorsqu’il contient des secrets, tels que des chaînes de connexion de service. L’hôte déchiffre automatiquement les paramètres quand il s’exécute. Utilisez la commande func settings decrypt avant d’essayer de lire les paramètres chiffrés localement.
Values Collection de paramètres d’application utilisés lorsqu’un projet est exécuté localement. Ces paires clé-valeur (chaîne-chaîne) correspondent aux paramètres d’application dans votre Function App dans Azure, tels que AzureWebJobsStorage. Plusieurs déclencheurs et liaisons ont une propriété qui fait référence à un paramètre d’application de chaîne de connexion, par exemple Connection pour le déclencheur de stockage blob. Pour ces propriétés, vous avez besoin d’un paramètre d’application défini dans le tableau Values. Consultez le tableau suivant pour une liste des paramètres couramment utilisés.
Les valeurs doivent être des chaînes et non des objets JSON ou des tableaux. Les noms des paramètres ne peuvent pas contenir de trait de soulignement double (__) ou de signe deux points (:). Les caractères de soulignement double sont réservés par le runtime, et le signe deux-points est réservé pour la prise en charge de l’injection de dépendances.
Host Les paramètres de cette section personnalisent le processus hôte Functions lorsque vous exécutez localement des projets. Ces paramètres sont séparés des paramètres host.json, qui s’appliquent également lorsque vous exécutez localement des projets dans Azure.
LocalHttpPort Définit le port par défaut utilisé lors de l’exécution de l’hôte Functions local (func host start et func run). --portL’option de ligne de commande est prioritaire sur ce paramètre. Par exemple, lors de l’exécution dans l’IDE Visual Studio, vous pouvez changer le numéro de port en accédant à la fenêtre « Propriétés du projet -> Débogage » et en spécifiant explicitement le numéro de port dans une commande host start --port <your-port-number> qui peut être fournie dans le champ « Arguments de l’application ».
CORS Définit les origines autorisées pour cross-origin resource sharing (CORS). Les origines sont fournies sous la forme d’une liste séparée par des virgules, sans espaces. La valeur de caractère générique (*) est prise en charge. Elle autorise les demandes de toute origine.
CORSCredentials Lorsque qu’il est défini sur true, autorise withCredentials les requêtes.
ConnectionStrings Une collection. N’utilisez pas cette collection pour les chaînes de connexion utilisées par vos liaisons de fonction. Cette collection est utilisée seulement par les infrastructures qui obtiennent généralement les chaînes de connexion à partir de la ConnectionStringssection d’un fichier de configuration, comme Entity Framework. Les chaînes de connexion dans cet objet sont ajoutées à l’environnement avec le type de fournisseur System.Data.SqlClient. Les éléments de cette collection ne sont pas publiés sur Azure avec d’autres paramètres d’application. Vous devez explicitement ajouter ces valeurs à la collection Connection strings des paramètres de Function App. Si vous créez un SqlConnection dans votre code de fonction, vous devez stocker la valeur de la chaîne de connexion et vos autres connexions dans Paramètres d’application dans le portail.

Les paramètres d’application suivants peuvent être inclus dans le tableau Values lors d’une exécution locale :

Paramètre Valeurs Description
AzureWebJobsStorage Chaîne de connexion de compte de stockage ou
UseDevelopmentStorage=true
Contient la chaîne de connexion pour un compte de stockage Azure. Obligatoire lors de l’utilisation de déclencheurs autres que HTTP. Pour plus d’informations, consultez les informations de référence sur AzureWebJobsStorage.
Lorsque vous installez l’émulateur Azurite localement et définissez AzureWebJobsStorage sur UseDevelopmentStorage=true, Core Tools utilise l’émulateur. Pour plus d’informations, consultez Émulateur de stockage local.
AzureWebJobs.<FUNCTION_NAME>.Disabled true|false Pour désactiver une fonction qui s’exécute localement, ajoutez "AzureWebJobs.<FUNCTION_NAME>.Disabled": "true" à la collection, où <FUNCTION_NAME> est le nom de la fonction. Pour en savoir plus, consultez Guide pratique pour désactiver des fonctions dans Azure Functions.
FUNCTIONS_WORKER_RUNTIME dotnet
dotnet-isolated
node
java
powershell
python
Indique le langage ciblé du runtime Functions. Obligatoire pour la version 2.x et ultérieure du runtime Functions. Ce paramètre est généré pour votre projet par Core Tools. Pour plus d’informations, consultez les informations de référence sur FUNCTIONS_WORKER_RUNTIME.
FUNCTIONS_WORKER_RUNTIME_VERSION ~7 Indique qu’il faut utiliser PowerShell 7 lors de l’exécution locale. S’il n’est pas défini, PowerShell Core 6 est utilisé. Ce paramètre est utilisé seulement lors d’une exécution locale. La version du runtime PowerShell est déterminée par le paramètre de configuration du site powerShellVersion, en cas d’exécution dans Azure, qui peut être défini dans le portail.

Pour savoir comment utiliser des valeurs à partir du values tableau en tant que variables d’environnement dans votre code de fonction, consultez les variables d’environnement dans le guide du développeur.

Pour savoir comment utiliser des valeurs à partir du values tableau en tant que variables d’environnement dans votre code de fonction, consultez les variables d’environnement dans le guide du développeur.

Pour savoir comment utiliser des valeurs à partir du values tableau en tant que variables d’environnement dans votre code de fonction, consultez les variables d’environnement dans le guide du développeur.

Pour savoir comment utiliser des valeurs à partir du values tableau en tant que variables d’environnement dans votre code de fonction, consultez les variables d’environnement dans le guide du développeur.

Synchroniser les paramètres

Lorsque vous développez vos fonctions localement, tous les paramètres locaux requis par votre application doivent également être présents dans les paramètres d’application de l’application de fonction sur laquelle votre code est déployé. Vous devrez peut-être également télécharger les paramètres actuels à partir de l’application de fonction vers votre projet local. Bien que vous puissiez configurer manuellement les paramètres d’application dans le portail Azure, les outils suivants vous permettent également de synchroniser les paramètres d’application avec les paramètres locaux de votre projet :

Déclencheurs et liaisons

Lorsque vous développez vos fonctions localement, vous devez prendre en compte les comportements de déclenchement et de liaison. Pour les déclencheurs HTTP, vous pouvez appeler le point de terminaison HTTP sur l’ordinateur local, à l’aide de http://localhost/. Pour les fonctions non déclenchées par HTTP, de nombreuses options à exécuter localement existent :

  • Le moyen le plus simple de tester des liaisons pendant le développement local consiste à utiliser des chaînes de connexion qui ciblent les services Azure en direct. Vous pouvez cibler les services en direct en ajoutant les paramètres de chaîne de connexion appropriés dans le tableau Values du fichier local.settings.json. Lorsque vous effectuez cette opération, les exécutions locales pendant les tests peuvent affecter vos services de production. Au lieu de cela, envisagez de configurer des services distincts à utiliser pendant le développement et le test, puis basculez vers différents services pendant la production.
  • Pour les déclencheurs basés sur le stockage, vous pouvez utiliser un émulateur de stockage local.
  • Vous pouvez exécuter manuellement des fonctions de déclencheur non HTTP au moyen de points de terminaison spéciaux d’administrateur. Pour plus d’informations, consultez Exécuter manuellement une fonction non déclenchée par HTTP.

Pendant les tests locaux, vous devez exécuter localement l’hôte fourni par Core Tools (func.exe). Pour plus d’informations, consultez Azure Functions Core Tools.

Outils de test HTTP

Pendant le développement, il est facile d’appeler l’un de vos points de terminaison de fonction depuis un navigateur web quand ils prennent en charge la méthode HTTP GET. Cependant, pour d’autres méthodes HTTP qui prennent en charge des charges utiles, comme POST ou PUT, vous devez utiliser un outil de test HTTP pour créer et envoyer ces requêtes HTTP à vos points de terminaison de fonction.

Attention

Pour les scénarios où vos requêtes doivent inclure des données sensibles, veillez à utiliser un outil qui protège vos données et réduit le risque d’exposition des données sensibles au public. Les données sensibles que vous devez protéger peuvent inclure les informations d’identification, les secrets, les jetons d’accès, les clés API, les données de géolocalisation, même les données personnelles.

Vous pouvez sécuriser vos données en choisissant un outil de test HTTP qui fonctionne hors connexion ou localement, ne synchronise pas vos données sur le cloud et ne nécessite pas de vous connecter à un compte en ligne. Certains outils peuvent également protéger vos données contre une exposition accidentelle en implémentant des fonctionnalités de sécurité spécifiques.

Évitez d’utiliser des outils qui stockent de façon centralisée votre historique des requêtes HTTP (y compris les informations sensibles), qui ne respectent pas les meilleures pratiques de sécurité ou qui ne respectent pas les impératifs de confidentialité des données.

Envisagez d’utiliser un de ces outils pour envoyer de façon sécurisée des requêtes HTTP à vos points de terminaison de fonction :

Émulateur de stockage local

Pendant le développement local, vous pouvez utiliser l’émulateur Azurite local pour tester les fonctions avec des liaisons du Stockage Azure (Stockage File d’attente, Stockage Blob et Stockage Table), sans avoir à vous connecter aux services de stockage distants. Azurite s’intègre à Visual Studio Code et Visual Studio. Vous pouvez également l’exécuter à partir de l’invite de commandes, à l’aide de npm. Pour plus d’informations, consultez Utiliser l’émulateur Azurite à des fins de développement local pour Stockage Azure.

Le paramètre suivant de la collection Values du fichier local.settings.json indique à l’hôte Functions local d’utiliser Azurite pour la connexion AzureWebJobsStorage par défaut :

"AzureWebJobsStorage": "UseDevelopmentStorage=true"

Avec cette valeur de paramètre, tous les déclencheurs et les liaisons du Stockage Azure qui utilisent AzureWebJobsStorage comme connexion se connecteront à Azurite lors de l’exécution locale. Gardez les considérations ci-dessous à l’esprit lors de l’utilisation de l’émulation de stockage pendant l’exécution locale :

  • Azurite doit être installé et en cours d’exécution.
  • Vous devez effectuer un test avec une connexion de stockage réelle aux services Azure avant de publier sur Azure.
  • Lorsque vous publiez votre projet, ne publiez pas le paramètre AzureWebJobsStorage en tant que UseDevelopmentStorage=true. Dans Azure, le paramètre AzureWebJobsStorage doit toujours être la chaîne de connexion du compte de stockage utilisé par votre application de fonction. Pour plus d’informations, consultez AzureWebJobsStorage.