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.
Mit der Dapr-Zustandseingabebindung können Sie den Dapr-Zustand während einer Funktionsausführung lesen.
Informationen zu Setup- und Konfigurationsdetails der Dapr-Erweiterung finden Sie in der Dapr-Erweiterungsübersicht.
Example
Eine C#-Funktion kann mit einem der folgenden C#-Modi erstellt werden:
| Execution model | Description |
|---|---|
| Isoliertes Workermodell | Ihr Funktionscode wird in einem separaten .NET-Workerprozess ausgeführt. Verwenden Sie dazu unterstützte Versionen von .NET und .NET Framework. Weitere Informationen finden Sie im Handbuch zum Ausführen von C#-Azure-Funktionen im isolierten Arbeitsmodell. |
| In-process model | Ihr Funktionscode wird im gleichen Prozess wie der Functions-Hostprozess ausgeführt. Unterstützt nur LTS-Versionen (Long Term Support) von .NET. Weitere Informationen finden Sie unter Entwickeln von C#-Klassenbibliotheksfunktionen mithilfe von Azure Functions. |
[FunctionName("StateInputBinding")]
public static IActionResult Run(
[HttpTrigger(AuthorizationLevel.Function, "get", Route = "state/{key}")] HttpRequest req,
[DaprState("statestore", Key = "{key}")] string state,
ILogger log)
{
log.LogInformation("C# HTTP trigger function processed a request.");
return new OkObjectResult(state);
}
Im folgenden Beispiel wird eine "RetrieveOrder"-Funktion mithilfe der DaprStateInput-Bindung mit DaprServiceInvocationTrigger erstellt:
@FunctionName("RetrieveOrder")
public String run(
@DaprServiceInvocationTrigger(
methodName = "RetrieveOrder")
String payload,
@DaprStateInput(
stateStore = "%StateStoreName%",
key = "order")
String product,
final ExecutionContext context)
Im folgenden Beispiel wird die Dapr Invoke-Eingabebindung als extraInput hinzugefügt und mit einem HTTP-Trigger gekoppelt, der vom app-Objekt registriert wird:
const { app, trigger } = require('@azure/functions');
app.generic('StateInputBinding', {
trigger: trigger.generic({
type: 'httpTrigger',
authLevel: 'anonymous',
methods: ['GET'],
route: "state/{key}",
name: "req"
}),
extraInputs: [daprStateInput],
handler: async (request, context) => {
context.log("Node HTTP trigger function processed a request.");
const daprStateInputValue = context.extraInputs.get(daprStateInput);
// print the fetched state value
context.log(daprStateInputValue);
return daprStateInputValue;
}
});
The following examples show Dapr triggers in a function.json file and PowerShell code that uses those bindings.
Here's the function.json file for daprState:
{
"bindings":
{
"type": "daprState",
"direction": "in",
"key": "order",
"stateStore": "%StateStoreName%",
"name": "order"
}
}
For more information about function.json file properties, see the Configuration section.
In code:
using namespace System
using namespace Microsoft.Azure.WebJobs
using namespace Microsoft.Extensions.Logging
using namespace Microsoft.Azure.WebJobs.Extensions.Dapr
using namespace Newtonsoft.Json.Linq
param (
$payload, $order
)
# C# function processed a CreateNewOrder request from the Dapr Runtime.
Write-Host "PowerShell function processed a RetrieveOrder request from the Dapr Runtime."
# Convert the object to a JSON-formatted string with ConvertTo-Json
$jsonString = $order | ConvertTo-Json
Write-Host "$jsonString"
Das folgende Beispiel zeigt eine Dapr-Zustandseingabebindung, die das v2 Python-Programmiermodell verwendet. So verwenden Sie die daprState-Bindung zusammen mit daprServiceInvocationTrigger in Ihrem Python-Funktions-App-Code:
import logging
import json
import azure.functions as func
app = func.FunctionApp()
@app.function_name(name="RetrieveOrder")
@app.dapr_service_invocation_trigger(arg_name="payload", method_name="RetrieveOrder")
@app.dapr_state_input(arg_name="data", state_store="statestore", key="order")
def main(payload, data: str) :
# Function should be invoked with this command: dapr invoke --app-id functionapp --method RetrieveOrder --data '{}'
logging.info('Python function processed a RetrieveOrder request from the Dapr Runtime.')
logging.info(data)
Attributes
In the in-process model, use the DaprState to read Dapr state into your function, which supports these parameters:
| Parameter | Description |
|---|---|
| StateStore | Der Name des Zustandsspeichers zum Abrufen des Zustands |
| Key | Der Name des Schlüssels, der aus dem angegebenen Zustandsspeicher abgerufen werden soll |
Annotations
Mit der Anmerkung DaprStateInput können Sie den Dapr-Zustand in Ihrer Funktion lesen.
| Element | Description |
|---|---|
| stateStore | Der Name des Dapr-Zustandsspeichers |
| key | Der Wert des Zustandsspeicherschlüssels |
Configuration
Die folgende Tabelle gibt Aufschluss über die Bindungskonfigurationseigenschaften, die Sie im Code festlegen.
| Property | Description |
|---|---|
| stateStore | Der Name des Zustandsspeichers |
| key | Der Name des Schlüssels, der aus dem angegebenen Zustandsspeicher abgerufen werden soll |
Die folgende Tabelle gibt Aufschluss über die Bindungskonfigurationseigenschaften, die Sie in der Datei function.json festlegen.
| function.json property | Description |
|---|---|
| key | Der Name des Schlüssels, der aus dem angegebenen Zustandsspeicher abgerufen werden soll |
| stateStore | Der Name des Zustandsspeichers |
Die folgende Tabelle gibt Aufschluss über die Bindungskonfigurationseigenschaften für @dapp.dapr_state_input, die Sie im Python-Code festlegen.
| Property | Description |
|---|---|
| state_store | Der Name des Zustandsspeichers |
| key | Der Wert des geheimen Schlüssels Der Name des Schlüssels, der aus dem angegebenen Zustandsspeicher abgerufen werden soll |
See the Example section for complete examples.
Usage
Um die Eingabebindung für den Dapr-Zustand zu verwenden, richten Sie zunächst eine Komponente für den Dapr-Zustandsspeicher ein. In der offiziellen Dapr-Dokumentation erfahren Sie mehr darüber, welche Komponente Sie verwenden sollten und wie Sie diese einrichten können.
Um daprState in Python v2 zu verwenden, richten Sie Ihr Projekt mit den richtigen Abhängigkeiten ein.
Fügen Sie in Ihrer
requirements.text-Datei die folgende Zeile hinzu:azure-functions==1.18.0b3Installieren Sie im Terminal die Python-Bibliothek.
pip install -r .\requirements.txtÄndern Sie Ihre Datei
local.setting.jsonmit der folgenden Konfiguration:"PYTHON_ISOLATE_WORKER_DEPENDENCIES":1