Konzepte für Azure Functions-Trigger und -Bindungen

In diesem Artikel lernen Sie die allgemeinen Konzepte rund um Funktionstrigger und Bindungen kennen.

Trigger sind das, was die Ausführung einer Funktion bewirkt. Ein Trigger definiert, wie eine Funktion aufgerufen wird, und eine Funktion muss genau einen Trigger aufweisen. Trigger können wie Methodenaufrufe Daten an Ihre Funktion übergeben.

Die Bindung an eine Funktion ist eine Möglichkeit, Ihre Funktionen deklarativ mit anderen Ressourcen zu verbinden. Bindungen übergeben entweder Daten an Ihre Funktion (eine Eingabebindung) oder ermöglichen es Ihnen, Daten aus Ihrer Funktion (eine Ausgabebindung) mithilfe von Bindungsparametern zu schreiben. Ihr Funktionstrigger ist im Wesentlichen eine spezielle Art von Eingabebindung.

Sie können verschiedene Bindungen nach Belieben kombinieren, wie es dem spezifischen Szenario für Ihre Funktion entspricht. Bindungen sind optional, und eine Funktion kann mehrere Eingabe- und/oder Ausgabebindungen haben.

Mit Triggern und Bindungen können Sie den hartcodieren Zugriff auf andere Dienste vermeiden. Ihre Funktion empfängt Daten (z.B. den Inhalt einer Warteschlangennachricht) in Funktionsparametern. Sie senden Daten (z.B., um eine Warteschlangennachricht zu erstellen), indem Sie den Rückgabewert der Funktion verwenden.

Betrachten Sie die folgenden Beispiele, wie Sie verschiedene Funktionen implementieren könnten.

Beispielszenario Trigger Eingabebindung Ausgabebindung
Eine neue Warteschlangennachricht trifft ein, die eine Funktion ausführt, die das Schreiben in eine andere Warteschlange bewirkt. Warteschlange* None Warteschlange*
Ein geplanter Auftrag liest den Inhalt von Blob-Speicher und erstellt ein neues Azure Cosmos DB-Dokument. Zeitgeber Blob Storage Azure Cosmos DB
Das Event Grid wird verwendet, um ein Image aus Blob-Speicher und ein Dokument aus Azure Cosmos DB zu lesen, um eine E-Mail zu senden. Event Grid BLOB Storage und Azure Cosmos DB SendGrid

* Stellt verschiedene Warteschlangen dar

Diese Beispiele sollen nicht erschöpfend sein, werden aber bereitgestellt, um die gemeinsame Verwendung von Triggern und Bindungen zu veranschaulichen. Weitere Szenarien finden Sie unter Azure Functions-Szenarien.

Tipp

Funktionen erfordern nicht, dass Sie Eingabe- und Ausgabebindungen verwenden, um eine Verbindung mit Azure-Diensten herzustellen. Sie können immer einen Azure SDK-Client in Ihrem Code erstellen und stattdessen für Ihre Datenübertragungen verwenden. Weitere Informationen finden Sie unter Herstellen einer Verbindung mit Diensten.

Definitionen für Trigger und Bindungen

Eine Funktion verfügt über einen einzelnen Auslöser und eine oder mehrere Bindungen. Der Bindungstyp ist entweder Eingabe oder Ausgabe. Nicht alle Dienste unterstützen sowohl Eingabe- als auch Ausgabebindungen. Sehen Sie sich für Ihre bestimmte Bindungserweiterung die Codebeispiele für Bindungen an.

Trigger und Bindungen werden je nach Entwicklungssprache unterschiedlich definiert. Stellen Sie sicher, dass Sie Ihre Sprache oben im Artikel auswählen.

Dieses Beispiel zeigt eine durch HTTP ausgelöste Funktion mit einer Ausgabebindung, die eine Nachricht in eine Azure Storage-Warteschlange schreibt.

Für C#-Klassenbibliotheksfunktionen werden Trigger und Bindungen durch das Versehen von Methoden und Parametern mit C#-Attributen konfiguriert, wobei das angewendete spezifische Attribut möglicherweise vom C#-Laufzeitmodell abhängig ist:

Der HTTP-Trigger (HttpTrigger) wird für die Run-Methode für eine Funktion mit dem Namen HttpExample definiert, die ein MultiResponse-Objekt zurückgibt:

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

Dieses Beispiel zeigt die MultiResponse-Objektdefinition, die sowohl HttpResponse an die HTTP-Anforderung zurückgibt, als auch mithilfe einer QueueOutput-Bindung eine Nachricht in eine Speicherwarteschlange schreibt:

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

Weitere Informationen finden Sie im Leitfaden zum isolierten C#-Workermodell.

C#-Legacyskriptfunktionen verwenden eine Definitionsdatei vom Typ „function.json. Weitere Informationen finden Sie in der C#-Skriptentwicklerreferenz (C#-Skript, CSX) zu Azure Functions.

