Freigeben über


Azure Functions Auslöser und Bindungen

In diesem Artikel lernen Sie die allgemeinen Konzepte rund um Trigger und Bindungen für Funktionen 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 Bindungen kombinieren und an das spezifische Szenario Ihrer Funktion anpassen. Bindungen sind optional, und eine Funktion kann eine oder mehrere Eingabe- und/oder Ausgabebindungen aufweisen.

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 für die Implementierung von Funktionen:

Beispielszenario Auslöser Eingabebindung Ausgabebindung
Eine neue Warteschlangennachricht wird empfangen, die eine Funktion zum Schreiben in eine andere Warteschlange ausführt. Warteschlange * Nichts Warteschlange *
Ein geplanter Auftrag liest Azure Blob Storage-Inhalte und erstellt ein neues Azure Cosmos DB-Dokument. Zeitgeber Blob Storage Azure Cosmos DB (ein Microsoft-Datenbankdienst)
Azure Event Grid wird verwendet, um ein Bild aus Blob Storage und ein Dokument aus Azure Cosmos DB zu lesen, um eine E-Mail zu senden. Ereignisraster BLOB Storage und Azure Cosmos DB SendGrid

* Stellt unterschiedliche Warteschlangen dar.

Diese Beispiele sollen nicht erschöpfend sein, aber sie veranschaulichen, wie Sie Trigger und Bindungen zusammen verwenden können. Weitere Szenarien finden Sie unter Azure Functions-Szenarien.

Tipp

Azure Functions erfordert 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

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

Für C#-Klassenbibliotheksfunktionen konfigurieren Sie Trigger und Bindungen, indem Sie Methoden und Parameter mit C#-Attributen versehen. Das spezifische Attribut, das Sie anwenden, hängt möglicherweise vom C#-Laufzeitmodell ab:

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 Objektdefinition gibt HttpResponse an die HTTP-Anforderung zurück und schreibt eine Nachricht über eine QueueOutput-Bindung in eine Speicherqueue:

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

Weitere Informationen finden Sie im C#-Leitfaden für isolierte Arbeitsmodelle.

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

Für Java-Funktionen konfigurieren Sie Trigger und Bindungen, indem Sie bestimmte Methoden und Parameter kommentieren. Dieser HTTP-Trigger (@HttpTrigger) ist in der run-Methode für eine Funktion namens HttpTriggerQueueOutput definiert. Die Funktion schreibt in eine Speicherwarteschlange, die die @QueueOutput-Anmerkung für den message-Parameter definiert:

@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 Sie Trigger und Bindungen für Node.js Funktionen definieren, hängt von der spezifischen Version von Node.js für Azure Functions ab:

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

Die http Methode für das exportierte app Objekt definiert einen HTTP-Trigger. Die storageQueue Methode auf output definiert eine Ausgabebindung für diesen Auslöser.

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. Die storageQueue Methode auf output definiert eine Ausgabebindung für diesen Auslöser.

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 Azure Functions ab:

In Python für Azure Functions, Version 2, definieren Sie die Funktion direkt im Code mithilfe von Dekoratoren:

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

Bindungsüberlegungen

  • Nicht alle Dienste unterstützen sowohl Eingabe- als auch Ausgabebindungen. In Ihrer spezifischen Bindungserweiterung finden Sie spezifische Codebeispiele für Bindungen.

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

  • Trigger- und Bindungsnamen sind auf alphanumerische Zeichen und _den Unterstrich beschränkt.

Aufgabe zum 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:

type 1.x1 2.x und höher2 Auslöser Eingabe Output
Blob Storage
Azure Cosmos DB
Azure Data Explorer
Azure SQL
Dapr4
Ereignisraster
Event Hubs
HTTP und Webhooks
IoT Hub
Kafka3
Mobile Apps
Modellkontextprotokoll
Notification Hubs
Queuespeicher
Redis
RabbitMQ3
SendGrid
Servicebus
Azure SignalR-Dienst
Tabellenspeicher
Zeitgeber
Twilio

1Der Support endet für Version 1.x der Azure Functions-Laufzeit am 14. September 2026. Es wird dringend empfohlen, Ihre Apps zu Version 4.x zu migrieren, um vollständigen Support zu erhalten.

2 Ab version 2.x Runtime müssen alle Bindungen außer HTTP und Timer registriert werden. Siehe Registrieren von Azure Functions-Bindungserweiterungen.

3 Trigger werden im Verbrauchsplan nicht unterstützt. Für diesen Bindungstyp sind laufzeitgesteuerte Trigger erforderlich.

4 Dieser Bindungstyp wird nur in Kubernetes, Azure IoT Edge und anderen selbst gehosteten 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 Versionen von Bindungserweiterungen werden nur unterstützt, während 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 für die Sprache aus, die in Ihrem Projekt verwendet wird.

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

Dienst Beispiele Beispiele
Blob Storage Auslösen
Input (Eingabe)
Ausgabe
Verbinden
Azure Cosmos DB (ein Microsoft-Datenbankdienst) Auslösen
Input (Eingabe)
Ausgabe
Verbinden
Azure-Daten-Explorer Input (Eingabe)
Ausgabe
Verbinden
Azure SQL Auslösen
Input (Eingabe)
Ausgabe
Verbinden
Ereignisraster Auslösen
Ausgabe
Verbinden
Ereignis-Hubs Auslösen
Ausgabe
IoT Hub Auslösen
Ausgabe
HTTP Auslösen Verbinden
Queue Storage Auslösen
Ausgabe
Verbinden
RabbitMQ Auslösen
Ausgabe
SendGrid Ausgabe
Dienstbus Auslösen
Ausgabe
Verbinden
Azure SignalR-Dienst Auslösen
Input (Eingabe)
Ausgabe
Table Storage Input (Eingabe)
Ausgabe
Zeitgeber Auslösen Verbinden
Twilio Ausgabe Verbinden
Dienst Beispiele Beispiele
Blob Storage Auslösen
Input (Eingabe)
Ausgabe
Verbinden
Azure Cosmos DB (ein Microsoft-Datenbankdienst) Auslösen
Input (Eingabe)
Ausgabe
Verbinden
Azure-Daten-Explorer Input (Eingabe)
Ausgabe
Verbinden
Azure SQL Auslösen
Input (Eingabe)
Ausgabe
Ereignisraster Auslösen
Ausgabe
Verbinden
Ereignis-Hubs Auslösen
Ausgabe
IoT Hub Auslösen
Ausgabe
HTTP Auslösen Verbinden
Queue Storage Auslösen
Ausgabe
Verbinden
RabbitMQ Auslösen
Ausgabe
SendGrid Ausgabe
Dienstbus Auslösen
Ausgabe
Verbinden
Azure SignalR-Dienst Auslösen
Input (Eingabe)
Ausgabe
Table Storage Input (Eingabe)
Ausgabe
Zeitgeber Auslösen Verbinden
Twilio Ausgabe
Dienst Beispiele Beispiele
Blob Storage Auslösen
Input (Eingabe)
Ausgabe
Verbinden
Azure Cosmos DB (ein Microsoft-Datenbankdienst) Auslösen
Input (Eingabe)
Ausgabe
Verbinden
Azure-Daten-Explorer Input (Eingabe)
Ausgabe
Azure SQL Auslösen
Input (Eingabe)
Ausgabe
Verbinden
Ereignisraster Auslösen
Ausgabe
Ereignis-Hubs Auslösen
Ausgabe
IoT Hub Auslösen
Ausgabe
HTTP Auslösen Verbinden
Queue Storage Auslösen
Ausgabe
Verbinden
RabbitMQ Auslösen
Ausgabe
SendGrid Ausgabe
Dienstbus Auslösen
Ausgabe
Verbinden
Azure SignalR-Dienst Auslösen
Input (Eingabe)
Ausgabe
Table Storage Input (Eingabe)
Ausgabe
Zeitgeber Auslösen
Twilio Ausgabe
Dienst Beispiele Beispiele
Blob Storage Auslösen
Input (Eingabe)
Ausgabe
Azure Cosmos DB (ein Microsoft-Datenbankdienst) Auslösen
Input (Eingabe)
Ausgabe
Azure SQL Auslösen
Input (Eingabe)
Ausgabe
Ereignisraster Auslösen
Ausgabe
Ereignis-Hubs Auslösen
Ausgabe
IoT Hub Auslösen
Ausgabe
HTTP Auslösen Verbinden
Queue Storage Auslösen
Ausgabe
RabbitMQ Auslösen
Ausgabe
SendGrid Ausgabe
Dienstbus Auslösen
Ausgabe
Azure SignalR-Dienst Auslösen
Input (Eingabe)
Ausgabe
Table Storage Input (Eingabe)
Ausgabe
Zeitgeber Auslösen
Twilio Ausgabe

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

Dienst Beispiele Beispiele
Blob Storage Auslösen
Input (Eingabe)
Ausgabe
Verbinden
Azure Cosmos DB (ein Microsoft-Datenbankdienst) Auslösen
Input (Eingabe)
Ausgabe
Verbinden
Azure-Daten-Explorer Input (Eingabe)
Ausgabe
Azure SQL Auslösen
Input (Eingabe)
Ausgabe
Verbinden
Ereignisraster Auslösen
Ausgabe
Ereignis-Hubs Auslösen
Ausgabe
IoT Hub Auslösen
Ausgabe
HTTP Auslösen Verbinden
Queue Storage Auslösen
Ausgabe
RabbitMQ Auslösen
Ausgabe
SendGrid Ausgabe
Dienstbus Auslösen
Ausgabe
Verbinden
Azure SignalR-Dienst Auslösen
Input (Eingabe)
Ausgabe
Table Storage Input (Eingabe)
Ausgabe
Zeitgeber Auslösen
Twilio Ausgabe

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 verwendet werden. Weitere Informationen zum Erstellen benutzerdefinierter Bindungen finden Sie unter Creating custom input and output bindings (Erstellen benutzerdefinierter Eingabe- und Ausgabebindungen).