Concepts des déclencheurs et liaisons Azure Functions
Dans cet article, vous allez découvrir des concepts généraux concernant les déclencheurs et les liaisons des 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. Chaque fonction est associée à un seul 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 différentes liaisons selon le scénario spécifique de vos fonctions. Les liaisons sont facultatives. Chaque fonction peut avoir une ou plusieurs liaisons d’entrée et 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.
Prenons les exemples suivants pour voir comment implémenter différentes fonctions.
Exemple de scénario | Déclencheur | Liaison d’entrée | Liaison de sortie |
---|---|---|---|
Un nouveau message en file d’attente arrive et 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 d’objets blob et crée un document Azure Cosmos DB. | Minuterie | Stockage Blob | Azure Cosmos DB |
Event Grid est utilisé pour lire une image du stockage d’objets blob et un document d’Azure Cosmos DB pour envoyer un e-mail. | Event Grid | Stockage d’objets blob et Azure Cosmos DB | SendGrid |
* Représente différentes files d’attente
La liste de ces exemples n’est pas exhaustive. Elle a pour but d’illustrer comment utiliser des déclencheurs et des liaisons ensemble. Pour obtenir un ensemble plus complet de scénarios, consultez scénarios Azure Functions.
Conseil
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
La définition des déclencheurs et des liaisons varie selon le langage de développement. Veillez à sélectionner votre langage en haut de l’article.
Les liaisons peuvent être des liaisons d’entrée ou de sortie. 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 de liaisons spécifiques.
Cet exemple montre une fonction déclenchée PAR HTTP avec une liaison de sortie qui écrit un message dans une file d’attente stockage Azure.
Pour les fonctions de bibliothèque de classes C#, les déclencheurs et les liaisons sont configurés en décorant des méthodes et des paramètres avec des attributs C#, où l’attribut spécifique appliqué 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
qui retourne une HttpResponse
à la requête HTTP et écrit également un message dans une file d’attente de stockage à l’aide d’une liaison 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 du modèle Worker isolé #C.
Les fonctions de script C# héritées utilisent un fichier de définition function.json. Pour plus d’informations, consultez la référence du développeur Azure Functions script C# (.csx).
Pour les fonctions Java, les déclencheurs et les liaisons sont configurés en annotant des méthodes et des paramètres spécifiques. Ce déclencheur HTTP (@HttpTrigger
) est défini sur la méthode run
pour une fonction nommée HttpTriggerQueueOutput
qui écrit dans une file d’attente de stockage définie par les annotations @QueueOutput
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 les déclencheurs et les liaisons sont définis pour les fonctions Node.js dépend de la version spécifique de Node.js pour Functions :
Dans Node.js pour Functions version 4, vous configurez des déclencheurs et des liaisons à l’aide d’objets exportés à partir du module @azure/functions
. Pour plus d’informations, consultez le guide pour développeurs Node.js.
Cet exemple est une fonction déclenchée par HTTP qui crée un élément de file d’attente pour chaque requête HTTP reçue.
La méthode http
sur l’objet de app
exporté définit un déclencheur HTTP, et 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 méthode http
sur l’objet de app
exporté définit un déclencheur HTTP, et 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 Functions :
Dans Python pour 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.')
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.
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 ultérieur2 | 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 | ✔ | ✔ | ✔ | ||
Mobile Apps | ✔ | ✔ | ✔ | ||
Notification Hubs | ✔ | ✔ | |||
Stockage File d’attente | ✔ | ✔ | ✔ | ✔ | |
Redis | ✔ | ✔ | |||
RabbitMQ3 | ✔ | ✔ | ✔ | ||
SendGrid | ✔ | ✔ | ✔ | ||
Service Bus | ✔ | ✔ | ✔ | ✔ | |
SignalR | ✔ | ✔ | ✔ | ✔ | |
Stockage Table | ✔ | ✔ | ✔ | ✔ | |
Minuteur | ✔ | ✔ | ✔ | ||
Twilio | ✔ | ✔ | ✔ |
Remarques :
- La prise en charge de la version 1.x du runtime Azure Functions prendra fin le 14 septembre 2026. Nous vous recommandons fortement de migrer vos applications vers la version 4.x pour bénéficier d’une prise en charge complète.
- À compter du runtime de la version 2.x, toutes les liaisons, à l’exception de HTTP et du minuteur, doivent être inscrites. Consultez Inscrire des extensions de liaison.
- Les déclencheurs ne sont pas pris en charge dans le plan Consommation. Nécessite des déclencheurs basés sur le runtime.
- Pris en charge dans Kubernetes, IoT Edge et d’autres modes auto-hébergés uniquement.
Pour plus d’informations sur les liaisons en préversion ou approuvées pour la production, consultez Langages pris en charge.
Les versions d’extension de liaison spécifiques ne sont prises en charge que lorsque le Kit de développement logiciel (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 de liaison
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 d'objets blob | Déclencheur Entrée Sortie |
Lien |
Azure Cosmos DB | Déclencheur Entrée Sortie |
Lien |
Explorateur de données Azure | Input Sortie |
Lien |
Azure SQL | Déclencheur Entrée Sortie |
Lien |
Event Grid | Déclencheur Sortie |
Lien |
Event Hubs | Déclencheur Sortie |
|
IoT Hub | Déclencheur Sortie |
|
HTTP | Déclencheur | Lien |
Stockage de files d'attente | Déclencheur Sortie |
Lien |
RabbitMQ | Déclencheur Sortie |
|
SendGrid | Sortie | |
Service Bus | Déclencheur Sortie |
Lien |
SignalR | Déclencheur Entrée Sortie |
|
Stockage de tables | Entrée Sortie |
|
Minuteur | Déclencheur | Lien |
Twilio | Sortie | Lien |
Service | Exemples | Exemples |
---|---|---|
Stockage d'objets blob | Déclencheur Entrée Sortie |
Lien |
Azure Cosmos DB | Déclencheur Entrée Sortie |
Lien |
Explorateur de données Azure | Input Sortie |
Lien |
Azure SQL | Déclencheur Entrée Sortie |
|
Event Grid | Déclencheur Sortie |
Lien |
Event Hubs | Déclencheur Sortie |
|
IoT Hub | Déclencheur Sortie |
|
HTTP | Déclencheur | Lien |
Stockage de files d'attente | Déclencheur Sortie |
Lien |
RabbitMQ | Déclencheur Sortie |
|
SendGrid | Sortie | |
Service Bus | Déclencheur Sortie |
Lien |
SignalR | Déclencheur Entrée Sortie |
|
Stockage de tables | Entrée Sortie |
|
Minuteur | Déclencheur | Lien |
Twilio | Sortie | Lien |
Service | Exemples | Exemples |
---|---|---|
Stockage d'objets blob | Déclencheur Entrée Sortie |
Lien |
Azure Cosmos DB | Déclencheur Entrée Sortie |
Lien |
Explorateur de données Azure | Input Sortie |
|
Azure SQL | Déclencheur Entrée Sortie |
Lien |
Event Grid | Déclencheur Sortie |
Lien |
Event Hubs | Déclencheur Sortie |
|
IoT Hub | Déclencheur Sortie |
|
HTTP | Déclencheur | Lien |
Stockage de files d'attente | Déclencheur Sortie |
Lien |
RabbitMQ | Déclencheur Sortie |
|
SendGrid | Sortie | |
Service Bus | Déclencheur Sortie |
Lien |
SignalR | Déclencheur Entrée Sortie |
|
Stockage de tables | Entrée Sortie |
|
Minuteur | Déclencheur | Lien |
Twilio | Sortie | Lien |
Service | Exemples | Exemples |
---|---|---|
Stockage d'objets blob | Déclencheur Entrée Sortie |
Lien |
Azure Cosmos DB | Déclencheur Entrée Sortie |
Lien |
Azure SQL | Déclencheur Entrée Sortie |
|
Event Grid | Déclencheur Sortie |
Lien |
Event Hubs | Déclencheur Sortie |
|
IoT Hub | Déclencheur Sortie |
|
HTTP | Déclencheur | Lien |
Stockage de files d'attente | Déclencheur Sortie |
Lien |
RabbitMQ | Déclencheur Sortie |
|
SendGrid | Sortie | |
Service Bus | Déclencheur Sortie |
Lien |
SignalR | Déclencheur Entrée Sortie |
|
Stockage de tables | Entrée Sortie |
|
Minuteur | Déclencheur | Lien |
Twilio | Sortie | Lien |
Le code de liaison pour Python dépend de la version du modèle Python.
Service | Exemples | Exemples |
---|---|---|
Stockage d'objets blob | Déclencheur Entrée Sortie |
Lien |
Azure Cosmos DB | Déclencheur Entrée Sortie |
Lien |
Explorateur de données Azure | Input Sortie |
|
Azure SQL | Déclencheur Entrée Sortie |
Lien |
Event Grid | Déclencheur Sortie |
Lien |
Event Hubs | Déclencheur Sortie |
|
IoT Hub | Déclencheur Sortie |
|
HTTP | Déclencheur | Lien |
Stockage de files d'attente | Déclencheur Sortie |
Lien |
RabbitMQ | Déclencheur Sortie |
|
SendGrid | Sortie | |
Service Bus | Déclencheur Sortie |
Lien |
SignalR | Déclencheur Entrée Sortie |
|
Stockage de tables | Entrée Sortie |
|
Minuteur | Déclencheur | Lien |
Twilio | Sortie | Lien |
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 sont utilisables avec tous les langages 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.