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 Présentation d’Azure Functions.This article assumes that you've already read the Azure Functions overview.

Code de fonctionFunction code

La fonction est le principal concept d'Azure Functions.A function is the primary concept in Azure Functions. Une fonction contient deux éléments importants - votre code, qui peut être écrit dans un certain nombre de langages, et, dans certaines configurations, le fichier function.json.A function contains two important pieces - your code, which can be written in a variety of languages, and some config, the function.json file. Pour les langages compilés, ce fichier de configuration est généré automatiquement à partir des annotations de votre code.For compiled languages, this config file is generated automatically from annotations in your code. Pour les langages de script, vous devez fournir le fichier de configuration vous-même.For scripting languages, you must provide the config file yourself.

Le fichier function.json définit le déclencheur, les liaisons de fonction et d’autres paramètres de configuration.The function.json file defines the function's trigger, bindings, and other configuration settings. Chaque fonction possède un seul déclencheur.Every function has one and only one trigger. Le runtime utilise ce fichier de configuration pour déterminer les événements à surveiller et comment passer des données et renvoyer des données à partir de l’exécution d’une fonction.The runtime uses this config file to determine the events to monitor and how to pass data into and return data from a 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
        }
    ]
}

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, déployées et mises à l’échelle ensemble.A function app is comprised of one or more individual functions that are managed, deployed, and scaled together. 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.

Notes

Toutes les fonctions d’une application de fonction doivent être créées dans le même langage.All functions in a function app must be authored in the same language. Dans les version précédentes du runtime Azure Functions, cela n’était pas obligatoire.In previous versions of the Azure Functions runtime, this wasn't required.

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:

La structure de dossiers ci-dessus est recommandée et utilisée par défaut pour une application de fonction.The above is the default (and recommended) folder structure for a Function app. Si vous souhaitez changer l’emplacement du code d’une fonction, modifiez la section scriptFile du fichier function.json.If you wish to change the file location of a function's code, modify the scriptFile section of the function.json file. Nous vous recommandons également d’utiliser un package de déploiement pour déployer votre projet sur votre application de fonction dans Azure.We also 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.

Notes

En cas de déploiement manuel d’un package, veillez à déployer votre fichier host.json et vos dossiers de fonction directement dans le dossier wwwroot.If deploying a package manually, 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.

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 a variety of 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.

Comment modifier des fonctions dans le portail AzureHow to edit functions in the Azure portal

L’éditeur de fonctions intégré au portail Azure vous permet de mettre à jour votre code et votre fichier function.json directement en ligne.The Functions editor built into the Azure portal lets you update your code and your function.json file directly inline. Cela n’est recommandé que pour les petites modifications ou les preuves de concept - la meilleure pratique est d’utiliser un outil de développement local comme VS Code.This is recommended only for small changes or proofs of concept - best practice is to use a local development tool like VS Code.

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
HTTP et WebhooksHTTP & Webhooks
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
SignalRSignalR
Stockage TableTable storage
MinuteurTimer
TwilioTwilio

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.

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: