Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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 | ✔ |
- Registrieren Sie alle Bindungen außer HTTP und Timer. Siehe Azure Functions-Bindungserweiterungen registrieren.
- Auslöser werden im Verbrauchsplan nicht unterstützt. Für diesen Bindungstyp sind laufzeitgesteuerte Trigger erforderlich.
- 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 | BlobClientBlobContainerClientBlockBlobClientPageBlobClientAppendBlobClient |
Auslöser: GA Eingabe: GA |
| Azure Cosmos DB | CosmosClientDatabaseContainer |
Eingabe: GA |
| Azure-Ereignisraster | CloudEventEventGridEvent |
Auslöser: GA |
| Azure Event Hubs | EventDataEventHubProducerClient |
Auslöser: GA |
| Azure Queue Storage | QueueClientQueueMessage |
Auslöser: GA |
| Azure Service Bus | ServiceBusClientServiceBusReceiverServiceBusSenderServiceBusMessage |
Auslöser: GA |
| Azure Table Storage | TableClientTableEntity |
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 | BlobClientContainerClientStorageStreamDownloader |
Auslöser: GA Eingabe: GA |
QuickstartBlobClientContainerClientStorageStreamDownloader |
| Azure Cosmos DB | CosmosClientDatabaseProxyContainerProxy |
Eingabe: Vorschau |
QuickstartContainerProxyCosmosClientDatabaseProxy |
| Azure Event Hubs | EventData |
Trigger: Vorschau |
QuickstartEventData |
| Azure Service Bus | ServiceBusReceivedMessage |
Trigger: Vorschau |
QuickstartServiceBusReceivedMessage |
Ü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 | BlobClientContainerClientReadableStream |
Vorschau |
| Azure Service Bus | ServiceBusClientServiceBusReceiverServiceBusSenderServiceBusMessage |
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 | BlobClientBlobContainerClient |
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.