Anmerkung
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.
Die Dapr-Erweiterung für Azure-Funktionen ist eine Reihe von Tools und Diensten, mit denen Entwickler Azure-Funktionen problemlos in die Dapr-Plattform (Distributed Application Runtime) integrieren können.
Azure Functions ist ein ereignisgesteuerter Computedienst, der eine Reihe von Triggern und Bindungen bereitstellt, um problemlos eine Verbindung mit anderen Azure-Diensten herzustellen. Dapr bietet eine Reihe von Bausteinen und bewährten Methoden zum Erstellen verteilter Anwendungen, einschließlich Microservices, Statusverwaltung, Pub/Sub Messaging und mehr.
Mit der Integration zwischen Dapr und Funktionen können Sie Funktionen erstellen, die auf Ereignisse von Dapr oder externen Systemen reagieren.
| Maßnahme | Richtung | Typ |
|---|---|---|
| Trigger für eine Dapr-Eingabebindung | N/A | daprBindingTrigger |
| Auslösen eines Aufrufs eines Dapr-Diensts | N/A | daprServiceInvocationTrigger |
| Auslösen eines Dapr-Themenabonnements | N/A | daprTopicTrigger |
| Abrufen des Dapr-Zustands für eine Ausführung | In | daprState |
| Abrufen von geheimen Dapr-Schlüsseln für eine Ausführung | In | daprSecret |
| Speichern eines Werts in einem Dapr-Zustand | Out | daprState |
| Aufrufen einer anderen Dapr-App | Out | daprInvoke |
| Veröffentlichen einer Nachricht in einem Dapr-Thema | Out | daprPublish |
| Senden eines Werts an eine Dapr-Ausgabebindung | Out | daprBinding |
Installieren der Erweiterung
Das zu installierende NuGet-Erweiterungspaket hängt vom C# -Modus im Prozess- oder isolierten Arbeitsprozess ab, den Sie in Ihrer Funktions-App verwenden:
Diese Erweiterung ist verfügbar, indem Sie das NuGet-Paket, Version 1.0.0, installieren.
Verwenden der .NET CLI:
dotnet add package Microsoft.Azure.WebJobs.Extensions.Dapr
Installieren des Bundles
Um diese Bindungserweiterung in Ihrer App verwenden zu können, stellen Sie sicher, dass die host.json Datei im Stammverzeichnis Ihres Projekts diesen extensionBundle Verweis enthält:
{
"version": "2.0",
"extensionBundle": {
"id": "Microsoft.Azure.Functions.ExtensionBundle",
"version": "[4.0.0, 5.0.0)"
}
}
In diesem Beispiel weist der version Wert des [4.0.0, 5.0.0) Funktionenhosts an, eine Bundleversion zu verwenden, die mindestens 4.0.0 aber kleiner ist als 5.0.0, die alle potenziellen Versionen von 4.x enthält. Diese Notation verwaltet Ihre App effektiv auf der neuesten verfügbaren Nebenversion des v4.x-Erweiterungspakets.
Wenn möglich, sollten Sie die neueste Hauptversion des Erweiterungspakets verwenden und der Laufzeit erlauben, die neueste Nebenversion automatisch zu verwalten. Sie können den Inhalt des neuesten Bundles auf der Releaseseite der Erweiterungspakete anzeigen. Weitere Informationen finden Sie unter Azure Functions-Erweiterungspakete.
Dapr-Aktivierung
Sie können Dapr mithilfe verschiedener [Argumente und Anmerkungen][dapr-args] basierend auf dem Laufzeitkontext konfigurieren. Sie können Dapr für Azure-Funktionen über zwei Kanäle konfigurieren:
- Infrastructure as Code (IaC)-Vorlagen, wie in Bicep- oder Azure Resource Manager(ARM)-Vorlagen
- Azure-Portal
Wenn Sie eine IaC-Vorlage verwenden, geben Sie die folgenden Argumente im properties Abschnitt der Container-App-Ressourcendefinition an.
DaprConfig: {
enabled: true
appId: '${envResourceNamePrefix}-funcapp'
appPort: 3001
httpReadBufferSize: ''
httpMaxRequestSize: ''
logLevel: ''
enableApiLogging: true
}
Die oben genannten Dapr-Konfigurationswerte gelten als Anwendungsbereichsänderungen. Wenn Sie eine Container-App im Modus mit mehreren Überarbeitungen ausführen, werden änderungen an diesen Einstellungen keine neue Revision erstellen. Stattdessen werden alle vorhandenen Überarbeitungen neu gestartet, um sicherzustellen, dass sie mit den meisten up-to-date-Werten konfiguriert sind.
Navigieren Sie beim Konfigurieren von Dapr über das Azure-Portal zu Ihrer Funktions-App, und wählen Sie "Dapr " im linken Menü aus:
Dapr-Ports und Listener
Wenn Sie eine Funktion von Dapr auslösen, macht die Erweiterung den Port 3001 automatisch verfügbar, um eingehende Anforderungen vom Dapr-Sidecar abzuhören.
Von Bedeutung
Port 3001 wird nur verfügbar gemacht und überwacht, wenn ein Dapr-Trigger in der Funktions-App definiert ist. Bei Verwendung von Dapr wartet das Sidecar auf den Empfang einer Antwort vom definierten Port, bevor die Instanziierung abgeschlossen wird. Definieren Sie die dapr.io/port Anmerkung nicht, oder --app-port es sei denn, Sie haben einen Trigger. Auf diese Weise kann Ihre Anwendung vom Dapr-Sidecar gesperrt werden.
Wenn Sie nur Eingabe- und Ausgabebindungen verwenden, muss der Port 3001 nicht verfügbar gemacht oder definiert werden.
Wenn Azure Functions standardmäßig versucht, mit Dapr zu kommunizieren, ruft sie Dapr über den von der Umgebungsvariablen DAPR_HTTP_PORTaufgelösten Port auf. Wenn diese Variable null ist, wird standardmäßig portiert 3500.
Sie können die von Eingabe- und Ausgabebindungen verwendete Dapr-Adresse überschreiben, indem Sie die DaprAddress Eigenschaft für function.json die Bindung (oder das Attribut) festlegen. Standardmäßig wird es verwendet http://localhost:{DAPR_HTTP_PORT}.
Die Funktions-App macht weiterhin einen anderen Port und Endpunkt für Dinge wie HTTP-Trigger verfügbar, die lokal standardmäßig auf 7071, aber in einem Container standardmäßig verwendet werden 80.
Bindungstypen
Die für .NET unterstützten Bindungstypen hängen sowohl vom Erweiterungsversions- als auch vom C#-Ausführungsmodus ab. Dies kann eine der folgenden Sein:
Eine In-Process-Klassenbibliothek ist eine kompilierte C#-Funktion, die im gleichen Prozess wie die Funktionslaufzeit ausgeführt wird.
Die Dapr-Erweiterung unterstützt Parametertypen gemäß der folgenden Tabelle.
| Binding | Parametertypen |
|---|---|
| Dapr-Trigger |
daprBindingTrigger daprServiceInvocationTrigger daprTopicTrigger |
| Dapr-Eingabe |
daprState daprSecret |
| Dapr-Ausgabe |
daprState daprInvoke daprPublish daprBinding |
Beispiele für diese Typen finden Sie im GitHub-Repository für die Erweiterung.
Testen der Dapr-Erweiterung für Azure-Funktionen
Erfahren Sie, wie Sie die Dapr-Erweiterung für Azure-Funktionen über die bereitgestellten Beispiele verwenden.
| Beispiele | Description |
|---|---|
| Schnellstart | Erste Schritte mit der Dapr Pub/Sub-Bindung und HttpTrigger. |
| Dapr Kafka | Erfahren Sie, wie Sie die Azure Functions Dapr-Erweiterung mit der Kafka-Bindungskomponente Dapr verwenden. |
| .NET In-Process | Erfahren Sie, wie Sie azure Functions in-Process-Modell verwenden, um sie in mehrere Dapr-Komponenten in .NET zu integrieren, z. B. Dienstaufrufe, Pub/Sub, Bindungen und Zustandsverwaltung. |
| .NET Isoliert | Integration mit Dapr-Komponenten in .NET mithilfe des Out-of-Proc(OOP)-Ausführungsmodells von Azure Functions. |
Testen der Dapr-Erweiterung für Azure-Funktionen
Erfahren Sie, wie Sie die Dapr-Erweiterung für Azure-Funktionen über die bereitgestellten Beispiele verwenden.
| Beispiele | Description |
|---|---|
| Java-Funktionen | Erfahren Sie, wie Sie die Azure Functions Dapr-Erweiterung mit Java verwenden. |
Testen der Dapr-Erweiterung für Azure-Funktionen
Erfahren Sie, wie Sie die Dapr-Erweiterung für Azure-Funktionen über die bereitgestellten Beispiele verwenden.
| Beispiele | Description |
|---|---|
| Schnellstart | Erste Schritte mit der Dapr Pub/Sub-Bindung und HttpTrigger. |
| Dapr Kafka | Erfahren Sie, wie Sie die Azure Functions Dapr-Erweiterung mit der Kafka-Bindungskomponente Dapr verwenden. |
| JavaScript | Führen Sie eine JavaScript Dapr-Funktionsanwendung aus, und integrieren Sie sie mit Dapr Service Invocation, Pub/sub, Bindings und State Management mithilfe von Azure Functions. |
Testen der Dapr-Erweiterung für Azure-Funktionen
Erfahren Sie, wie Sie die Dapr-Erweiterung für Azure-Funktionen über die bereitgestellten Beispiele verwenden.
| Beispiele | Description |
|---|---|
| PowerShell-Funktionen | Erfahren Sie, wie Sie die Azure Functions Dapr-Erweiterung mit PowerShell verwenden. |
Testen der Dapr-Erweiterung für Azure-Funktionen
Erfahren Sie, wie Sie die Dapr-Erweiterung für Azure-Funktionen über die bereitgestellten Beispiele verwenden.
| Beispiele | Description |
|---|---|
| Dapr Kafka | Erfahren Sie, wie Sie die Azure Functions Dapr-Erweiterung mit der Kafka-Bindungskomponente Dapr verwenden. |
| Python v1 | Führen Sie eine dapr-isierte Python-Anwendung aus, und verwenden Sie das Programmiermodell Azure Functions Python v1, um in Dapr-Komponenten zu integrieren. |
| Python v2 | Starten Sie eine Dapr-Anwendung mit dem Azure Functions Python v2-Programmiermodell, um in Dapr-Komponenten zu integrieren. |
Problembehandlung
In diesem Abschnitt wird beschrieben, wie Sie Probleme beheben können, die bei Verwendung der Dapr-Erweiterung für Azure-Funktionen auftreten können.
Sicherstellen, dass Dapr in Ihrer Umgebung aktiviert ist
Wenn Sie Dapr-Bindungen und Trigger in Azure-Funktionen verwenden und Dapr in Ihrer Umgebung nicht aktiviert ist, erhalten Sie möglicherweise die Fehlermeldung: Dapr sidecar isn't present. Please see (https://aka.ms/azure-functions-dapr-sidecar-missing) for more information. So aktivieren Sie Dapr in Ihrer Umgebung:
Wenn Ihre Azure-Funktion in Azure-Container-Apps bereitgestellt wird, lesen Sie die Dapr-Aktivierungsanweisungen für die Dapr-Erweiterung für Azure Functions.
Wenn Ihre Azure-Funktion in Kubernetes bereitgestellt wird, stellen Sie sicher, dass die YAML-Konfiguration Ihrer Bereitstellung die folgenden Anmerkungen enthält:
annotations: ... dapr.io/enabled: "true" dapr.io/app-id: "functionapp" # You should only set app-port if you are using a Dapr trigger in your code. dapr.io/app-port: "<DAPR_APP_PORT>" ...Wenn Sie Ihre Azure-Funktion lokal ausführen, führen Sie den folgenden Befehl aus, um sicherzustellen, dass Sie die Funktions-App mit Dapr ausführen:
dapr run --app-id functionapp --app-port <DAPR_APP_PORT> --components-path <COMPONENTS_PATH> -- func host start
Überprüfen des App-Portwerts in der Dapr-Konfiguration
Die Dapr-Erweiterung für Azure Functions startet standardmäßig einen HTTP-Server am Port 3001 . Sie können diesen Port mithilfe der DAPR_APP_PORT Umgebungsvariable konfigurieren.
Wenn Sie beim Ausführen einer Azure Functions-App einen falschen App-Portwert angeben, wird möglicherweise die Fehlermeldung angezeigt: The Dapr sidecar is configured to listen on port {portInt}, but the app server is running on port {appPort}. This may cause unexpected behavior. For more information, visit [this link](https://aka.ms/azfunc-dapr-app-config-error). So beheben Sie diese Fehlermeldung:
In den Dapr-Einstellungen Ihrer Container-App:
Wenn Sie einen Dapr-Trigger in Ihrem Code verwenden, vergewissern Sie sich, dass der App-Port auf
3001den Wert derDAPR_APP_PORTUmgebungsvariable festgelegt oder auf diesen festgelegt ist.Wenn Sie keinen Dapr-Trigger in Ihrem Code verwenden, vergewissern Sie sich, dass der App-Port nicht festgelegt ist. Er sollte leer sein.
Stellen Sie sicher, dass Sie den richtigen App-Portwert in der Dapr-Konfiguration angeben.
Wenn Sie Azure Container-Apps verwenden, geben Sie den App-Port in Bicep an:
DaprConfig: { ... appPort: <DAPR_APP_PORT> ... }Wenn Sie eine Kubernetes-Umgebung verwenden, legen Sie die
dapr.io/app-portAnmerkung fest:annotations: ... dapr.io/app-port: "<DAPR_APP_PORT>" ...Wenn Sie lokal entwickeln, stellen Sie sicher, dass Sie beim Ausführen der Funktions-App mit Dapr folgendes festlegen
--app-port:dapr run --app-id functionapp --app-port <DAPR_APP_PORT> --components-path <COMPONENTS_PATH> -- func host start