Utlösare och bindningar i Azure Functions
I den här artikeln lär du dig de övergripande begreppen kring funktionsutlösare och bindningar.
Utlösare gör att en funktion körs. En utlösare definierar hur en funktion anropas och funktionen kan bara ha 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 olika 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 olika 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ö. | Kö* | None | Kö* |
Ett schemalagt jobb läser Blob Storage-innehåll och skapar ett nytt Azure Cosmos DB-dokument. | Timer | Blob Storage | Azure Cosmos DB |
Event Grid används för att läsa en bild från Blob Storage och ett dokument från Azure Cosmos DB för att skicka ett e-postmeddelande. | Event Grid | Blob Storage och Azure Cosmos DB | SendGrid |
* Representerar olika köer
De här exemplen är inte avsedda att vara uttömmande, men tillhandahålls för att illustrera hur du kan använda utlösare och bindningar tillsammans. En mer omfattande uppsättning scenarier finns i Azure Functions-scenarier.
Dricks
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
En funktion har en enda utlösare och en eller flera bindningar. Typen av bindning är antingen indata eller utdata. Alla tjänster stöder inte både indata- och utdatabindningar. Se ditt specifika bindningstillägg för specifika bindningskodexempel.
Utlösare och bindningar definieras på olika sätt beroende på utvecklingsspråket. Se till att välja ditt språk överst i artikeln.
Det här exemplet visar en HTTP-utlöst funktion med en utdatabindning som skriver ett meddelande till en Azure Storage-kö.
För C#-klassbiblioteksfunktioner konfigureras utlösare och bindningar genom att dekorera metoder och parametrar med C#-attribut, där det specifika attribut som tillämpas 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
som både returnerar en HttpResponse
till HTTP-begäran och även skriver ett meddelande till en lagringskö med hjälp av en QueueOutput
bindning:
public class MultiResponse
{
[QueueOutput("outqueue",Connection = "AzureWebJobsStorage")]
public string[] Messages { get; set; }
public HttpResponseData HttpResponse { get; set; }
}
Mer information finns i guiden för C#-isolerad arbetsmodell.
Ä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 konfigureras 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
, som skriver till en lagringskö som definieras av anteckningen @QueueOutput
på 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 utlösare och bindningar definieras för Node.js funktioner beror på den specifika versionen av Node.js för Functions:
Det här exemplet är en HTTP-utlöst funktion som skapar ett köobjekt för varje HTTP-begäran som tas emot.
Metoden http
för det exporterade app
objektet definierar en HTTP-utlösare och storageQueue
metoden för output
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 och storageQueue
metoden för output
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 Functions:
I Python för Functions version 2 definierar du funktionen direkt i kod 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.')
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 högre2 | Utlösare | Indata | Utdata |
---|---|---|---|---|---|
Blob Storage | ✔ | ✔ | ✔ | ✔ | ✔ |
Azure Cosmos DB | ✔ | ✔ | ✔ | ✔ | ✔ |
Azure-datautforskaren | ✔ | ✔ | ✔ | ||
Azure SQL | ✔ | ✔ | ✔ | ✔ | |
Dapr4 | ✔ | ✔ | ✔ | ✔ | |
Event Grid | ✔ | ✔ | ✔ | ✔ | |
Event Hubs | ✔ | ✔ | ✔ | ✔ | |
HTTP & webhooks | ✔ | ✔ | ✔ | ✔ | |
IoT Hub | ✔ | ✔ | ✔ | ||
Kafka3 | ✔ | ✔ | ✔ | ||
Mobile Apps | ✔ | ✔ | ✔ | ||
Notification Hubs | ✔ | ✔ | |||
Queue Storage | ✔ | ✔ | ✔ | ✔ | |
Redis | ✔ | ✔ | |||
RabbitMQ3 | ✔ | ✔ | ✔ | ||
SendGrid | ✔ | ✔ | ✔ | ||
Service Bus | ✔ | ✔ | ✔ | ✔ | |
SignalR | ✔ | ✔ | ✔ | ✔ | |
Table Storage | ✔ | ✔ | ✔ | ✔ | |
Tidtagare | ✔ | ✔ | ✔ | ||
Twilio | ✔ | ✔ | ✔ |
Anteckningar:
- Supporten 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.
- Från och med version 2.x-körningen måste alla bindningar utom HTTP och Timer registreras. Se Registrera bindningstillägg.
- Utlösare stöds inte i förbrukningsplanen. Kräver körningsdrivna utlösare.
- Stöds endast i Kubernetes, 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 bara 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 |
---|---|---|
Blobb-lagring | Utlösare Indata Output |
Länk |
Azure Cosmos DB | Utlösare Indata Output |
Länk |
Öppna Azure-datautforskaren | Indata Output |
Länk |
Azure SQL | Utlösare Indata Output |
Länk |
Event Grid | Utlösare Output |
Länk |
Event Hubs | Utlösare Output |
|
IoT Hub | Utlösare Output |
|
HTTP | Utlösare | Länk |
Queue Storage | Utlösare Output |
Länk |
RabbitMQ | Utlösare Output |
|
SendGrid | Output | |
Service Bus | Utlösare Output |
Länk |
SignalR | Utlösare Indata Output |
|
Table Storage | Indata Output |
|
Timer | Utlösare | Länk |
Twilio | Output | Länk |
Tjänst | Exempel | Exempel |
---|---|---|
Blobb-lagring | Utlösare Indata Output |
Länk |
Azure Cosmos DB | Utlösare Indata Output |
Länk |
Öppna Azure-datautforskaren | Indata Output |
Länk |
Azure SQL | Utlösare Indata Output |
|
Event Grid | Utlösare Output |
Länk |
Event Hubs | Utlösare Output |
|
IoT Hub | Utlösare Output |
|
HTTP | Utlösare | Länk |
Queue Storage | Utlösare Output |
Länk |
RabbitMQ | Utlösare Output |
|
SendGrid | Output | |
Service Bus | Utlösare Output |
Länk |
SignalR | Utlösare Indata Output |
|
Table Storage | Indata Output |
|
Timer | Utlösare | Länk |
Twilio | Output | Länk |
Tjänst | Exempel | Exempel |
---|---|---|
Blobb-lagring | Utlösare Indata Output |
Länk |
Azure Cosmos DB | Utlösare Indata Output |
Länk |
Öppna Azure-datautforskaren | Indata Output |
|
Azure SQL | Utlösare Indata Output |
Länk |
Event Grid | Utlösare Output |
Länk |
Event Hubs | Utlösare Output |
|
IoT Hub | Utlösare Output |
|
HTTP | Utlösare | Länk |
Queue Storage | Utlösare Output |
Länk |
RabbitMQ | Utlösare Output |
|
SendGrid | Output | |
Service Bus | Utlösare Output |
Länk |
SignalR | Utlösare Indata Output |
|
Table Storage | Indata Output |
|
Timer | Utlösare | Länk |
Twilio | Output | Länk |
Tjänst | Exempel | Exempel |
---|---|---|
Blobb-lagring | Utlösare Indata Output |
Länk |
Azure Cosmos DB | Utlösare Indata Output |
Länk |
Azure SQL | Utlösare Indata Output |
|
Event Grid | Utlösare Output |
Länk |
Event Hubs | Utlösare Output |
|
IoT Hub | Utlösare Output |
|
HTTP | Utlösare | Länk |
Queue Storage | Utlösare Output |
Länk |
RabbitMQ | Utlösare Output |
|
SendGrid | Output | |
Service Bus | Utlösare Output |
Länk |
SignalR | Utlösare Indata Output |
|
Table Storage | Indata Output |
|
Timer | Utlösare | Länk |
Twilio | Output | Länk |
Bindningskoden för Python beror på Python-modellversionen.
Tjänst | Exempel | Exempel |
---|---|---|
Blobb-lagring | Utlösare Indata Output |
Länk |
Azure Cosmos DB | Utlösare Indata Output |
Länk |
Öppna Azure-datautforskaren | Indata Output |
|
Azure SQL | Utlösare Indata Output |
Länk |
Event Grid | Utlösare Output |
Länk |
Event Hubs | Utlösare Output |
|
IoT Hub | Utlösare Output |
|
HTTP | Utlösare | Länk |
Queue Storage | Utlösare Output |
Länk |
RabbitMQ | Utlösare Output |
|
SendGrid | Output | |
Service Bus | Utlösare Output |
Länk |
SignalR | Utlösare Indata Output |
|
Table Storage | Indata Output |
|
Timer | Utlösare | Länk |
Twilio | Output | Länk |
Anpassade bindningar
Du kan skapa anpassade in- och utdatabindningar. Bindningar måste skrivas i .NET, men kan användas från valfritt språk som stöds. Mer information om hur du skapar anpassade bindningar finns i Skapa anpassade indata- och utdatabindningar.