Azure Functions Trigger 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 * None Warteschlange *
Ein geplanter Auftrag liest die Azure Blob Storage-Inhalte und erstellt ein neues Azure Cosmos DB-Dokument. Zeitgeber Blob Storage (Speicher für Binärdatenblöcke) Azure Cosmos DB
Azure Event Grid dient zum Lesen eines Bilds aus Blob Storage und einem Dokument aus Azure Cosmos DB zum Senden einer E-Mail. 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. Eine umfassendere Gruppe von 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:

Du definierst den HTTP-Trigger (HttpTrigger) in der Run Methode für eine Funktion mit dem Namen HttpExample , die ein MultiResponse Objekt zurückgibt:

[Function("HttpExample")]
public MultiResponse Run([HttpTrigger(AuthorizationLevel.Function, "get", "post")] HttpRequest req)

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 IActionResult 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 Entwicklerreferenz Azure Functions C#-Skript (CSX).

Für Java Funktionen konfigurieren Sie Trigger und Bindungen, indem Sie bestimmte Methoden und Parameter kommentieren. Du definierst diesen HTTP-Trigger (@HttpTrigger) in der Methode run für eine Funktion namens HttpExample. Die Funktion schreibt in eine Speicherwarteschlange mit dem Namen outqueue, die in der Anmerkung @QueueOutput für den Parameter msg definiert ist:

@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 Entwicklerhandbuch Java.

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 Modul @azure/functions exportiert wurden. Weitere Informationen finden Sie im Node.js-Entwicklerhandbuch.

Die Methode des http exportierten app Objekts 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 Methode des http exportierten app Objekts 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.

Wie Sie die Funktion definieren, hängt von der Python-Version 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.FUNCTION)

@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. Weitere Informationen finden Sie unter Bindings zu einer vorhandenen Funktion in Azure Functions hinzufügen.

Azure Functions unterstützt mehrere Bindungen, die du korrekt konfigurieren musst. Zum Beispiel kann eine Funktion Daten aus einer Warteschlange lesen (Eingabebindung) und gleichzeitig Daten in eine Datenbank schreiben (Ausgabebindung).

Unterstützte Bindungen

Diese Tabelle zeigt die in Azure Functions:1 verfügbaren Trigger und Bindungen

type Auslöser Eingabe Output
Blob Storage ✔ ✔ ✔
Azure Cosmos DB ✔ ✔ ✔
Azure Data Explorer ✔ ✔
Azure SQL ✔ ✔ ✔
Dapr3 ✔ ✔ ✔
Ereignisraster ✔ ✔
Event Hubs ✔ ✔
HTTP und Webhooks ✔ ✔
IoT Hub ✔
Kafka2 ✔ ✔
Modellkontextprotokoll ✔
Queuespeicher ✔ ✔
Redis ✔ ✔ ✔
RabbitMQ2 ✔ ✔
SendGrid ✔
Servicebus ✔ ✔
Azure SignalR Service ✔ ✔ ✔
Tabellenspeicher ✔ ✔
Timer ✔
Twilio ✔
Verwalteter Connector ✔
  1. Registrieren Sie alle Bindungen außer HTTP und Timer. Siehe Azure Functions-Bindungserweiterungen registrieren.
  2. Auslöser werden im Verbrauchsplan nicht unterstützt. Für diesen Bindungstyp sind laufzeitgesteuerte Trigger erforderlich.
  3. 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.

Verwaltete Verbinder

Verwaltete Connectors im Azure Connector Namespace erweitern die über unterstützte Bindungen verfügbaren Dienste. Sie können Connector-Trigger und SDK-Aktionen verwenden, um sich mit Diensten wie Microsoft 365, Teams und SharePoint zu integrieren, während Connector Namespace Webhooks, Authentifizierung und Retries verwaltet. Um mehr zu erfahren, siehe Use managed connectors in Azure Functions.

SDK-Typen

Azure Functions Bindungserweiterungen verwenden Azure Dienst-SDKs, um eine Verbindung mit Azure Diensten herzustellen. Die spezifischen SDK-Typen, die von Bindungen verwendet werden, können sich darauf auswirken, wie Sie mit den Daten in Ihren Funktionen arbeiten. Einige Bindungen unterstützen SDK-spezifische Typen, die eine umfangreichere Funktionalität und eine bessere Integration in den Dienst bieten, während andere generische Typen wie Zeichenfolgen oder Bytearrays verwenden. Wenn verfügbar, kann die Verwendung von SDK-spezifischen Typen Vorteile bieten, z. B. bessere Typsicherheit, einfachere Datenmanipulation und Zugriff auf dienstspezifische Features.

Diese Tabelle gibt Bindungserweiterungen an, die derzeit SDK-Typen unterstützen:

Extension Typen Unterstützungsstufe
Azure Blob Storage BlobClient
BlobContainerClient
BlockBlobClient
PageBlobClient
AppendBlobClient
Auslöser: GA
Eingabe: GA
Azure Cosmos DB CosmosClient
Database
Container
Eingabe: GA
Azure-Ereignisraster CloudEvent
EventGridEvent
Auslöser: GA
Azure Event Hubs EventData
EventHubProducerClient
Auslöser: GA
Azure Queue Storage QueueClient
QueueMessage
Auslöser: GA
Azure Service Bus ServiceBusClient
ServiceBusReceiver
ServiceBusSender
ServiceBusMessage
Auslöser: GA
Azure Table Storage TableClient
TableEntity
Eingabe: GA

Überlegungen zu SDK-Typen:

  • Bei Verwendung von Bindungsausdrücken, die auf Triggerdaten basieren, können SDK-Typen für den Trigger selbst nicht verwendet werden.
  • Für Ausgabeszenarien, in denen Sie möglicherweise einen SDK-Typ verwenden, erstellen und arbeiten Sie direkt mit SDK-Clients, anstatt eine Ausgabebindung zu verwenden.
  • Der Azure Cosmos DB Trigger verwendet den Azure Cosmos DB Änderungsfeed und macht Änderungsfeedelemente als JSON-serialisierbare Typen verfügbar. Daher werden SDK-Typen für diesen Trigger nicht unterstützt.

Weitere Informationen finden Sie im C#-Entwicklerhandbuch unter SDK-Typen .

Extension Typen Unterstützungsstufe Beispiele
Azure Blob Storage BlobClient
ContainerClient
StorageStreamDownloader
Auslöser: GA
Eingabe: GA
Quickstart
BlobClient
ContainerClient
StorageStreamDownloader
Azure Cosmos DB CosmosClient
DatabaseProxy
ContainerProxy
Eingabe: Vorschau Quickstart
ContainerProxy
CosmosClient
DatabaseProxy
Azure Event Hubs EventData Trigger: Vorschau Quickstart
EventData
Azure Service Bus ServiceBusReceivedMessage Trigger: Vorschau Quickstart
ServiceBusReceivedMessage

Überlegungen zu SDK-Typen:

  • Für Ausgabeszenarien, in denen Sie möglicherweise einen SDK-Typ verwenden, erstellen und arbeiten Sie direkt mit SDK-Clients, anstatt eine Ausgabebindung zu verwenden.
  • Der Azure Cosmos DB Trigger verwendet den Azure Cosmos DB Änderungsfeed und macht Änderungsfeedelemente als JSON-serialisierbare Typen verfügbar. Daher werden SDK-Typen für diesen Trigger nicht unterstützt.

SDK-Typen werden nur bei Verwendung des Python v2-Programmiermodells unterstützt. Weitere Informationen finden Sie im Python Entwicklerhandbuch unter SDK-Typbindungen.

Extension Typen Unterstützungsstufe
Azure Blob Storage BlobClient
ContainerClient
ReadableStream
Vorschau
Azure Service Bus ServiceBusClient
ServiceBusReceiver
ServiceBusSender
ServiceBusMessage
Vorschau

SDK-Typen werden nur bei Verwendung des Node v4-Programmiermodells unterstützt. Weitere Informationen finden Sie unter SDK-Typen im Node.js Entwicklerhandbuch.

Extension Typen Unterstützungsstufe
Azure Blob Storage BlobClient
BlobContainerClient
Vorschau

Weitere Informationen finden Sie im Java Entwicklerhandbuch unter SDK-Typen.

Von Bedeutung

SDK-Typen werden derzeit für PowerShell-Apps nicht unterstützt.

Go unterstützt die SDK-Clientinjektion bei Triggern, die Azure-SDK-Clients bereitstellen. Während der öffentlichen Vorschau können Blob Storage-Trigger ein authentifiziertes Azure SDK *blob.Client direkt im Handler empfangen.

Extension Typen Unterstützungsstufe
Azure Blob Storage *blob.Client Vorschau

Weitere Informationen finden Sie unter Erweiterungstrigger in der Go-Entwicklerreferenz.

Agentenbindungen

Von Bedeutung

Agent-Bindungen für Funktions-Apps für Python sind derzeit als Vorschau verfügbar. Funktionen, Paketnamen und Konfigurationen können sich vor der allgemeinen Verfügbarkeit ändern.

Agenten-Bindungen ermöglichen es Ihnen, ein Agent Objekt in eine Python-Funktion einzufügen, während Sie die Standard-Azure Functions-Trigger, Bindungen und Anwendungslogik beibehalten. Verwenden Sie Agent-Bindungen, wenn Teile eines Funktionsworkflows von agentenbasiertem Schlussfolgern profitieren, Ihr Funktionscode aber weiterhin die Kontrolle über die Ausführung behalten muss.

Agentenbindungen unterstützen außerdem Durable Functions-Orchestrierungen. Die wiederspielsichere context.call_agent() API führt Agentenoperationen in einer Aktivität aus, sodass die Orchestrierungswiedergabe deterministisch bleibt.

Agentenbindungen sind für das Python v2-Programmiermodell verfügbar. Weitere Informationen finden Sie unter Agent-Bindungen für Python-Funktions-Apps.

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 (Speicher für Binärdatenblöcke) Auslösen
Eingabe
Output
Link
Azure Cosmos DB Auslösen
Eingabe
Output
Link
Azure Data Explorer Eingabe
Output
Link
Azure SQL Auslösen
Eingabe
Output
Link
Ereignisraster Auslösen
Output
Link
Event Hubs Auslösen
Output
IoT Hub Auslösen
Output
HTTP Auslösen Link
Modellkontextprotokoll Werkzeugauslöser
Ressourcenauslöser
Prompt Trigger
Link
Queuespeicher Auslösen
Output
Link
RabbitMQ Auslösen
Output
SendGrid Output
Service Bus Auslösen
Output
Link
Azure SignalR Service Auslösen
Eingabe
Output
Tabellenspeicher Eingabe
Output
Zeitgeber Auslösen Link
Twilio Output Link
Verwaltete Verbinder Auslösen Link
Dienst Beispiele Beispiele
Blob Storage (Speicher für Binärdatenblöcke) Auslösen
Eingabe
Output
Link
Azure Cosmos DB Auslösen
Eingabe
Output
Link
Azure Data Explorer Eingabe
Output
Link
Azure SQL Auslösen
Eingabe
Output
Ereignisraster Auslösen
Output
Link
Event Hubs Auslösen
Output
IoT Hub Auslösen
Output
HTTP Auslösen Link
Modellkontextprotokoll Werkzeugauslöser
Ressourcenauslöser
Prompt Trigger
Link
Queuespeicher Auslösen
Output
Link
RabbitMQ Auslösen
Output
SendGrid Output
Service Bus Auslösen
Output
Link
Azure SignalR Service Auslösen
Eingabe
Output
Tabellenspeicher Eingabe
Output
Zeitgeber Auslösen Link
Twilio Output
Dienst Beispiele Beispiele
Blob Storage (Speicher für Binärdatenblöcke) Auslösen
Eingabe
Output
Link
Azure Cosmos DB Auslösen
Eingabe
Output
Link
Azure Data Explorer Eingabe
Output
Azure SQL Auslösen
Eingabe
Output
Link
Ereignisraster Auslösen
Output
Event Hubs Auslösen
Output
IoT Hub Auslösen
Output
HTTP Auslösen Link
Modellkontextprotokoll Werkzeugauslöser
Ressourcenauslöser
Prompt Trigger
Link
Queuespeicher Auslösen
Output
Link
RabbitMQ Auslösen
Output
SendGrid Output
Service Bus Auslösen
Output
Link
Azure SignalR Service Auslösen
Eingabe
Output
Tabellenspeicher Eingabe
Output
Zeitgeber Auslösen
Twilio Output
Verwaltete Verbinder Auslösen Link
Dienst Beispiele Beispiele
Blob Storage (Speicher für Binärdatenblöcke) Auslösen
Eingabe
Output
Azure Cosmos DB Auslösen
Eingabe
Output
Azure SQL Auslösen
Eingabe
Output
Ereignisraster Auslösen
Output
Event Hubs Auslösen
Output
IoT Hub Auslösen
Output
HTTP Auslösen Link
Queuespeicher Auslösen
Output
RabbitMQ Auslösen
Output
SendGrid Output
Service Bus Auslösen
Output
Azure SignalR Service Auslösen
Eingabe
Output
Tabellenspeicher Eingabe
Output
Zeitgeber Auslösen
Twilio Output

Der Bindungscode für Python hängt von der Python Modellversion ab.

Dienst Beispiele Beispiele
Blob Storage (Speicher für Binärdatenblöcke) Auslösen
Eingabe
Output
Link
Azure Cosmos DB Auslösen
Eingabe
Output
Link
Azure Data Explorer Eingabe
Output
Azure SQL Auslösen
Eingabe
Output
Link
Ereignisraster Auslösen
Output
Event Hubs Auslösen
Output
IoT Hub Auslösen
Output
HTTP Auslösen Link
Modellkontextprotokoll Werkzeugauslöser
Ressourcenauslöser
Prompt Trigger
Link
Queuespeicher Auslösen
Output
RabbitMQ Auslösen
Output
SendGrid Output
Service Bus Auslösen
Output
Link
Azure SignalR Service Auslösen
Eingabe
Output
Tabellenspeicher Eingabe
Output
Zeitgeber Auslösen
Twilio Output
Verwaltete Verbinder Auslösen Link

Benutzerdefinierte Bindungen

Sie können benutzerdefinierte Eingabe- und Ausgabebindungen erstellen. Du musst Bindungen in .NET erstellen, aber du kannst sie aus jeder unterstützten Sprache konsumieren. Weitere Informationen zum Erstellen benutzerdefinierter Bindungen finden Sie unter Creating custom input and output bindings.