Delen via


Azure Functions-triggers en -bindingen

In dit artikel leert u de concepten op hoog niveau rondom triggers en bindingen voor functies.

Triggers zorgen ervoor dat een functie wordt uitgevoerd. Een trigger definieert hoe een functie wordt aangeroepen en een functie moet precies één trigger hebben. Triggers kunnen ook gegevens doorgeven aan uw functie, net als bij methode-aanroepen.

Binding met een functie is een manier om uw functies declaratief te verbinden met andere resources. Bindingen geven gegevens door aan uw functie (een invoerbinding) of stellen u in staat om gegevens uit uw functie (een uitvoerbinding) te schrijven met behulp van bindingsparameters. Uw functietrigger is in feite een speciaal type invoerbinding.

U kunt bindingen combineren en aanpassen aan het specifieke scenario van uw functie. Bindingen zijn optioneel en een functie kan een of meer invoer- en/of uitvoerbindingen hebben.

Met triggers en bindingen kunt u de toegang tot andere services voorkomen. Uw functie ontvangt gegevens (bijvoorbeeld de inhoud van een wachtrijbericht) in functieparameters. U verzendt gegevens (bijvoorbeeld om een ​​wachtrijbericht te maken) door de retourwaarde van de functie te gebruiken.

Bekijk de volgende voorbeelden van hoe u functies kunt implementeren:

Voorbeeldscenario Aanleiding Invoerbinding Uitvoerbinding
Er wordt een nieuw wachtrijbericht binnengekomen, waarmee een functie wordt uitgevoerd om naar een andere wachtrij te schrijven. Rij* Geen Rij*
Een geplande taak leest de inhoud van Azure Blob Storage en maakt een nieuw Azure Cosmos DB-document. Tijdmeter Blob Storage (opslag van blobs) Azure Cosmos DB
Azure Event Grid wordt gebruikt om een afbeelding te lezen uit Blob Storage en een document van Azure Cosmos DB om een e-mailbericht te verzenden. Gebeurtenisgrid Blob Storage en Azure Cosmos DB SendGrid

* Vertegenwoordigt verschillende wachtrijen.

Deze voorbeelden zijn niet volledig bedoeld, maar laten zien hoe u triggers en bindingen samen kunt gebruiken. Zie Azure Functions-scenario's voor een uitgebreidere set scenario's.

Aanbeveling

Voor Azure Functions hoeft u geen invoer- en uitvoerbindingen te gebruiken om verbinding te maken met Azure-services. U kunt altijd een Azure SDK-client maken in uw code en deze gebruiken voor uw gegevensoverdracht. Zie Verbinding maken met services voor meer informatie.

Trigger- en bindingsdefinities

In het volgende voorbeeld ziet u een door HTTP geactiveerde functie met een uitvoerbinding waarmee een bericht naar een Azure Storage-wachtrij wordt geschreven.

Voor C#-klassebibliotheekfuncties configureert u triggers en bindingen door methoden en parameters te decoreren met C#-kenmerken. Het specifieke kenmerk dat u toepast, is mogelijk afhankelijk van het C#-runtimemodel:

De HTTP-trigger (HttpTrigger) wordt gedefinieerd voor de Run methode voor een functie met de naam HttpExample die een MultiResponse object retourneert:

[Function("HttpExample")]
public static MultiResponse Run([HttpTrigger(AuthorizationLevel.Function, "get", "post")] HttpRequestData req,
    FunctionContext executionContext)
{

In dit voorbeeld ziet u de MultiResponse objectdefinitie. De objectdefinitie keert HttpResponse terug naar de HTTP-aanvraag en schrijft een bericht naar een opslagwachtrij met behulp van een QueueOutput binding:

public class MultiResponse
{
    [QueueOutput("outqueue",Connection = "AzureWebJobsStorage")]
    public string[] Messages { get; set; }
    public HttpResponseData HttpResponse { get; set; }
}

Zie de C#-handleiding voor geïsoleerde werkrolmodellen voor meer informatie.

Verouderde C#-scriptfuncties maken gebruik van een function.json definitiebestand. Zie de naslaginformatie voor ontwikkelaars van Azure Functions C#-scripts (.csx) voor meer informatie.

Voor Java-functies configureert u triggers en bindingen door aantekeningen te maken op specifieke methoden en parameters. Deze HTTP-trigger (@HttpTrigger) is gedefinieerd op de run-methode voor een functie genaamd HttpExample. De functie schrijft naar een opslagwachtrij met de naam outqueue die de @QueueOutput annotatie op de msg parameter definieert.

@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.");

Zie de Java-ontwikkelaarshandleiding voor meer informatie.

De manier waarop u triggers en bindingen voor Node.js functies definieert, is afhankelijk van de specifieke versie van Node.js voor Azure Functions:

In Node.js voor Azure Functions versie 4 configureert u triggers en bindingen met behulp van objecten die uit de @azure/functions module zijn geëxporteerd. Zie de ontwikkelaarshandleiding voorNode.js voor meer informatie.

De http methode voor het geëxporteerde app object definieert een HTTP-trigger. De storageQueue methode voor output het definiëren van een uitvoerbinding voor deze trigger.

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.' };
    },
});

