Coder et tester Azure Functions localement

Bien qu’il soit possible de développer et tester Azure Functions dans le Azure portal, de nombreux développeurs préfèrent une expérience de développement local. Lorsque vous utilisez Functions, il devient plus facile d’utiliser votre éditeur de code et vos outils de développement préférés pour développer et tester des fonctions sur votre ordinateur local. Vos fonctions locales peuvent être connectées aux services Azure actifs, et vous pouvez les déboguer sur votre ordinateur local à l’aide du runtime Functions complet.

Cet article fournit des liens vers des environnements de développement spécifiques pour votre langage par défaut. Il fournit également des conseils partagés pour le développement local, comme l’utilisation du fichier local.settings.json.

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. Les environnements du tableau suivant prennent en charge le développement local :

Environnement Languages Description
Visual Studio Code C# (in-process)
C# (processus Worker isolé)
JavaScript
PowerShell
Python
L’extension Azure Functions pour VS Code ajoute la prise en charge de Functions à VS Code. Requiert les outils de base. Prend en charge le développement sur Linux, macOS et Windows, lorsque vous utilisez la version 2.x des outils de base. Pour en savoir plus, voir Créer votre première fonction à l’aide de Visual Studio Code.
Invite de commandes terminal C# (in-process)
C# (processus Worker isolé)
JavaScript
PowerShell
Python
Azure Functions Core Tools fournit le runtime et les modèles principaux de création de fonctions, ce qui permet le développement local. La version 2.x prend en charge le développement sur Linux, macOS et Windows. Tous les environnements s’appuient sur les outils de base pour le runtime Functions local.
Visual Studio C# (in-process)
C# (processus Worker isolé)
Les outils Azure Functions sont inclus dans la charge de travail de développement Azure de Visual Studio, à partir de Visual Studio 2019. Vous permet de compiler les fonctions dans une bibliothèque de classes et de publier le fichier .dll dans Azure. Inclut les principaux outils pour effectuer des test en local. Pour en savoir plus, voir Développer Azure Functions à l’aide de Visual Studio.
Maven (divers) Java L’archétype Maven prend en charge les outils de base pour permettre le développement de fonctions Java. La version 2.x 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. Prend également en charge le développement à l’aide d’Eclipse et d’IntelliJ IDEA.

Notes

Ne mélangez pas un développement local avec un développement de portail dans une même application de fonction. Lorsque vous créez et publiez des fonctions à partir d'un projet local, vous ne devez pas maintenir ni modifier le code du projet dans le portail.

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.

Fichier de paramètres locaux

Le fichier local.settings.json stocke des paramètres d’application et des paramètres utilisés par des outils de développement locaux. Les paramètres dans le fichier local.settings.json sont uniquement utilisés 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, comme des chaînes de connexion, vous ne devez jamais le stocker dans un référentiel à distance. Les outils qui prennent en charge Functions permettent de synchroniser les paramètres du fichier local.settings.json avec les paramètres d’application dans l’application de fonction où votre projet est déployé.

Le fichier de paramètres locaux possède la structure suivante :

{
  "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 Connection. 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 ConnectionStrings. 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 SqlConnection 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.

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 dans 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. 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. Dans ce cas, les exécutions locales effectuées pendant les tests impacteront les données du service en direct. Pour cette raison, nous vous conseillons de configurer des services distincts pour le développement et pour les tests, puis de basculer vers d’autres services pendant la production. Vous pouvez également utiliser un émulateur de stockage local.

É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"

Une fois ce paramètre en place, tous les déclencheurs et les liaisons du Stockage Azure qui utilisent AzureWebJobsStorage comme connexion se connecteront à Azurite lors de l’exécution locale. Pendant l’exécution locale, Azurite doit être installé et en cours d’exécution. L’émulateur est utile lors du développement, mais vous devez le tester avec une connexion de stockage réelle avant le déploiement. Lorsque vous publiez votre projet, ne publiez pas ce paramètre. Vous devez utiliser une chaîne de connexion Stockage Azure dans les mêmes paramètres de votre application de fonction Azure.

Étapes suivantes