Dela via


Azure Functions-utlösare och bindningar

I den här artikeln får du lära dig de övergripande begreppen kring utlösare och bindningar för funktioner.

Utlösare gör att en funktion körs. En utlösare definierar hur en funktion anropas och en funktion måste ha exakt en utlösare. Utlösare kan också skicka data till din funktion, precis som med metodanrop.

Bindning till en funktion är ett sätt att deklarativt ansluta dina funktioner till andra resurser. Bindningar skickar antingen data till din funktion (en indatabindning) eller så kan du skriva ut data från din funktion (en utdatabindning) med hjälp av bindningsparametrar. Funktionsutlösaren är i princip en särskild typ av indatabindning.

Du kan blanda och matcha bindningar som passar din funktions specifika scenario. Bindningar är valfria och en funktion kan ha en eller flera indata- och/eller utdatabindningar.

Med utlösare och bindningar kan du undvika hårdkodning av åtkomst till andra tjänster. Funktionen tar emot data (till exempel innehållet i ett kömeddelande) i funktionsparametrar. Du kan skicka data (t.ex. för att skapa ett kömeddelande) med hjälp av returvärdet för funktionen.

Tänk på följande exempel på hur du kan implementera funktioner:

Exempelscenario Utlösare Indatabindning Utdatabindning
Ett nytt kömeddelande tas emot, som kör en funktion för att skriva till en annan kö. * Ingen *
Ett schemalagt jobb läser innehållet i Azure Blob Storage och skapar ett nytt Azure Cosmos DB-dokument. Tidtagare Blob Storage (lagring av blobbar) Azure Cosmos DB
Azure Event Grid används för att läsa en avbildning från Blob Storage och ett dokument från Azure Cosmos DB för att skicka ett e-postmeddelande. Event Grid (händelsenätverk) Blob Storage och Azure Cosmos DB SendGrid

* Representerar olika köer.

De här exemplen är inte avsedda att vara uttömmande, men de illustrerar hur du kan använda utlösare och bindningar tillsammans. En mer omfattande uppsättning scenarier finns i Azure Functions-scenarier.

Dricks

Azure Functions kräver inte att du använder indata- och utdatabindningar för att ansluta till Azure-tjänster. Du kan alltid skapa en Azure SDK-klient i koden och använda den i stället för dina dataöverföringar. Mer information finns i Ansluta till tjänster.

Utlösar- och bindningsdefinitioner

I följande exempel visas en HTTP-utlöst funktion med en utdatabindning som skriver ett meddelande till en Azure Storage-kö.

För C#-klassbiblioteksfunktioner konfigurerar du utlösare och bindningar genom att dekorera metoder och parametrar med C#-attribut. Det specifika attribut som du tillämpar kan bero på C#-körningsmodellen:

HTTP-utlösaren (HttpTrigger) definieras på Run metoden för en funktion med namnet HttpExample som returnerar ett MultiResponse objekt:

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

Det här exemplet visar objektdefinitionen MultiResponse . Objektdefinitionen returnerar HttpResponse till HTTP-begäran och skriver ett meddelande till en lagringskö genom att använda en QueueOutput-bindning.

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

Mer information finns i C#-guiden för isolerade arbetsmodeller.

Äldre C#-skriptfunktioner använder en function.json definitionsfil. Mer information finns i utvecklarreferensen för Azure Functions C#-skript (.csx).

För Java-funktioner konfigurerar du utlösare och bindningar genom att kommentera specifika metoder och parametrar. Den här HTTP-utlösaren (@HttpTrigger) definieras på run metoden för en funktion med namnet HttpTriggerQueueOutput. Funktionen skriver till en lagringskö som anteckningen @QueueOutput definierar för parametern 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.");

Mer information finns i utvecklarguiden för Java.

Hur du definierar utlösare och bindningar för Node.js funktioner beror på den specifika versionen av Node.js för Azure Functions:

I Node.js för Azure Functions version 4 konfigurerar du utlösare och bindningar med hjälp av objekt som exporteras från modulen @azure/functions . Mer information finns i utvecklarguiden för Node.js.

Metoden http för det exporterade app objektet definierar en HTTP-utlösare. Metoden storageQueueoutput definierar en utdatabindning för den här utlösaren.

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

Metoden http för det exporterade app objektet definierar en HTTP-utlösare. Metoden storageQueueoutput definierar en utdatabindning för den här utlösaren.

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

Den här exempelfilen function.json definierar funktionen:

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

Mer information finns i PowerShell-utvecklarguiden.

Hur funktionen definieras beror på versionen av Python för Azure Functions:

I Python för Azure Functions version 2 definierar du funktionen direkt i koden med hjälp av dekoratörer:

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

Bindningsöverväganden

  • Alla tjänster stöder inte både indata- och utdatabindningar. Se ditt specifika bindningstillägg för specifika kodexempel för bindningar.

  • Utlösare och bindningar definieras på olika sätt beroende på utvecklingsspråket. Se till att välja språk överst i den här artikeln.

  • Utlösar- och bindningsnamn är begränsade till alfanumeriska tecken och _, understrecket.

Uppgift att lägga till bindningar i en funktion

Du kan ansluta funktionen till andra tjänster med hjälp av indata- eller utdatabindningar. Lägg till en bindning genom att lägga till dess specifika definitioner i din funktion. Mer information finns i Lägga till bindningar till en befintlig funktion i Azure Functions.

Azure Functions stöder flera bindningar som måste konfigureras korrekt. En funktion kan till exempel läsa data från en kö (indatabindning) och skriva data till en databas (utdatabindning) samtidigt.

Bindningar som stöds

Den här tabellen visar bindningar som stöds i huvudversionerna av Azure Functions-körningen:

Typ 1.x1 2.x och senare2 Utlösare Indata Utdata
Blob Storage
Azure Cosmos DB
Azure-datautforskaren
Azure SQL
Dapr4
Event Grid
Event Hubs
HTTP och webhooks
IoT Hub
Kafka3
Mobilappar
Protokoll för modellkontext
Notification Hubs
Kölagringsplats
Redis
RabbitMQ3
SendGrid
Service Buss
Azure SignalR Service
Table Storage
Tidtagare
Twilio

1Supporten upphör för version 1.x av Azure Functions-körningen den 14 september 2026. Vi rekommenderar starkt att du migrerar dina appar till version 4.x för fullständig support.

2 Från och med version 2.x-körningen måste alla bindningar utom HTTP och timer registreras. Se Registrera Azure Functions-bindningstillägg.

3 Utlösare stöds inte i förbrukningsplanen. Den här bindningstypen kräver körningsdrivna utlösare.

4 Den här bindningstypen stöds endast i Kubernetes, Azure IoT Edge och andra lägen med egen värd.

Information om vilka bindningar som är i förhandsversion eller som är godkända för produktionsanvändning finns i Språk som stöds.

Specifika versioner av bindningstillägg stöds endast medan den underliggande tjänst-SDK:en stöds. Ändringar av stöd i den underliggande SDK-versionen för tjänsten påverkar stödet för det förbrukande tillägget.

Kodexempel för bindningar

Använd följande tabell för att hitta fler exempel på specifika bindningstyper som visar hur du arbetar med bindningar i dina funktioner. Välj först den språkflik som motsvarar projektet.

Bindningskoden för C# beror på den specifika processmodellen.

Tjänst Exempel Exempel
Blob Storage (lagring av blobbar) Utlösare
Indata
Resultat
Länk
Azure Cosmos DB Utlösare
Indata
Resultat
Länk
Öppna Azure-datautforskaren Indata
Resultat
Länk
Azure SQL Utlösare
Indata
Resultat
Länk
Event Grid (händelsenätverk) Utlösare
Resultat
Länk
Event Hubs Utlösare
Resultat
IoT Hub Utlösare
Resultat
HTTP Utlösare Länk
Kölager Utlösare
Resultat
Länk
RabbitMQ Utlösare
Resultat
SendGrid Resultat
Tjänstebuss Utlösare
Resultat
Länk
Azure SignalR Service Utlösare
Indata
Resultat
Tabellagring Indata
Resultat
Tidtagare Utlösare Länk
Twilio Resultat Länk
Tjänst Exempel Exempel
Blob Storage (lagring av blobbar) Utlösare
Indata
Resultat
Länk
Azure Cosmos DB Utlösare
Indata
Resultat
Länk
Öppna Azure-datautforskaren Indata
Resultat
Länk
Azure SQL Utlösare
Indata
Resultat
Event Grid (händelsenätverk) Utlösare
Resultat
Länk
Event Hubs Utlösare
Resultat
IoT Hub Utlösare
Resultat
HTTP Utlösare Länk
Kölager Utlösare
Resultat
Länk
RabbitMQ Utlösare
Resultat
SendGrid Resultat
Tjänstebuss Utlösare
Resultat
Länk
Azure SignalR Service Utlösare
Indata
Resultat
Tabellagring Indata
Resultat
Tidtagare Utlösare Länk
Twilio Resultat Länk
Tjänst Exempel Exempel
Blob Storage (lagring av blobbar) Utlösare
Indata
Resultat
Länk
Azure Cosmos DB Utlösare
Indata
Resultat
Länk
Öppna Azure-datautforskaren Indata
Resultat
Azure SQL Utlösare
Indata
Resultat
Länk
Event Grid (händelsenätverk) Utlösare
Resultat
Länk
Event Hubs Utlösare
Resultat
IoT Hub Utlösare
Resultat
HTTP Utlösare Länk
Kölager Utlösare
Resultat
Länk
RabbitMQ Utlösare
Resultat
SendGrid Resultat
Tjänstebuss Utlösare
Resultat
Länk
Azure SignalR Service Utlösare
Indata
Resultat
Tabellagring Indata
Resultat
Tidtagare Utlösare Länk
Twilio Resultat Länk
Tjänst Exempel Exempel
Blob Storage (lagring av blobbar) Utlösare
Indata
Resultat
Länk
Azure Cosmos DB Utlösare
Indata
Resultat
Länk
Azure SQL Utlösare
Indata
Resultat
Event Grid (händelsenätverk) Utlösare
Resultat
Länk
Event Hubs Utlösare
Resultat
IoT Hub Utlösare
Resultat
HTTP Utlösare Länk
Kölager Utlösare
Resultat
Länk
RabbitMQ Utlösare
Resultat
SendGrid Resultat
Tjänstebuss Utlösare
Resultat
Länk
Azure SignalR Service Utlösare
Indata
Resultat
Tabellagring Indata
Resultat
Tidtagare Utlösare Länk
Twilio Resultat Länk

Bindningskoden för Python beror på Python-modellversionen.

Tjänst Exempel Exempel
Blob Storage (lagring av blobbar) Utlösare
Indata
Resultat
Länk
Azure Cosmos DB Utlösare
Indata
Resultat
Länk
Öppna Azure-datautforskaren Indata
Resultat
Azure SQL Utlösare
Indata
Resultat
Länk
Event Grid (händelsenätverk) Utlösare
Resultat
Länk
Event Hubs Utlösare
Resultat
IoT Hub Utlösare
Resultat
HTTP Utlösare Länk
Kölager Utlösare
Resultat
Länk
RabbitMQ Utlösare
Resultat
SendGrid Resultat
Tjänstebuss Utlösare
Resultat
Länk
Azure SignalR Service Utlösare
Indata
Resultat
Tabellagring Indata
Resultat
Tidtagare Utlösare Länk
Twilio Resultat Länk

Anpassade bindningar

Du kan skapa anpassade in- och utdatabindningar. Bindningar måste skrivas i .NET, men de kan användas från alla språk som stöds. Mer information om hur du skapar anpassade bindningar finns i Skapa anpassade indata- och utdatabindningar.