Für Java-Funktionen werden Trigger und Bindungen durch Kommentieren bestimmter Methoden und Parameter konfiguriert. Dieser HTTP-Trigger (@HttpTrigger) wird für die run-Methode für eine Funktion mit dem Namen HttpTriggerQueueOutput definiert, die in eine Speicherwarteschlange schreibt, die durch die Anmerkung @QueueOutput für den Parameter message definiert wird:

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

Weitere Informationen finden Sie im Java-Entwicklerhandbuch.

Die Art und Weise, wie Trigger und Bindungen für Node.js-Funktionen definiert werden, hängt von der spezifischen Version von Node.js für Functions ab:

In Node.js für Functions, Version 4, konfigurieren Sie Trigger und Bindungen mithilfe von Objekten, die aus dem Modul @azure/functions exportiert wurden. Weitere Informationen finden Sie im Node.js-Entwicklerhandbuch.

Die per HTTP ausgelöste Funktion in diesem Beispiel erstellt ein Warteschlangenelement für jede empfangene HTTP-Anforderung.

Die http-Methode für das exportierte app-Objekt definiert einen HTTP-Trigger, und die storageQueue-Methode für output definiert eine Ausgabebindung für diesen 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.' };
    },
});

Die http-Methode für das exportierte app-Objekt definiert einen HTTP-Trigger, und die storageQueue-Methode für output definiert eine Ausgabebindung für diesen 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,
});

Diese function.json-Beispieldatei definiert die folgende Funktion:

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

Weitere Informationen finden Sie im PowerShell-Entwicklerhandbuch.

Die Art und Weise, wie die Funktion definiert wird, hängt von der Version von Python für Functions ab:

In Python für Functions, Version 2, definieren Sie die Funktion direkt im Code mithilfe von Decorator-Elementen.

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

Hinzufügen von Bindungen zu einer Funktion

Sie können Ihre Funktion mit anderen Diensten verbinden, indem Sie Eingabe- oder Ausgabebindungen verwenden. Fügen Sie eine Bindung hinzu, indem Sie Ihrer Funktion ihre spezifischen Definitionen hinzufügen. Informationen zur Vorgehensweise finden Sie unter Hinzufügen von Bindungen zu einer vorhandenen Funktion in Azure Functions.

Azure Functions unterstützt mehrere Bindungen, die ordnungsgemäß konfiguriert werden müssen. Beispielsweise kann eine Funktion Daten aus einer Warteschlange (Eingabebindung) lesen und gleichzeitig Daten in eine Datenbank (Ausgabebindung) schreiben.

Unterstützte Bindungen

Die folgende Tabelle zeigt die Bindungen, die in den Hauptversionen der Azure Functions-Runtime unterstützt werden:

Typ 1.x1 2.x und höher2 Trigger Eingabe Output
Blob Storage
Azure Cosmos DB
Azure Data Explorer
Azure SQL
Dapr4
Event Grid
Event Hubs
HTTP und Webhooks
IoT Hub
Kafka3
Mobile Apps
Notification Hubs
Queue Storage
Redis
RabbitMQ3
SendGrid
Service Bus
SignalR
Tabellenspeicherung
Zeitgeber
Twilio

Hinweise:

  1. Der Support für Version 1.x der Azure Functions-Laufzeit endet am 14. September 2026. Es wird dringend empfohlen, dass Sie Ihre Apps zu Version 4.x migrieren, um vollständigen Support zu erhalten.
  2. Ab Version 2.x der Runtime müssen alle Bindungen mit Ausnahme von HTTP und Timer registriert werden. Siehe Registrieren von Bindungserweiterungen.
  3. Trigger werden im Plan „Verbrauch“ nicht unterstützt. Erfordert runtimegesteuerte Trigger.
  4. Wird nur in Kubernetes, IoT Edge und anderen selbstgehosteten Modi unterstützt.

Informationen darüber, welche Bindungen sich in der Vorschauversion befinden oder für die Produktion zugelassen sind, finden Sie unter Unterstützte Sprachen.

Bestimmte Bindungserweiterungsversionen werden nur unterstützt, solange das zugrunde liegende Dienst-SDK unterstützt wird. Änderungen an der Unterstützung in der zugrunde liegenden Dienst-SDK-Version wirken sich auf die Unterstützung der verarbeitenden Erweiterung aus.

Codebeispiele für Bindungen

In der folgenden Tabelle finden Sie weitere Beispiele für bestimmte Bindungstypen, die Ihnen zeigen, wie Sie mit Bindungen in Ihren Funktionen arbeiten. Wählen Sie zunächst die Registerkarte „Sprache“ aus, die Ihrem Projekt entspricht.

Der Bindungscode für C# hängt vom jeweiligen Prozessmodell ab.

