Azure Functions triggers and bindings (Déclencheurs et liaisons Azure Functions)

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 les contenus d'Stockage Blob Azure et crée un document Azure Cosmos DB. Minuterie Stockage Blob Azure Cosmos DB
Azure Event Grid est utilisé pour lire une image à partir de Stockage Blob et un document de Azure Cosmos DB pour envoyer un e-mail. Grid d'événements Stockage 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 Azure Functions scénarios.

Conseil

Azure Functions ne vous oblige pas à utiliser des liaisons d'entrée et de sortie pour vous connecter à Azure services. Vous pouvez toujours créer un client 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 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# :

Vous définissez le déclencheur HTTP (HttpTrigger) sur la Run méthode pour une fonction nommée HttpExample qui renvoie un MultiResponse objet :

[Function("HttpExample")]
public MultiResponse Run([HttpTrigger(AuthorizationLevel.Function, "get", "post")] HttpRequest req)

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 IActionResult 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 développeur du 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. Vous définissez ce déclencheur HTTP (@HttpTrigger) sur la run méthode d’une fonction nommée HttpExample. La fonction écrit dans une file d’attente de stockage nommée outqueue que l’annotation @QueueOutput définit sur le msg paramètre :

@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 Java développeur.

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 module @azure/functions. Pour plus d’informations, consultez le guide pour développeurs Node.js.

La méthode app de l’objet exporté http 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 méthode app de l’objet exporté http 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 vous définissez la fonction dépend de la version de Python for 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.FUNCTION)

@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 faire, consultez Ajouter des liaisons à une fonction existante dans Azure Functions.

Azure Functions prend en charge plusieurs liaisons, que vous devez configurer correctement. Par exemple, une fonction peut lire les 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) en même temps.

Liaisons prises en charge

Ce tableau montre les déclencheurs et les liaisons disponibles dans Azure Functions :1

Type Déclencheur Entrée Output
Stockage Blob ✔ ✔ ✔
Azure Cosmos DB ✔ ✔ ✔
Explorateur de données Azure ✔ ✔
Azure SQL ✔ ✔ ✔
Dapr3 ✔ ✔ ✔
Grille d’événements ✔ ✔
Hubs d’événements ✔ ✔
HTTP et webhooks ✔ ✔
IoT Hub ✔
Kafka2 ✔ ✔
Protocole de contexte de modèle ✔
Stockage de files d’attente ✔ ✔
Redis ✔ ✔ ✔
RabbitMQ2 ✔ ✔
SendGrid ✔
Service Bus ✔ ✔
Azure SignalR Service ✔ ✔ ✔
Stockage de table ✔ ✔
Minuteur ✔
Twilio ✔
Connecteur managé ✔
  1. Inscrivez toutes les liaisons, à l’exception de HTTP et du minuteur. Consultez Enregistrer les extensions de liaisons pour Azure Functions.
  2. Les déclencheurs ne sont pas pris en charge dans le plan Consommation. Ce type de liaison nécessite des déclencheurs pilotés par l'exécution.
  3. Ce type de liaison est pris en charge dans Kubernetes, Azure 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 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.

Connecteurs gérés

Les connecteurs gérés dans Azure Connector Namespace étendent les services disponibles via des liaisons prises en charge. Vous pouvez utiliser des déclencheurs de connecteurs et des actions SDK pour intégrer des services tels que Microsoft 365, Teams et SharePoint, tandis que Connector Namespace gère les webhooks, l’authentification et les retentions. Pour en savoir plus, voir Utiliser des connecteurs gérés dans Azure Functions.

Types de SDK

Les extensions de liaison d'Azure Functions utilisent des SDK de service Azure pour se connecter aux services Azure. Les types de SDK spécifiques utilisés par les liaisons peuvent affecter la façon dont vous travaillez avec les données de vos fonctions. Certaines liaisons prennent en charge des types spécifiques au SDK qui fournissent des fonctionnalités plus riches et une meilleure intégration au service, tandis que d’autres utilisent des types génériques comme des chaînes ou des tableaux d’octets. Lorsqu’ils sont disponibles, l’utilisation de types spécifiques au KIT de développement logiciel (SDK) peut offrir des avantages tels que une meilleure sécurité des types, une manipulation des données plus facile et un accès aux fonctionnalités spécifiques au service.

Ce tableau indique les extensions de liaison qui prennent actuellement en charge les types de SDK :

Extension Les types Niveau du support
Stockage Blob Azure BlobClient
BlobContainerClient
BlockBlobClient
PageBlobClient
AppendBlobClient
Déclencheur : GA
Entrée : disponibilité générale
Azure Cosmos DB CosmosClient
Database
Container
Entrée : disponibilité générale
Azure Event Grid CloudEvent
EventGridEvent
Déclencheur : GA
Azure Event Hubs EventData
EventHubProducerClient
Déclencheur : GA
Stockage File d'attente Azure QueueClient
QueueMessage
Déclencheur : GA
Azure Service Bus ServiceBusClient
ServiceBusReceiver
ServiceBusSender
ServiceBusMessage
Déclencheur : GA
Azure Table Storage TableClient
TableEntity
Entrée : disponibilité générale

Considérations relatives aux types de SDK :

  • Lorsque vous utilisez des expressions de liaison qui s’appuient sur des données de déclencheur, les types de SDK pour le déclencheur lui-même ne peuvent pas être utilisés.
  • Pour les scénarios de sortie où vous pouvez utiliser un type de KIT de développement logiciel (SDK), créez et travaillez directement avec des clients sdk au lieu d’utiliser une liaison de sortie.
  • Le déclencheur Azure Cosmos DB utilise le flux de modification Azure Cosmos DB et expose les éléments de flux de modification en tant que types sérialisables JSON. Par conséquent, les types de SDK ne sont pas pris en charge pour ce déclencheur.

Pour plus d’informations, consultez les types de SDK dans le guide du développeur C#.

Extension Les types Niveau du support Exemples
Stockage Blob Azure BlobClient
ContainerClient
StorageStreamDownloader
Déclencheur : GA
Entrée : disponibilité générale
Quickstart
BlobClient
ContainerClient
StorageStreamDownloader
Azure Cosmos DB CosmosClient
DatabaseProxy
ContainerProxy
Entrée : version préliminaire Quickstart
ContainerProxy
CosmosClient
DatabaseProxy
Azure Event Hubs EventData Déclencheur : aperçu Quickstart
EventData
Azure Service Bus ServiceBusReceivedMessage Déclencheur : aperçu Quickstart
ServiceBusReceivedMessage

Considérations relatives aux types de SDK :

  • Pour les scénarios de sortie où vous pouvez utiliser un type de KIT de développement logiciel (SDK), créez et travaillez directement avec des clients sdk au lieu d’utiliser une liaison de sortie.
  • Le déclencheur Azure Cosmos DB utilise le flux de modification Azure Cosmos DB et expose les éléments de flux de modification en tant que types sérialisables JSON. Par conséquent, les types de SDK ne sont pas pris en charge pour ce déclencheur.

Les types de SDK sont pris en charge uniquement lors de l’utilisation du modèle de programmation Python v2. Pour plus d’informations, consultez les liaisons de type SDK dans le guide du développeur Python.

Extension Les types Niveau du support
Stockage Blob Azure BlobClient
ContainerClient
ReadableStream
Preview
Azure Service Bus ServiceBusClient
ServiceBusReceiver
ServiceBusSender
ServiceBusMessage
Preview

Les types de SDK sont pris en charge uniquement lors de l’utilisation du modèle de programmation Node v4. Pour plus d’informations, consultez les types de SDK dans le guide du développeur Node.js.

Extension Les types Niveau du support
Stockage Blob Azure BlobClient
BlobContainerClient
Preview

Pour plus d’informations, consultez SDK types dans le guide du développeur Java.

Important

Les types de SDK ne sont actuellement pas pris en charge pour les applications PowerShell.

Go prend en charge l’injection des clients de kit de développement logiciel pour les déclencheurs qui fournissent des clients du kit de développement logiciel Azure. Pendant la version préliminaire publique, les déclencheurs de stockage Blob peuvent recevoir directement un kit de développement logiciel Azure authentifié *blob.Client directement dans le gestionnaire.

Extension Les types Niveau du support
Stockage Blob Azure *blob.Client Preview

Pour plus d’informations, consultez Déclencheurs d’extension dans la documentation de référence Go pour les développeurs.

Liaisons d’agent

Important

Les liaisons d’agents pour les applications de fonctions Python sont actuellement en version préliminaire. Les fonctionnalités, les noms de paquets et la configuration peuvent changer avant la disponibilité générale.

Les liaisons d’agents permettent d’injecter un Agent objet dans une fonction Python tout en conservant les déclencheurs, liaisons et logiques d’application standards d’Azure Functions. Utilisez des liaisons d’agents lorsque le processus de travail d’une fonction bénéficie du raisonnement agentique, mais votre code de fonction doit rester sous contrôle de l’exécution.

