Guide de développement Azure FunctionsAzure Functions developers guide

Dans Azure Functions, des fonctions spécifiques partagent quelques concepts techniques et composants de base, quels que soient le langage et la liaison que vous utilisez.In Azure Functions, specific functions share a few core technical concepts and components, regardless of the language or binding you use. Avant de passer à l'apprentissage des détails propres à un langage ou une liaison donnés, veillez à lire cette présentation qui s'applique à l’ensemble d’entre eux.Before you jump into learning details specific to a given language or binding, be sure to read through this overview that applies to all of them.

Cet article suppose que vous avez déjà lu la vue d'ensemble d'Azure Functions et que vous connaissez les concepts du Kit de développement logiciel (SDK) WebJobs, notamment les déclencheurs, les liaisons et le runtime JobHost.This article assumes that you've already read the Azure Functions overview and are familiar with WebJobs SDK concepts such as triggers, bindings, and the JobHost runtime. Azure Functions est fondé sur le SDK WebJobs.Azure Functions is based on the WebJobs SDK.

Code de fonctionFunction code

La fonction est le principal concept d'Azure Functions.A function is the primary concept in Azure Functions. Vous écrivez du code pour une fonction dans le langage de votre choix et enregistrez le code et les fichiers de configuration dans le même dossier.You write code for a function in a language of your choice and save the code and configuration files in the same folder. La configuration est nommée function.json, et contient les données de configuration JSON.The configuration is named function.json, which contains JSON configuration data. Plusieurs langages sont pris en charge, et chacun d’entre eux offre une expérience légèrement différente, optimisée pour fonctionner idéalement pour ce langage.Various languages are supported, and each one has a slightly different experience optimized to work best for that language.

Le fichier function.json définit les liaisons de fonction et d’autres paramètres de configuration.The function.json file defines the function bindings and other configuration settings. Le runtime utilise ce fichier pour déterminer les événements à surveiller et comment passer des données et renvoyer des données à partir de l’exécution de la fonction.The runtime uses this file to determine the events to monitor and how to pass data into and return data from function execution. Voici un exemple de fichier function.json.The following is an example function.json file.

{
    "disabled":false,
    "bindings":[
        // ... bindings here
        {
            "type": "bindingType",
            "direction": "in",
            "name": "myParamName",
            // ... more depending on binding
        }
    ]
}

Définissez la propriété disabled sur true pour empêcher l’exécution de la fonction.Set the disabled property to true to prevent the function from being executed.

La propriété bindings vous permet de configurer les liaisons et les déclencheurs.The bindings property is where you configure both triggers and bindings. Chaque liaison partage quelques paramètres communs et des paramètres propres à un type de liaison donné.Each binding shares a few common settings and some settings, which are specific to a particular type of binding. Chaque liaison requiert les paramètres suivants :Every binding requires the following settings:

PropriétéProperty Valeurs/typesValues/Types CommentairesComments
type chaînestring Type de liaison.Binding type. Par exemple, queueTrigger.For example, queueTrigger.
direction 'in', 'out''in', 'out' Indique si la liaison sert à recevoir des données dans la fonction ou à envoyer des données à partir de la fonction.Indicates whether the binding is for receiving data into the function or sending data from the function.
name chaînestring Le nom utilisé pour les données liées dans la fonction.The name that is used for the bound data in the function. Pour C#, il s’agit d’un nom d'argument ; pour JavaScript, il s’agit de la clé dans une liste de clés/valeurs.For C#, this is an argument name; for JavaScript, it's the key in a key/value list.

Conteneur de fonctionsFunction app

Une application de fonction fournit un contexte d’exécution dans Azure dans lequel vos fonctions s’exécutent.A function app provides an execution context in Azure in which your functions run. Un conteneur de fonctions est constitué d’une ou de plusieurs des fonctions individuelles qui sont gérées ensemble par Azure App Service.A function app is comprised of one or more individual functions that are managed together by Azure App Service. Toutes les fonctions d’un conteneur de fonctions partagent le même plan de tarification, le même déploiement continu et la même version du runtime.All of the functions in a function app share the same pricing plan, continuous deployment and runtime version. Considérez un conteneur de fonctions comme un moyen d’organiser et de gérer collectivement vos fonctions.Think of a function app as a way to organize and collectively manage your functions.

Note

À partir de la version 2.x du runtime Azure Functions, toutes les fonctions dans une application de fonction doivent être créées dans le même langage.Starting with version 2.x of the Azure Functions runtime, all functions in a function app must be authored in the same language.

RuntimeRuntime

Le runtime Azure Functions, également appelé hôte de script, est l’hôte sous-jacent qui écoute les événements, collecte et envoie les données et, enfin, exécute votre code.The Azure Functions runtime, or script host, is the underlying host that listens for events, gathers and sends data, and ultimately runs your code. Ce même hôte est utilisé par le SDK WebJobs.This same host is used by the WebJobs SDK.

Il existe également un hôte web qui gère les requêtes de déclencheur HTTP pour le runtime.There is also a web host that handles HTTP trigger requests for the runtime. Le fait d’avoir deux hôtes vous permet d’isoler le runtime du trafic frontal géré par l’hôte web.Having two hosts helps to isolate the runtime from the front end traffic managed by the web host.

Structure de dossiersFolder structure

Le code de toutes les fonctions d’une application de fonctions spécifique se trouve dans un dossier de projet racine qui contient un fichier de configuration d’hôte, ainsi qu’un ou plusieurs sous-dossiers.The code for all the functions in a specific function app is located in a root project folder that contains a host configuration file and one or more subfolders. Chaque sous-dossier contient le code d’une fonction distincte, comme dans la représentation suivante :Each subfolder contains the code for a separate function, as in the following representation:

FunctionApp
 | - host.json
 | - Myfirstfunction
 | | - function.json
 | | - ...  
 | - mysecondfunction
 | | - function.json
 | | - ...  
 | - SharedCode
 | - bin

Dans la version 2.x du runtime Functions, toutes les fonctions dans l’application de fonction doivent partager le même rôle de travail de langage.In version 2.x of the Functions runtime, all functions in the function app must share the same language worker.

Le fichier host.json, qui contient des configurations spécifiques du runtime, se trouve dans le dossier racine de l’application de fonction.The host.json file, which contains some runtime-specific configurations, is in the root folder of the function app. Un dossier bin contient les packages et autres fichiers de bibliothèque requis par l’application de fonction.A bin folder contains packages and other library files required by the function app. Consultez la configuration requise spécifique au langage d’un projet d’application de fonction :See the language-specific requirements for a function app project:

Quand vous configurez un projet pour déployer des fonctions sur une application de fonction dans Azure, vous pouvez traiter cette structure de dossiers comme le code de votre site.When setting-up a project for deploying functions to a function app in Azure, you can treat this folder structure as your site code. Nous vous recommandons d’utiliser un package de déploiement pour déployer votre projet sur votre application de fonction dans Azure.We recommend using package deployment to deploy your project to your function app in Azure. Vous pouvez également utiliser des outils existants tels que l’intégration et le déploiement continus et Azure DevOps.You can also use existing tools like continuous integration and deployment and Azure DevOps.

Note

Veillez à déployer votre fichier host.json et vos dossiers de fonction directement dans le dossier wwwroot.Make sure to deploy your host.json file and function folders directly to the wwwroot folder. N’incluez pas le dossier wwwroot dans vos déploiements.Do not include the wwwroot folder in your deployments. Sinon, vous vous retrouverez avec wwwroot\wwwroot dossiers.Otherwise, you end up with wwwroot\wwwroot folders.

Comment mettre à jour les fichiers du conteneur de fonctionsHow to update function app files

L’éditeur de fonctions intégré au portail Azure vous permet de mettre à jour le fichier function.json et le fichier de code pour une fonction.The function editor built into the Azure portal lets you update the function.json file and the code file for a function. Pour télécharger ou mettre à jour d’autres fichiers comme package.json ou project.json ou les dépendances, vous devez utiliser d’autres méthodes de déploiement.To upload or update other files such as package.json or project.json or dependencies, you have to use other deployment methods.

Les conteneurs de fonctions sont créés sur App Service, de sorte que toutes les options de déploiement disponibles sur les applications web standard le sont également sur les conteneurs de fonctions.Function apps are built on App Service, so all the deployment options available to standard web apps are also available for function apps. Voici des méthodes que vous pouvez utiliser pour télécharger ou mettre à jour les fichiers du conteneur de fonctions.Here are some methods you can use to upload or update function app files.

Utiliser des outils locaux pour la publicationUse local tools and publishing

Vous pouvez créer et publier des applications de fonction à l’aide de différents outils, notamment Visual Studio, Visual Studio Code, IntelliJ, Eclipse et Azure Functions Core Tools.Function apps can be authored and published using various tools, including Visual Studio, Visual Studio Code, IntelliJ, Eclipse, and the Azure Functions Core Tools. Pour plus d’informations, consultez Coder et tester Azure Functions localement.For more information, see Code and test Azure Functions locally.

Déploiement continuContinuous deployment

Suivez les instructions de la rubrique Déploiement continu pour Azure Functions.Follow the instructions in the topic Continuous deployment for Azure Functions.

Exécution en parallèleParallel execution

