Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier les répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de changer de répertoire.
Dans cet article, vous allez découvrir les concepts généraux entourant les déclencheurs et les liaisons pour les fonctions.
Les déclencheurs sont à l’origine de l’exécution d’une fonction. Un déclencheur définit la façon dont une fonction est appelée et une fonction doit avoir exactement un déclencheur. Les déclencheurs peuvent également transmettre des données à votre fonction, comme vous le feriez avec des appels de méthode.
La liaison à une fonction est un moyen de connecter de manière déclarative vos fonctions à d’autres ressources. Les liaisons passent des données dans votre fonction ( une liaison d’entrée) ou vous permettent d’écrire des données à partir de votre fonction (une liaison de sortie) à l’aide de paramètres de liaison. Votre déclencheur de fonction est essentiellement un type spécial de liaison d’entrée.
Vous pouvez combiner et adapter des liaisons selon les besoins spécifiques de votre fonctionnalité. Les liaisons sont facultatives et une fonction peut avoir une ou plusieurs liaisons d’entrée et/ou de sortie.
Les déclencheurs et les liaisons vous évitent d’avoir à coder en dur l’accès aux autres services. Votre fonction reçoit des données (par exemple, le contenu d’un message de la file d’attente) dans les paramètres de fonction. Vous envoyez des données (par exemple pour créer un message de la file d’attente) en utilisant la valeur de retour de la fonction.
Tenez compte des exemples suivants de la façon dont vous pouvez implémenter des fonctions :
| Exemple de scénario | Déclencheur | Liaison d’entrée | Liaison de sortie |
|---|---|---|---|
| Un nouveau message en file d’attente arrive, qui exécute une fonction pour écrire des données dans une autre file d’attente. | File d’attente* | Aucun | File d’attente* |
| Une tâche planifiée lit le contenu du stockage Blob Azure et crée un document Azure Cosmos DB. | Minuterie | Stockage Blob | Base de données Azure Cosmos DB |
| Azure Event Grid est utilisé pour lire une image à partir du stockage Blob et un document d’Azure Cosmos DB pour envoyer un e-mail. | Grid d'événements | Stockage d’objets blob et Azure Cosmos DB | SendGrid |
* Représente différentes files d’attente.
Ces exemples ne sont pas destinés à être exhaustifs, mais ils illustrent comment vous pouvez utiliser des déclencheurs et des liaisons ensemble. Pour obtenir un ensemble plus complet de scénarios, consultez scénarios Azure Functions.
Conseil
Azure Functions ne vous oblige pas à utiliser des liaisons d’entrée et de sortie pour vous connecter aux services Azure. Vous pouvez toujours créer un client du Kit de développement logiciel (SDK) Azure dans votre code et l’utiliser à la place pour vos transferts de données. Pour en savoir plus, référez-vous à la section Se connecter aux services.
Définitions de liaisons et de déclencheurs
L’exemple suivant montre une fonction déclenchée par HTTP avec une liaison de sortie qui écrit un message dans une file d’attente de stockage Azure.
Pour les fonctions de bibliothèque de classes C#, vous configurez des déclencheurs et des liaisons en décorant des méthodes et des paramètres avec des attributs C#. L’attribut spécifique que vous appliquez peut dépendre du modèle d’exécution C# :
Le déclencheur HTTP (HttpTrigger) est défini sur la méthode Run pour une fonction nommée HttpExample qui retourne un objet MultiResponse :
[Function("HttpExample")]
public static MultiResponse Run([HttpTrigger(AuthorizationLevel.Function, "get", "post")] HttpRequestData req,
FunctionContext executionContext)
{
Cet exemple montre la définition d’objet MultiResponse . La définition d’objet retourne HttpResponse à la requête HTTP et écrit un message dans une file d’attente de stockage à l’aide d’une liaison de QueueOutput :
public class MultiResponse
{
[QueueOutput("outqueue",Connection = "AzureWebJobsStorage")]
public string[] Messages { get; set; }
public HttpResponseData HttpResponse { get; set; }
}
Pour plus d’informations, consultez le Guide C# des modèles Worker isolés.
Les fonctions de script C# héritées utilisent un function.json fichier de définition. Pour plus d’informations, consultez la référence du développeur de script C# (.csx) Azure Functions.
Pour les fonctions Java, vous configurez des déclencheurs et des liaisons en annoteant des méthodes et des paramètres spécifiques. Ce déclencheur HTTP (@HttpTrigger) est défini sur la run méthode d’une fonction nommée HttpTriggerQueueOutput. La fonction écrit dans une file d’attente de stockage que l’annotation @QueueOutput définit sur le paramètre message :
@FunctionName("HttpExample")
public HttpResponseMessage run(
@HttpTrigger(name = "req", methods = {HttpMethod.GET, HttpMethod.POST}, authLevel = AuthorizationLevel.ANONYMOUS)
HttpRequestMessage<Optional<String>> request,
@QueueOutput(name = "msg", queueName = "outqueue",
connection = "AzureWebJobsStorage") OutputBinding<String> msg,
final ExecutionContext context) {
context.getLogger().info("Java HTTP trigger processed a request.");
Pour plus d’informations, consultez le guide des développeurs Java.
La façon dont vous définissez des déclencheurs et des liaisons pour les fonctions Node.js dépend de la version spécifique de Node.js pour Azure Functions :
Dans Node.js pour Azure Functions version 4, vous configurez des déclencheurs et des liaisons à l’aide d’objets exportés à partir du @azure/functions module. Pour plus d’informations, consultez le guide pour développeurs Node.js.
La http méthode sur l’objet exporté app définit un déclencheur HTTP. La méthode storageQueue sur output définit une liaison de sortie sur ce déclencheur.
const { app, output } = require('@azure/functions');
const queueOutput = output.storageQueue({
queueName: 'outqueue',
connection: 'MyStorageConnectionAppSetting',
});
app.http('httpTrigger1', {
methods: ['GET', 'POST'],
authLevel: 'anonymous',
extraOutputs: [queueOutput],
handler: async (request, context) => {
const body = await request.text();
context.extraOutputs.set(queueOutput, body);
return { body: 'Created queue item.' };
},
});
La http méthode sur l’objet exporté app définit un déclencheur HTTP. La méthode storageQueue sur output définit une liaison de sortie sur ce déclencheur.
import { app, HttpRequest, HttpResponseInit, InvocationContext, output } from '@azure/functions';
const queueOutput = output.storageQueue({
queueName: 'outqueue',
connection: 'MyStorageConnectionAppSetting',
});
export async function httpTrigger1(request: HttpRequest, context: InvocationContext): Promise<HttpResponseInit> {
const body = await request.text();
context.extraOutputs.set(queueOutput, body);
return { body: 'Created queue item.' };
}
app.http('httpTrigger1', {
methods: ['GET', 'POST'],
authLevel: 'anonymous',
extraOutputs: [queueOutput],
handler: httpTrigger1,
});
Cet exemple de fichier function.json définit la fonction :
{
"authLevel": "function",
"type": "httpTrigger",
"direction": "in",
"name": "Request",
"methods": [
"get",
"post"
]
},
{
"type": "http",
"direction": "out",
"name": "Response"
},
{
"type": "queue",
"direction": "out",
"name": "msg",
"queueName": "outqueue",
"connection": "AzureWebJobsStorage"
}
]
}
Pour plus d’informations, consultez le guide des développeurs PowerShell.
La façon dont la fonction est définie dépend de la version de Python pour Azure Functions :
Dans Python pour Azure Functions version 2, vous définissez la fonction directement dans le code à l’aide de décorateurs :
app = func.FunctionApp(http_auth_level=func.AuthLevel.ANONYMOUS)
@app.route(route="HttpExample")
@app.queue_output(arg_name="msg", queue_name="outqueue", connection="AzureWebJobsStorage")
def HttpExample(req: func.HttpRequest, msg: func.Out [func.QueueMessage]) -> func.HttpResponse:
logging.info('Python HTTP trigger function processed a request.')
Considérations relatives à la liaison
Tous les services ne prennent pas en charge les liaisons d’entrée et de sortie. Consultez votre extension de liaison spécifique pour des exemples de code spécifiques pour les liaisons.
La définition des déclencheurs et des liaisons varie selon le langage de développement. Veillez à sélectionner votre langue en haut de cet article.
Les noms de déclencheur et de liaison sont limités aux caractères alphanumériques et
_, le trait de soulignement.
Tâche d’ajouter des liaisons à une fonction
Vous pouvez connecter votre fonction à d’autres services en utilisant des liaisons d’entrée ou de sortie. Ajoutez une liaison en ajoutant ses définitions spécifiques à votre fonction. Pour savoir comment procéder, consultez Ajouter des liaisons à une fonction existante dans Azure Functions.
Azure Functions prend en charge plusieurs liaisons qui doivent être configurées correctement. Par exemple, une fonction peut simultanément lire des données d’une file d’attente (liaison d’entrée) et écrire des données dans une base de données (liaison de sortie).
Liaisons prises en charge
Ce tableau présente les liaisons qui sont prises en charge dans les versions majeures du runtime Azure Functions :
| Type | 1.x1 | 2.x et versions ultérieures2 | Déclencheur | Entrée | Output |
|---|---|---|---|---|---|
| Stockage Blob | ✔ | ✔ | ✔ | ✔ | ✔ |
| Azure Cosmos DB | ✔ | ✔ | ✔ | ✔ | ✔ |
| Explorateur de données Azure | ✔ | ✔ | ✔ | ||
| Azure SQL | ✔ | ✔ | ✔ | ✔ | |
| Dapr4 | ✔ | ✔ | ✔ | ✔ | |
| Event Grid | ✔ | ✔ | ✔ | ✔ | |
| Hubs d'événements | ✔ | ✔ | ✔ | ✔ | |
| HTTP et webhooks | ✔ | ✔ | ✔ | ✔ | |
| IoT Hub | ✔ | ✔ | ✔ | ||
| Kafka3 | ✔ | ✔ | ✔ | ||
| Applications mobiles | ✔ | ✔ | ✔ | ||
| Protocole de contexte de modèle | ✔ | ✔ | |||
| Notification Hubs | ✔ | ✔ | |||
| Stockage de files d’attente | ✔ | ✔ | ✔ | ✔ | |
| Redis | ✔ | ✔ | ✔ | ✔ | |
| RabbitMQ3 | ✔ | ✔ | ✔ | ||
| SendGrid | ✔ | ✔ | ✔ | ||
| Service Bus | ✔ | ✔ | ✔ | ✔ | |
| Azure SignalR Service | ✔ | ✔ | ✔ | ✔ | |
| Stockage de table | ✔ | ✔ | ✔ | ✔ | |
| Minuteur | ✔ | ✔ | ✔ | ||
| Twilio | ✔ | ✔ | ✔ |
1Le support de la version 1.x du runtime Azure Functions prendra fin le 14 septembre 2026.. Nous vous recommandons vivement de migrer vos applications vers la version 4.x pour bénéficier d’une prise en charge complète.
2 À partir de la version 2.x du runtime, toutes les liaisons, à l'exception de HTTP et du minuteur, doivent être enregistrées. Consultez Enregistrer les extensions de liaison Azure Functions.
3 Les déclencheurs ne sont pas pris en charge dans le plan de consommation. Ce type de liaison nécessite des déclencheurs pilotés par l'exécution.
4 Ce type de liaison est pris en charge uniquement dans Kubernetes, Azure IoT Edge et d’autres modes auto-hébergés.
Pour plus d’informations sur les liaisons en préversion ou approuvées pour la production, consultez Langages pris en charge.
Les versions spécifiques des extensions de liaison ne sont prises en charge que lorsque le SDK de service sous-jacent est pris en charge. Les modifications apportées à la prise en charge dans la version du Kit de développement logiciel (SDK) de service sous-jacent affectent la prise en charge de l’extension consommatrice.
Exemples de code pour les liaisons
Utilisez le tableau suivant pour trouver davantage d’exemples de types de liaisons spécifiques qui vous montrent comment utiliser des liaisons dans vos fonctions. Tout d’abord, choisissez l’onglet du langage qui correspond à votre projet.
Le code de liaison pour C# dépend du modèle de processus spécifique.
| Service | Exemples | Exemples |
|---|---|---|
| Stockage Blob |
Déclencheur Input Sortie |
Lien |
| Base de données Azure Cosmos DB |
Déclencheur Input Sortie |
Lien |
| Explorateur de données Azure |
Input Sortie |
Lien |
| Azure SQL |
Déclencheur Input Sortie |
Lien |
| Grid d'événements |
Déclencheur Sortie |
Lien |
| Event Hubs |
Déclencheur Sortie |
|
| IoT Hub |
Déclencheur Sortie |
|
| HTTP | Déclencheur | Lien |
| Stockage File d’attente |
Déclencheur Sortie |
Lien |
| RabbitMQ |
Déclencheur Sortie |
|
| SendGrid | Sortie | |
| Bus de Service |
Déclencheur Sortie |
Lien |
| Azure SignalR Service |
Déclencheur Input Sortie |
|
| Stockage Table |
Input Sortie |
|
| Minuterie | Déclencheur | Lien |
| Twilio | Sortie | Lien |
| Service | Exemples | Exemples |
|---|---|---|
| Stockage Blob |
Déclencheur Input Sortie |
Lien |
| Base de données Azure Cosmos DB |
Déclencheur Input Sortie |
Lien |
| Explorateur de données Azure |
Input Sortie |
Lien |
| Azure SQL |
Déclencheur Input Sortie |
|
| Grid d'événements |
Déclencheur Sortie |
Lien |
| Event Hubs |
Déclencheur Sortie |
|
| IoT Hub |
Déclencheur Sortie |
|
| HTTP | Déclencheur | Lien |
| Stockage File d’attente |
Déclencheur Sortie |
Lien |
| RabbitMQ |
Déclencheur Sortie |
|
| SendGrid | Sortie | |
| Bus de Service |
Déclencheur Sortie |
Lien |
| Azure SignalR Service |
Déclencheur Input Sortie |
|
| Stockage Table |
Input Sortie |
|
| Minuterie | Déclencheur | Lien |
| Twilio | Sortie |
| Service | Exemples | Exemples |
|---|---|---|
| Stockage Blob |
Déclencheur Input Sortie |
Lien |
| Base de données Azure Cosmos DB |
Déclencheur Input Sortie |
Lien |
| Explorateur de données Azure |
Input Sortie |
|
| Azure SQL |
Déclencheur Input Sortie |
Lien |
| Grid d'événements |
Déclencheur Sortie |
|
| Event Hubs |
Déclencheur Sortie |
|
| IoT Hub |
Déclencheur Sortie |
|
| HTTP | Déclencheur | Lien |
| Stockage File d’attente |
Déclencheur Sortie |
Lien |
| RabbitMQ |
Déclencheur Sortie |
|
| SendGrid | Sortie | |
| Bus de Service |
Déclencheur Sortie |
Lien |
| Azure SignalR Service |
Déclencheur Input Sortie |
|
| Stockage Table |
Input Sortie |
|
| Minuterie | Déclencheur | |
| Twilio | Sortie |
| Service | Exemples | Exemples |
|---|---|---|
| Stockage Blob |
Déclencheur Input Sortie |
|
| Base de données Azure Cosmos DB |
Déclencheur Input Sortie |
|
| Azure SQL |
Déclencheur Input Sortie |
|
| Grid d'événements |
Déclencheur Sortie |
|
| Event Hubs |
Déclencheur Sortie |
|
| IoT Hub |
Déclencheur Sortie |
|
| HTTP | Déclencheur | Lien |
| Stockage File d’attente |
Déclencheur Sortie |
|
| RabbitMQ |
Déclencheur Sortie |
|
| SendGrid | Sortie | |
| Bus de Service |
Déclencheur Sortie |
|
| Azure SignalR Service |
Déclencheur Input Sortie |
|
| Stockage Table |
Input Sortie |
|
| Minuterie | Déclencheur | |
| Twilio | Sortie |
Le code de liaison pour Python dépend de la version du modèle Python.
| Service | Exemples | Exemples |
|---|---|---|
| Stockage Blob |
Déclencheur Input Sortie |
Lien |
| Base de données Azure Cosmos DB |
Déclencheur Input Sortie |
Lien |
| Explorateur de données Azure |
Input Sortie |
|
| Azure SQL |
Déclencheur Input Sortie |
Lien |
| Grid d'événements |
Déclencheur Sortie |
|
| Event Hubs |
Déclencheur Sortie |
|
| IoT Hub |
Déclencheur Sortie |
|
| HTTP | Déclencheur | Lien |
| Stockage File d’attente |
Déclencheur Sortie |
|
| RabbitMQ |
Déclencheur Sortie |
|
| SendGrid | Sortie | |
| Bus de Service |
Déclencheur Sortie |
Lien |
| Azure SignalR Service |
Déclencheur Input Sortie |
|
| Stockage Table |
Input Sortie |
|
| Minuterie | Déclencheur | |
| Twilio | Sortie |
Liaisons personnalisées
Vous pouvez créer des liaisons d’entrée et de sortie personnalisées. Les liaisons doivent être créées dans .NET, mais elles peuvent être consommées à partir de n’importe quel langage pris en charge. Pour plus d’informations sur la création de liaisons personnalisées, consultez Création de liaisons d’entrée et de sortie personnalisées.