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:
- 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.
- Ab Version 2.x der Runtime müssen alle Bindungen mit Ausnahme von HTTP und Timer registriert werden. Siehe Registrieren von Bindungserweiterungen.
- Trigger werden im Plan „Verbrauch“ nicht unterstützt. Erfordert runtimegesteuerte Trigger.
- 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).