Lorsque plusieurs événements de déclenchement se produisent plus rapidement qu'un runtime de fonction monothread ne peut les traiter, le runtime peut appeler la fonction plusieurs fois en parallèle.When multiple triggering events occur faster than a single-threaded function runtime can process them, the runtime may invoke the function multiple times in parallel. Si un conteneur de fonctions utilise le plan d’hébergement de consommation, il peut monter automatiquement augmenter la taille des instances.If a function app is using the Consumption hosting plan, the function app could scale out automatically. Que l’application s’exécute sur le plan d’hébergement de consommation ou sur un plan d’hébergement App Service standard, chaque instance de l’application de fonction peut traiter en parallèle des appels de fonction simultanés en utilisant plusieurs threads.Each instance of the function app, whether the app runs on the Consumption hosting plan or a regular App Service hosting plan, might process concurrent function invocations in parallel using multiple threads. Le nombre maximal d’appels de fonction simultanés dans chaque instance de chaque application de fonction varie en fonction du type de déclencheur utilisé, ainsi que des ressources utilisées par d’autres fonctions au sein de l’application de fonction.The maximum number of concurrent function invocations in each function app instance varies based on the type of trigger being used as well as the resources used by other functions within the function app.

Contrôle de version du runtime FunctionsFunctions runtime versioning

Vous pouvez configurer la version du runtime Functions en utilisant le paramètre d’application FUNCTIONS_EXTENSION_VERSION.You can configure the version of the Functions runtime using the FUNCTIONS_EXTENSION_VERSION app setting. Par exemple, la valeur « ~2 » indique que votre application de fonction utilise 2.x comme version principale.For example, the value "~2" indicates that your Function App will use 2.x as its major version. Les applications Function sont mises à niveau pour chaque nouvelle version secondaire lorsqu’elles sont disponibles.Function Apps are upgraded to each new minor version as they are released. Pour obtenir plus d’informations, notamment sur la façon d’afficher la version exacte de votre application de fonction, consultez Guide pratique pour cibler des versions du runtime Azure Functions.For more information, including how to view the exact version of your function app, see How to target Azure Functions runtime versions.

RéférentielsRepositories

Le code pour Azure Fonctions est open source et stocké dans des dépôts GitHub :The code for Azure Functions is open source and stored in GitHub repositories:

LiaisonsBindings

Voici un tableau de toutes les liaisons prises en charge.Here is a table of all supported bindings.

Le tableau suivant présente les liaisons qui sont prises en charge dans les deux versions majeures du runtime Azure Functions.The following table shows the bindings that are supported in the two major versions of the Azure Functions runtime.

typeType 1.x1.x 2.x12.x1 DéclencheurTrigger EntréeInput SortieOutput
Stockage d’objets blobBlob Storage
Cosmos DBCosmos DB
Event GridEvent Grid
Hubs d'événementsEvent Hubs
Fichier externe2External File2
Table externe2External Table2
HTTPHTTP
Microsoft Graph
Tableaux Excel
Microsoft Graph
Excel tables
Microsoft Graph
Fichiers OneDrive
Microsoft Graph
OneDrive files
Microsoft Graph
E-mail Outlook
Microsoft Graph
Outlook email
Microsoft Graph
Événements
Microsoft Graph
Events
Microsoft Graph
Jetons d’authentification
Microsoft Graph
Auth tokens
Mobile AppsMobile Apps
Notification HubsNotification Hubs
Stockage de files d’attenteQueue storage
SendGridSendGrid
Service BusService Bus
Stockage TableTable storage
MinuteurTimer
TwilioTwilio
WebhooksWebhooks

1 Dans 2.x, toutes les liaisons à l’exception de HTTP et du minuteur doivent être inscrites.1 In 2.x, all bindings except HTTP and Timer must be registered. Consultez Inscrire des extensions de liaison.See Register binding extensions.

2 Expérimental : non pris en charge et susceptible d’être abandonné à l’avenir.2 Experimental — not supported and might be abandoned in the future.

Vous rencontrez des problèmes avec des erreurs de liaisons ?Having issues with errors coming from the bindings? Consultez la documentation Codes d’erreur de liaison d’Azure Functions.Review the Azure Functions Binding Error Codes documentation.

Problèmes liés aux rapportsReporting Issues

ItemItem DescriptionDescription LienLink
RuntimeRuntime Hôte script, déclencheurs et liaisons, prise en charge linguistiqueScript Host, Triggers & Bindings, Language Support Signaler un problèmeFile an Issue
ModèlesTemplates Problèmes de code avec le modèle de créationCode Issues with Creation Template Signaler un problèmeFile an Issue
PortailPortal Problème d'interface utilisateur ou d'expérienceUser Interface or Experience Issue Signaler un problèmeFile an Issue

Étapes suivantesNext steps

Pour plus d’informations, consultez les ressources suivantes :For more information, see the following resources: