Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
In dit artikel leert u de concepten op hoog niveau rondom functiestriggers en bindingen.
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 verschillende bindingen combineren en aanpassen aan het specifieke scenario van uw functie. Bindingen zijn optioneel en een functie kan een of meerdere 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 verschillende 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 Blob Storage en maakt een nieuw Azure Cosmos DB-document. | Tijdmeter | Blob Storage (opslag van blobs) | Azure Cosmos DB |
Event Grid wordt gebruikt om een afbeelding uit Blob Storage en een document van Azure Cosmos DB te lezen om een e-mailbericht te verzenden. | Gebeurtenisgrid | Blob Storage en Azure Cosmos DB | SendGrid |
* Vertegenwoordigt verschillende wachtrijen
Deze voorbeelden zijn niet volledig bedoeld, maar worden gegeven om te laten zien hoe u triggers en bindingen samen kunt gebruiken. Zie Azure Functions-scenario's voor een uitgebreidere set scenario's.
Aanbeveling
Voor 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
Een functie heeft één trigger en een of meer bindingen. Het type binding is invoer of uitvoer. Niet alle services ondersteunen zowel invoer- als uitvoerbindingen. Bekijk de specifieke bindingsextensie voor specifieke codevoorbeelden voor bindingen.
Triggers en bindingen worden verschillend gedefinieerd, afhankelijk van de ontwikkeltaal. Zorg ervoor dat u uw taal bovenaan het artikel selecteert.
Trigger- en bindingsnamen zijn beperkt tot alfanumerieke tekens en _
, het onderstrepingsteken.
In dit voorbeeld ziet u een door HTTP geactiveerde functie met een uitvoerbinding waarmee een bericht naar een Azure Storage-wachtrij wordt geschreven.
Voor C#-klassebibliotheekfuncties worden triggers en bindingen geconfigureerd door methoden en parameters te decoreren met C#-kenmerken, waarbij het toegepaste specifieke kenmerk afhankelijk kan zijn 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 die beide een HttpResponse
HTTP-aanvraag retourneert en ook een bericht naar een opslagwachtrij schrijft 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 handleiding voor het C#-geïsoleerde werkrolmodel 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 worden triggers en bindingen geconfigureerd door aantekeningen te maken op specifieke methoden en parameters. Deze HTTP-trigger (@HttpTrigger
) is gedefinieerd op de run
-methode voor een functie genaamd HttpTriggerQueueOutput
, die schrijft naar een opslagwachtrij die wordt gedefinieerd door de @QueueOutput
-annotatie op de message
-parameter.
@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 triggers en bindingen worden gedefinieerd voor Node.js functies, is afhankelijk van de specifieke versie van Node.js voor Functions:
In Node.js voor 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.
Dit voorbeeld is een door HTTP geactiveerde functie waarmee een wachtrijitem wordt gemaakt voor elke ontvangen HTTP-aanvraag.
De http
methode voor het geëxporteerde app
object definieert een HTTP-trigger en 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 en 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 Functions:
In Python voor 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.')
Bindingen toevoegen 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 | 1.x1 | 2.x en hoger2 | 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 | ✔ | ✔ | ✔ | ||
Notification Hubs | ✔ | ✔ | |||
Queue-opslag | ✔ | ✔ | ✔ | ✔ | |
Redis | ✔ | ✔ | ✔ | ✔ | |
RabbitMQ3 | ✔ | ✔ | ✔ | ||
SendGrid | ✔ | ✔ | ✔ | ||
Service Bus | ✔ | ✔ | ✔ | ✔ | |
SignalR | ✔ | ✔ | ✔ | ✔ | |
Tabelopslag | ✔ | ✔ | ✔ | ✔ | |
Timer | ✔ | ✔ | ✔ | ||
Twilio | ✔ | ✔ | ✔ |
Opmerkingen:
- De ondersteuning wordt beëindigd voor versie 1.x van de Azure Functions-runtime op 14 september 2026. We raden u ten zeerste aan uw apps te migreren naar versie 4.x voor volledige ondersteuning.
- Vanaf de runtime van versie 2.x moeten alle bindingen behalve HTTP en Timer worden geregistreerd. Raadpleeg Bindingextensies registreren.
- Triggers worden niet ondersteund in het verbruiksabonnement. Vereist uitvoeringstijdgestuurde triggers.
- Ondersteund alleen in Kubernetes-, IoT Edge- en andere zelfgehoste modi.
Zie Ondersteunde talen voor informatie over welke bindingen in preview zijn of zijn goedgekeurd voor productiegebruik.
Specifieke versies van bindingsuitbreidingen 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.
Voorbeelden van bindingscode
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-opslag |
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 |
Wachtrij opslag |
Trekker Uitvoer |
Verbinden |
RabbitMQ |
Trekker Uitvoer |
|
SendGrid | Uitvoer | |
Dienstbus |
Trekker Uitvoer |
Verbinden |
SignalR |
Trekker Invoer Uitvoer |
|
Tabelopslag |
Invoer Uitvoer |
|
Tijdmeter | Trekker | Verbinden |
Twilio | Uitvoer | Verbinden |
Dienst | Voorbeelden | Voorbeelden |
---|---|---|
Blob-opslag |
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 |
Wachtrij opslag |
Trekker Uitvoer |
Verbinden |
RabbitMQ |
Trekker Uitvoer |
|
SendGrid | Uitvoer | |
Dienstbus |
Trekker Uitvoer |
Verbinden |
SignalR |
Trekker Invoer Uitvoer |
|
Tabelopslag |
Invoer Uitvoer |
|
Tijdmeter | Trekker | Verbinden |
Twilio | Uitvoer | Verbinden |
Dienst | Voorbeelden | Voorbeelden |
---|---|---|
Blob-opslag |
Trekker Invoer Uitvoer |
Verbinden |
Azure Cosmos DB |
Trekker Invoer Uitvoer |
Verbinden |
Azure-gegevensverkenner |
Invoer Uitvoer |
|
Azure SQL |
Trekker Invoer Uitvoer |
Verbinden |
Gebeurtenisgrid |
Trekker Uitvoer |
Verbinden |
Evenement Hubs |
Trekker Uitvoer |
|
IoT-hub |
Trekker Uitvoer |
|
HTTP | Trekker | Verbinden |
Wachtrij opslag |
Trekker Uitvoer |
Verbinden |
RabbitMQ |
Trekker Uitvoer |
|
SendGrid | Uitvoer | |
Dienstbus |
Trekker Uitvoer |
Verbinden |
SignalR |
Trekker Invoer Uitvoer |
|
Tabelopslag |
Invoer Uitvoer |
|
Tijdmeter | Trekker | Verbinden |
Twilio | Uitvoer | Verbinden |
Dienst | Voorbeelden | Voorbeelden |
---|---|---|
Blob-opslag |
Trekker Invoer Uitvoer |
Verbinden |
Azure Cosmos DB |
Trekker Invoer Uitvoer |
Verbinden |
Azure SQL |
Trekker Invoer Uitvoer |
|
Gebeurtenisgrid |
Trekker Uitvoer |
Verbinden |
Evenement Hubs |
Trekker Uitvoer |
|
IoT-hub |
Trekker Uitvoer |
|
HTTP | Trekker | Verbinden |
Wachtrij opslag |
Trekker Uitvoer |
Verbinden |
RabbitMQ |
Trekker Uitvoer |
|
SendGrid | Uitvoer | |
Dienstbus |
Trekker Uitvoer |
Verbinden |
SignalR |
Trekker Invoer Uitvoer |
|
Tabelopslag |
Invoer Uitvoer |
|
Tijdmeter | Trekker | Verbinden |
Twilio | Uitvoer | Verbinden |
Bindingscode voor Python is afhankelijk van de python-modelversie.
Dienst | Voorbeelden | Voorbeelden |
---|---|---|
Blob-opslag |
Trekker Invoer Uitvoer |
Verbinden |
Azure Cosmos DB |
Trekker Invoer Uitvoer |
Verbinden |
Azure-gegevensverkenner |
Invoer Uitvoer |
|
Azure SQL |
Trekker Invoer Uitvoer |
Verbinden |
Gebeurtenisgrid |
Trekker Uitvoer |
Verbinden |
Evenement Hubs |
Trekker Uitvoer |
|
IoT-hub |
Trekker Uitvoer |
|
HTTP | Trekker | Verbinden |
Wachtrij opslag |
Trekker Uitvoer |
Verbinden |
RabbitMQ |
Trekker Uitvoer |
|
SendGrid | Uitvoer | |
Dienstbus |
Trekker Uitvoer |
Verbinden |
SignalR |
Trekker Invoer Uitvoer |
|
Tabelopslag |
Invoer Uitvoer |
|
Tijdmeter | Trekker | Verbinden |
Twilio | Uitvoer | Verbinden |
Aangepaste bindingen
U kunt aangepaste invoer- en uitvoerbindingen maken. Bindingen moeten worden gemaakt in .NET, maar kunnen worden gebruikt vanuit elke ondersteunde taal. Zie Aangepaste invoer- en uitvoerbindingen maken voor meer informatie over het maken van aangepaste bindingen.