Les liaisons d’agent prennent également en charge les orchestrations de Durable Functions. L’API context.call_agent() protégée contre les relectures exécute des opérations d’agent dans une activité afin que la relecture d’orchestration reste déterministe.

Des liaisons d’agents sont disponibles pour le modèle de programmation Python v2. Pour plus d’informations, voir Liaisons d’agent pour les applications de fonction Python.

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 Trigger
Input
Output
Link
Azure Cosmos DB Trigger
Input
Output
Link
Azure Data Explorer Input
Output
Link
Azure SQL Trigger
Input
Output
Link
Grid d'événements Trigger
Output
Link
Hubs d'événements Trigger
Output
IoT Hub Trigger
Output
HTTP Trigger Link
Protocole de contexte de modèle Déclencheur d’outil
Déclencheur de ressource
Déclencheur de prompt
Link
Stockage de files d’attente Trigger
Output
Link
RabbitMQ Trigger
Output
SendGrid Output
Service Bus Trigger
Output
Link
Azure SignalR Service Trigger
Input
Output
Stockage de table Input
Output
Minuterie Trigger Link
Twilio Output Link
Connecteurs gérés Trigger Link
Service Exemples Exemples
Stockage Blob Trigger
Input
Output
Link
Azure Cosmos DB Trigger
Input
Output
Link
Azure Data Explorer Input
Output
Link
Azure SQL Trigger
Input
Output
Grid d'événements Trigger
Output
Link
Hubs d'événements Trigger
Output
IoT Hub Trigger
Output
HTTP Trigger Link
Protocole de contexte de modèle Déclencheur d’outil
Déclencheur de ressource
Déclencheur de prompt
Link
Stockage de files d’attente Trigger
Output
Link
RabbitMQ Trigger
Output
SendGrid Output
Service Bus Trigger
Output
Link
Azure SignalR Service Trigger
Input
Output
Stockage de table Input
Output
Minuterie Trigger Link
Twilio Output
Service Exemples Exemples
Stockage Blob Trigger
Input
Output
Link
Azure Cosmos DB Trigger
Input
Output
Link
Azure Data Explorer Input
Output
Azure SQL Trigger
Input
Output
Link
Grid d'événements Trigger
Output
Hubs d'événements Trigger
Output
IoT Hub Trigger
Output
HTTP Trigger Link
Protocole de contexte de modèle Déclencheur d’outil
Déclencheur de ressource
Déclencheur de prompt
Link
Stockage de files d’attente Trigger
Output
Link
RabbitMQ Trigger
Output
SendGrid Output
Service Bus Trigger
Output
Link
Azure SignalR Service Trigger
Input
Output
Stockage de table Input
Output
Minuterie Trigger
Twilio Output
Connecteurs gérés Trigger Link
Service Exemples Exemples
Stockage Blob Trigger
Input
Output
Azure Cosmos DB Trigger
Input
Output
Azure SQL Trigger
Input
Output
Grid d'événements Trigger
Output
Hubs d'événements Trigger
Output
IoT Hub Trigger
Output
HTTP Trigger Link
Stockage de files d’attente Trigger
Output
RabbitMQ Trigger
Output
SendGrid Output
Service Bus Trigger
Output
Azure SignalR Service Trigger
Input
Output
Stockage de table Input
Output
Minuterie Trigger
Twilio Output

Le code de liaison pour Python dépend de la version du modèle Python.

Service Exemples Exemples
Stockage Blob Trigger
Input
Output
Link
Azure Cosmos DB Trigger
Input
Output
Link
Azure Data Explorer Input
Output
Azure SQL Trigger
Input
Output
Link
Grid d'événements Trigger
Output
Hubs d'événements Trigger
Output
IoT Hub Trigger
Output
HTTP Trigger Link
Protocole de contexte de modèle Déclencheur d’outil
Déclencheur de ressource
Déclencheur de prompt
Link
Stockage de files d’attente Trigger
Output
RabbitMQ Trigger
Output
SendGrid Output
Service Bus Trigger
Output
Link
Azure SignalR Service Trigger
Input
Output
Stockage de table Input
Output
Minuterie Trigger
Twilio Output
Connecteurs gérés Trigger Link

Liaisons personnalisées

Vous pouvez créer des liaisons d’entrée et de sortie personnalisées. Vous devez rédiger des liaisons en .NET, mais vous pouvez les consommer depuis n’importe quel langage supporté. Pour plus d’informations sur la création de liaisons personnalisées, consultez Creating custom input and output bindings.