De http methode voor het geëxporteerde app object definieert een HTTP-trigger. De storageQueue methode voor output het definiëren van een uitvoerbinding voor deze trigger.

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,
});

In dit voorbeeldbestand function.json wordt de functie gedefinieerd:

    {
      "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"
    }
  ]
}

Zie de Ontwikkelaarshandleiding voor PowerShell voor meer informatie.

De manier waarop de functie wordt gedefinieerd, is afhankelijk van de versie van Python voor Azure Functions:

In Python voor Azure Functions versie 2 definieert u de functie rechtstreeks in code met behulp van decorators:

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.')

Overwegingen voor binding

  • Niet alle services ondersteunen zowel invoer- als uitvoerbindingen. Zie uw specifieke bindingsextensie voor specifieke codevoorbeelden voor bindingen.

  • Triggers en bindingen worden verschillend gedefinieerd, afhankelijk van de ontwikkeltaal. Zorg ervoor dat u uw taal bovenaan dit artikel selecteert.

  • Trigger- en bindingsnamen zijn beperkt tot alfanumerieke tekens en _, het onderstrepingsteken.

Taak voor het toevoegen van bindingen aan een functie

U kunt uw functie verbinden met andere services met behulp van invoer- of uitvoerbindingen. Voeg een binding toe door de specifieke definities toe te voegen aan uw functie. Zie Bindingen toevoegen aan een bestaande functie in Azure Functions voor meer informatie.

Azure Functions ondersteunt meerdere bindingen, die correct moeten worden geconfigureerd. Een functie kan bijvoorbeeld gegevens lezen uit een wachtrij (invoerbinding) en tegelijkertijd gegevens schrijven naar een database (uitvoerbinding).

Ondersteunde bindingen

Dit tabel geeft de bindingen weer die worden ondersteund in de belangrijkste versies van de Azure Functions-runtime:

Typologie 4.x1 1.x2 Aanleiding Invoer Uitvoer
Blob Storage
Azure Cosmos DB
Azure Data Explorer
Azure SQL
Dapr4
Event Grid
Event Hubs
HTTP en webhooks
IoT Hub
Kafka3
Mobiele apps
Modelcontextprotocol
Notification Hubs
Wachtrij Opslag
Redis
RabbitMQ3
SendGrid
Service Bus
Azure SignalR Service
Table Storage
Timer
Twilio
  1. Registreer alle bindingen behalve HTTP en timer. Zie Azure Functions-bindingsextensies registreren. Deze stap is niet vereist wanneer u versie 1.x van de Functions-runtime gebruikt.
  2. De ondersteuning eindigt op versie 1.x van de Azure Functions-runtime op 14 september 2026. Migreer uw apps naar versie 4.x voor volledige ondersteuning.
  3. Triggers worden niet ondersteund in het verbruiksabonnement. Voor dit bindingstype zijn runtimegestuurde triggers vereist.
  4. Dit bindingstype wordt alleen ondersteund in Kubernetes, Azure IoT Edge en andere zelf-hostende modi.

Zie Ondersteunde talen voor informatie over welke bindingen in preview zijn of zijn goedgekeurd voor productiegebruik.

Specifieke versies van bindingsextensies worden alleen ondersteund terwijl de onderliggende service-SDK wordt ondersteund. Wijzigingen in ondersteuning in de onderliggende service-SDK-versie zijn van invloed op de ondersteuning voor de verbruikende extensie.

SDK-typen

Bindingsextensies van Azure Functions maken gebruik van Azure-service-SDK's om verbinding te maken met Azure-services. De specifieke SDK-typen die door bindingen worden gebruikt, kunnen van invloed zijn op de werking van de gegevens in uw functies. Sommige bindingen ondersteunen SDK-specifieke typen die uitgebreidere functionaliteit bieden en betere integratie met de service bieden, terwijl andere meer algemene typen gebruiken, zoals tekenreeksen of bytematrices. Indien beschikbaar, kan het gebruik van SDK-specifieke typen voordelen bieden, zoals betere typeveiligheid, eenvoudiger gegevensmanipulatie en toegang tot servicespecifieke functies.

Deze tabel geeft bindingsextensies aan die momenteel SDK-typen ondersteunen:

Extension Types Ondersteuningsniveau
Azure Blob-opslagruimte BlobClient
BlobContainerClient
BlockBlobClient
PageBlobClient
AppendBlobClient
Trigger: GA
Invoer: GA
Azure Cosmos DB CosmosClient
Database
Container
Invoer: GA
Azure Event Grid CloudEvent
EventGridEvent
Trigger: GA
Azure Event Hubs EventData
EventHubProducerClient
Trigger: GA
Azure Queue Storage QueueClient
QueueMessage
Trigger: GA
Azure Service Bus ServiceBusClient
ServiceBusReceiver
ServiceBusSender
ServiceBusMessage
Trigger: GA
Azure Table Storage TableClient
TableEntity
Invoer: GA

Overwegingen voor SDK-typen:

  • Wanneer u bindingexpressies gebruikt die afhankelijk zijn van triggergegevens, kunnen SDK-typen voor de trigger zelf niet worden gebruikt.
  • Voor uitvoerscenario's waarbij u een SDK-type kunt gebruiken, maakt en werkt u rechtstreeks met SDK-clients in plaats van een uitvoerbinding.
  • De Azure Cosmos DB-trigger maakt gebruik van de Azure Cosmos DB-wijzigingenfeed en maakt wijzigingenfeeditems beschikbaar als JSON-serialiseerbare typen. Hierdoor worden SDK-typen niet ondersteund voor deze trigger.

Zie sdk-typen in de C#-ontwikkelaarshandleiding voor meer informatie.

Extension Types Ondersteuningsniveau Voorbeelden
Azure Blob-opslagruimte BlobClient
ContainerClient
StorageStreamDownloader
Trigger: GA
Invoer: GA
Quickstart
BlobClient
ContainerClient
StorageStreamDownloader
Azure Cosmos DB CosmosClient
DatabaseProxy
ContainerProxy
Invoer: voorvertoning Quickstart
ContainerProxy
CosmosClient
DatabaseProxy
Azure Event Hubs EventData Trigger: voorvertoning Quickstart
EventData
Azure Service Bus ServiceBusReceivedMessage Trigger: voorvertoning Quickstart
ServiceBusReceivedMessage

Overwegingen voor SDK-typen:

  • Voor uitvoerscenario's waarbij u een SDK-type kunt gebruiken, maakt en werkt u rechtstreeks met SDK-clients in plaats van een uitvoerbinding.
  • De Azure Cosmos DB-trigger maakt gebruik van de Azure Cosmos DB-wijzigingenfeed en maakt wijzigingenfeeditems beschikbaar als JSON-serialiseerbare typen. Hierdoor worden SDK-typen niet ondersteund voor deze trigger.

SDK-typen worden alleen ondersteund bij het gebruik van het Python v2-programmeermodel. Zie sdk-typebindingen in de Ontwikkelaarshandleiding voor Python voor meer informatie.

Extension Types Ondersteuningsniveau
Azure Blob-opslagruimte BlobClient
ContainerClient
ReadableStream
Voorvertoning
Azure Service Bus ServiceBusClient
ServiceBusReceiver
ServiceBusSender
ServiceBusMessage
Voorvertoning

SDK-typen worden alleen ondersteund wanneer u het Node v4-programmeermodel gebruikt. Zie sdk-typen in de ontwikkelaarshandleiding voor Node.js voor meer informatie.

Extension Types Ondersteuningsniveau
Azure Blob-opslagruimte BlobClient
BlobContainerClient
Voorvertoning

Zie SDK-typen in de Java-ontwikkelaarshandleiding voor meer informatie.

Belangrijk

SDK-typen worden momenteel niet ondersteund voor PowerShell-apps.

Codevoorbeelden voor bindingen

Gebruik de volgende tabel voor meer voorbeelden van specifieke bindingstypen die laten zien hoe u met bindingen in uw functies kunt werken. Kies eerst het taaltabblad dat overeenkomt met uw project.

Bindingscode voor C# is afhankelijk van het specifieke procesmodel.

Dienst Voorbeelden Voorbeelden
Blob Storage (opslag van blobs) Trekker
Invoer
Uitvoer
Verbinden
Azure Cosmos DB Trekker
Invoer
Uitvoer
Verbinden
Azure-gegevensverkenner Invoer
Uitvoer
Verbinden
Azure SQL Trekker
Invoer
Uitvoer
Verbinden
Gebeurtenisgrid Trekker
Uitvoer
Verbinden
Evenement Hubs Trekker
Uitvoer
IoT-hub Trekker
Uitvoer
HTTP Trekker Verbinden
Wachtrijopslag Trekker
Uitvoer
Verbinden
RabbitMQ Trekker
Uitvoer
SendGrid Uitvoer
Dienstbus Trekker
Uitvoer
Verbinden
Azure SignalR Service Trekker
Invoer
Uitvoer
Tabelopslag Invoer
Uitvoer
Tijdmeter Trekker Verbinden
Twilio Uitvoer Verbinden
Dienst Voorbeelden Voorbeelden
Blob Storage (opslag van blobs) Trekker
Invoer
Uitvoer
Verbinden
Azure Cosmos DB Trekker
Invoer
Uitvoer
Verbinden
Azure-gegevensverkenner Invoer
Uitvoer
Verbinden
Azure SQL Trekker
Invoer
Uitvoer
Gebeurtenisgrid Trekker
Uitvoer
Verbinden
Evenement Hubs Trekker
Uitvoer
IoT-hub Trekker
Uitvoer
HTTP Trekker Verbinden
Wachtrijopslag Trekker
Uitvoer
Verbinden
RabbitMQ Trekker
Uitvoer
SendGrid Uitvoer
Dienstbus Trekker
Uitvoer
Verbinden
Azure SignalR Service Trekker
Invoer
Uitvoer
Tabelopslag Invoer
Uitvoer
Tijdmeter Trekker Verbinden
Twilio Uitvoer
Dienst Voorbeelden Voorbeelden
Blob Storage (opslag van blobs) Trekker
Invoer
Uitvoer
Verbinden
Azure Cosmos DB Trekker
Invoer
Uitvoer
Verbinden
Azure-gegevensverkenner Invoer
Uitvoer
Azure SQL Trekker
Invoer
Uitvoer
Verbinden
Gebeurtenisgrid Trekker
Uitvoer
Evenement Hubs Trekker
Uitvoer
IoT-hub Trekker
Uitvoer
HTTP Trekker Verbinden
Wachtrijopslag Trekker
Uitvoer
Verbinden
RabbitMQ Trekker
Uitvoer
SendGrid Uitvoer
Dienstbus Trekker
Uitvoer
Verbinden
Azure SignalR Service Trekker
Invoer
Uitvoer
Tabelopslag Invoer
Uitvoer
Tijdmeter Trekker
Twilio Uitvoer
Dienst Voorbeelden Voorbeelden
Blob Storage (opslag van blobs) Trekker
Invoer
Uitvoer
Azure Cosmos DB Trekker
Invoer
Uitvoer
Azure SQL Trekker
Invoer
Uitvoer
Gebeurtenisgrid Trekker
Uitvoer
Evenement Hubs Trekker
Uitvoer
IoT-hub Trekker
Uitvoer
HTTP Trekker Verbinden
Wachtrijopslag Trekker
Uitvoer
RabbitMQ Trekker
Uitvoer
SendGrid Uitvoer
Dienstbus Trekker
Uitvoer
Azure SignalR Service Trekker
Invoer
Uitvoer
Tabelopslag Invoer
Uitvoer
Tijdmeter Trekker
Twilio Uitvoer

Bindingscode voor Python is afhankelijk van de python-modelversie.

Dienst Voorbeelden Voorbeelden
Blob Storage (opslag van blobs) Trekker
Invoer
Uitvoer
Verbinden
Azure Cosmos DB Trekker
Invoer
Uitvoer
Verbinden
Azure-gegevensverkenner Invoer
Uitvoer
Azure SQL Trekker
Invoer
Uitvoer
Verbinden
Gebeurtenisgrid Trekker
Uitvoer
Evenement Hubs Trekker
Uitvoer
IoT-hub Trekker
Uitvoer
HTTP Trekker Verbinden
Wachtrijopslag Trekker
Uitvoer
RabbitMQ Trekker
Uitvoer
SendGrid Uitvoer
Dienstbus Trekker
Uitvoer
Verbinden
Azure SignalR Service Trekker
Invoer
Uitvoer
Tabelopslag Invoer
Uitvoer
Tijdmeter Trekker
Twilio Uitvoer

Aangepaste bindingen

U kunt aangepaste invoer- en uitvoerbindingen maken. Bindingen moeten worden gemaakt in .NET, maar ze kunnen worden gebruikt vanuit elke ondersteunde taal. Zie Aangepaste invoer- en uitvoerbindingen maken voor meer informatie over het maken van aangepaste bindingen.