Partage via


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 :

  1. 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.
  2. À 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.
  3. Les déclencheurs ne sont pas pris en charge dans le plan Consommation. Nécessite des déclencheurs basés sur le runtime.
  4. 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.