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 * | 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 HttpExample definiert. Die Funktion schreibt in eine Speicherwarteschlange mit dem Namen outqueue, die die @QueueOutput Annotation für den msg 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 | 4.x1 | 1.x2 | Auslöser | Eingabe | Output |
|---|---|---|---|---|---|
| Blob-Speicher | ✔ | ✔ | ✔ | ✔ | ✔ |
| Azure Cosmos DB | ✔ | ✔ | ✔ | ✔ | ✔ |
| Azure Data Explorer | ✔ | ✔ | ✔ | ||
| Azure SQL | ✔ | ✔ | ✔ | ✔ | |
| Dapr4 | ✔ | ✔ | ✔ | ✔ | |
| Ereignisraster | ✔ | ✔ | ✔ | ✔ | |
| Event Hubs | ✔ | ✔ | ✔ | ✔ | |
| HTTP und Webhooks | ✔ | ✔ | ✔ | ✔ | |
| IoT Hub | ✔ | ✔ | ✔ | ||
| Kafka3 | ✔ | ✔ | ✔ | ||
| Mobile Apps | ✔ | ✔ | ✔ | ||
| Modellkontextprotokoll | ✔ | ✔ | |||
| Benachrichtigungs-Hubs | ✔ | ✔ | |||
| Queuespeicher | ✔ | ✔ | ✔ | ✔ | |
| Redis | ✔ | ✔ | ✔ | ✔ | |
| RabbitMQ3 | ✔ | ✔ | ✔ | ||
| SendGrid | ✔ | ✔ | ✔ | ||
| Servicebus | ✔ | ✔ | ✔ | ✔ | |
| Azure SignalR-Dienst | ✔ | ✔ | ✔ | ✔ | |
| Tabellenspeicher | ✔ | ✔ | ✔ | ✔ | |
| Zeitgeber | ✔ | ✔ | ✔ | ||
| Twilio | ✔ | ✔ | ✔ |
- Registrieren Sie alle Bindungen außer HTTP und Timer. Siehe Registrieren von Azure Functions-Bindungserweiterungen. Dieser Schritt ist bei Verwendung von Version 1.x der Funktionslaufzeit nicht erforderlich.
- Der Support endet für Version 1.x der Azure Functions-Laufzeit am 14. September 2026. Migrieren Sie Ihre Apps zur Version 4.x , um den vollständigen Support zu ermöglichen.
- 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.
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 |
Trigger: GA Eingabe: GA |
| Azure Cosmos DB | CosmosClientDatabaseContainer |
Eingabe: GA |
| Azure-Ereignisraster | CloudEventEventGridEvent |
Trigger: GA |
| Azure Event Hubs | EventDataEventHubProducerClient |
Trigger: GA |
| Azure Queue Storage | QueueClientQueueMessage |
Trigger: GA |
| Azure Service Bus | ServiceBusClientServiceBusReceiverServiceBusSenderServiceBusMessage |
Trigger: GA |
| Azure-Tabellenspeicher | 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 |
Trigger: GA Eingabe: GA |
SchnellstartBlobClientContainerClientStorageStreamDownloader |
| Azure Cosmos DB | CosmosClientDatabaseProxyContainerProxy |
Eingabe: Vorschau |
SchnellstartContainerProxyCosmosClientDatabaseProxy |
| Azure Event Hubs | EventData |
Trigger: Vorschau |
SchnellstartEventData |
| Azure Service Bus | ServiceBusReceivedMessage |
Trigger: Vorschau |
SchnellstartServiceBusReceivedMessage |
Ü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.
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).