Power BI-Dienst Beispiele Beispiele
Blob Storage Trigger
Input (Eingabe)
Ausgabe
Link
Azure Cosmos DB Trigger
Input (Eingabe)
Ausgabe
Link
Azure-Daten-Explorer Input (Eingabe)
Ausgabe
Link
Azure SQL Trigger
Input (Eingabe)
Ausgabe
Link
Event Grid Trigger
Ausgabe
Link
Event Hubs Trigger
Ausgabe
IoT Hub Trigger
Ausgabe
HTTP Trigger Link
Queue Storage Trigger
Ausgabe
Link
RabbitMQ Trigger
Ausgabe
SendGrid Ausgabe
Service Bus Trigger
Ausgabe
Link
SignalR Trigger
Input (Eingabe)
Ausgabe
Table Storage Input (Eingabe)
Ausgabe
Timer Trigger Link
Twilio Ausgabe Link
Dienst Beispiele Beispiele
Blob Storage Trigger
Input (Eingabe)
Ausgabe
Link
Azure Cosmos DB Trigger
Input (Eingabe)
Ausgabe
Link
Azure-Daten-Explorer Input (Eingabe)
Ausgabe
Link
Azure SQL Trigger
Input (Eingabe)
Ausgabe
Event Grid Trigger
Ausgabe
Link
Event Hubs Trigger
Ausgabe
IoT Hub Trigger
Ausgabe
HTTP Trigger Link
Queue Storage Trigger
Ausgabe
Link
RabbitMQ Trigger
Ausgabe
SendGrid Ausgabe
Service Bus Trigger
Ausgabe
Link
SignalR Trigger
Input (Eingabe)
Ausgabe
Table Storage Input (Eingabe)
Ausgabe
Timer Trigger Link
Twilio Ausgabe Link
Dienst Beispiele Beispiele
Blob Storage Trigger
Input (Eingabe)
Ausgabe
Link
Azure Cosmos DB Trigger
Input (Eingabe)
Ausgabe
Link
Azure-Daten-Explorer Input (Eingabe)
Ausgabe
Azure SQL Trigger
Input (Eingabe)
Ausgabe
Link
Event Grid Trigger
Ausgabe
Link
Event Hubs Trigger
Ausgabe
IoT Hub Trigger
Ausgabe
HTTP Trigger Link
Queue Storage Trigger
Ausgabe
Link
RabbitMQ Trigger
Ausgabe
SendGrid Ausgabe
Service Bus Trigger
Ausgabe
Link
SignalR Trigger
Input (Eingabe)
Ausgabe
Table Storage Input (Eingabe)
Ausgabe
Timer Trigger Link
Twilio Ausgabe Link
Dienst Beispiele Beispiele
Blob Storage Trigger
Input (Eingabe)
Ausgabe
Link
Azure Cosmos DB Trigger
Input (Eingabe)
Ausgabe
Link
Azure SQL Trigger
Input (Eingabe)
Ausgabe
Event Grid Trigger
Ausgabe
Link
Event Hubs Trigger
Ausgabe
IoT Hub Trigger
Ausgabe
HTTP Trigger Link
Queue Storage Trigger
Ausgabe
Link
RabbitMQ Trigger
Ausgabe
SendGrid Ausgabe
Service Bus Trigger
Ausgabe
Link
SignalR Trigger
Input (Eingabe)
Ausgabe
Table Storage Input (Eingabe)
Ausgabe
Timer Trigger Link
Twilio Ausgabe Link

Die Bindung von Code für Python hängt von der Python-Modellversion ab.

Power BI-Dienst Beispiele Beispiele
Blob Storage Trigger
Input (Eingabe)
Ausgabe
Link
Azure Cosmos DB Trigger
Input (Eingabe)
Ausgabe
Link
Azure-Daten-Explorer Input (Eingabe)
Ausgabe
Azure SQL Trigger
Input (Eingabe)
Ausgabe
Link
Event Grid Trigger
Ausgabe
Link
Event Hubs Trigger
Ausgabe
IoT Hub Trigger
Ausgabe
HTTP Trigger Link
Queue Storage Trigger
Ausgabe
Link
RabbitMQ Trigger
Ausgabe
SendGrid Ausgabe
Service Bus Trigger
Ausgabe
Link
SignalR Trigger
Input (Eingabe)
Ausgabe
Table Storage Input (Eingabe)
Ausgabe
Timer Trigger Link
Twilio Ausgabe Link

Benutzerdefinierte Bindungen

Sie können benutzerdefinierte Eingabe- und Ausgabebindungen erstellen. Bindungen müssen in .NET erstellt werden, können aber von jeder unterstützten Sprache genutzt werden. Weitere Informationen zum Erstellen benutzerdefinierter Bindungen finden Sie unter Creating custom input and output bindings (Erstellen benutzerdefinierter Eingabe- und Ausgabebindungen).