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 Ausgabebindung des Dapr-Zustands können Sie einen Wert während einer Funktionsausführung in einem Dapr-Zustand speichern.
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. |
Im folgenden Beispiel wird die Verwendung der Dapr-Zustandsausgabebindung veranschaulicht, um einen neuen Zustand im Zustandsspeicher beizubehalten.
[FunctionName("StateOutputBinding")]
public static async Task<IActionResult> Run(
[HttpTrigger(AuthorizationLevel.Function, "post", Route = "state/{key}")] HttpRequest req,
[DaprState("statestore", Key = "{key}")] IAsyncCollector<string> state,
ILogger log)
{
log.LogInformation("C# HTTP trigger function processed a request.");
string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
await state.AddAsync(requestBody);
return new OkResult();
}
Im folgenden Beispiel wird eine "CreateNewOrderHttpTrigger" Funktion mithilfe der DaprStateOutput Bindung mit einer HttpTrigger:
@FunctionName("CreateNewOrderHttpTrigger")
public String run(
@HttpTrigger(
name = "req",
methods = {HttpMethod.POST},
authLevel = AuthorizationLevel.ANONYMOUS)
HttpRequestMessage<Optional<String>> request,
@DaprStateOutput(
stateStore = "%StateStoreName%",
key = "product")
OutputBinding<String> product,
final ExecutionContext context) {
context.getLogger().info("Java HTTP trigger (CreateNewOrderHttpTrigger) processed a request.");
}
Im folgenden Beispiel wird die Ausgabebindung des Dapr-Zustands mit einem HTTP-Trigger gekoppelt, der app vom Objekt registriert wird:
const { app, trigger } = require('@azure/functions');
app.generic('StateOutputBinding', {
trigger: trigger.generic({
type: 'httpTrigger',
authLevel: 'anonymous',
methods: ['POST'],
route: "state/{key}",
name: "req"
}),
return: daprStateOutput,
handler: async (request, context) => {
context.log("Node HTTP trigger function processed a request.");
const payload = await request.text();
context.log(JSON.stringify(payload));
return { value : payload };
}
});
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 output:
{
"bindings":
{
"type": "daprState",
"stateStore": "%StateStoreName%",
"direction": "out",
"name": "order",
"key": "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
)
# C# function processed a CreateNewOrder request from the Dapr Runtime.
Write-Host "PowerShell function processed a CreateNewOrder request from the Dapr Runtime."
# Payload must be of the format { "data": { "value": "some value" } }
# Convert the object to a JSON-formatted string with ConvertTo-Json
$jsonString = $payload| ConvertTo-Json
# Associate values to output bindings by calling 'Push-OutputBinding'.
Push-OutputBinding -Name order -Value $payload["data"]
Das folgende Beispiel zeigt eine Dapr State-Ausgabebindung, die das v2 Python-Programmiermodell verwendet. So verwenden Sie daprState in Ihrem Python-Funktions-App-Code:
import logging
import json
import azure.functions as func
app = func.FunctionApp()
@app.function_name(name="HttpTriggerFunc")
@app.route(route="req", auth_level=dapp.auth_level.ANONYMOUS)
@app.dapr_state_output(arg_name="state", state_store="statestore", key="newOrder")
def main(req: func.HttpRequest, state: func.Out[str] ) -> str:
# request body must be passed this way '{\"value\": { \"key\": \"some value\" } }'
body = req.get_body()
if body is not None:
state.set(body.decode('utf-8'))
logging.info(body.decode('utf-8'))
else:
logging.info('req body is none')
return 'ok'
Attributes
In the in-process model, use the DaprState to define a Dapr state output binding, which supports these parameters:
| Parameter | Description | Kann per Attribut gesendet werden | Kann über RequestBody gesendet werden |
|---|---|---|---|
| StateStore | Der Name des Zustandsspeichers zum Speichern des Zustands. | ✔️ | ❌ |
| Key | Der Name des Schlüssels zum Speichern des Zustands im Zustandsspeicher. | ✔️ | ✔️ |
| Value | Required. Der zu speichernde Wert. | ❌ | ✔️ |
Annotations
Mit der DaprStateOutput Anmerkung können Sie auf einen Zustandsspeicher zugreifen.
| Element | Description | Kann per Attribut gesendet werden | Kann über RequestBody gesendet werden |
|---|---|---|---|
| stateStore | Der Name des Zustandsspeichers zum Speichern des Zustands. | ✔️ | ❌ |
| key | Der Name des Schlüssels zum Speichern des Zustands im Zustandsspeicher. | ✔️ | ✔️ |
| value | Required. Der zu speichernde Wert. | ❌ | ✔️ |
Configuration
Die folgende Tabelle gibt Aufschluss über die Bindungskonfigurationseigenschaften, die Sie im Code festlegen.
| Property | Description | Kann per Attribut gesendet werden | Kann über RequestBody gesendet werden |
|---|---|---|---|
| stateStore | Der Name des Zustandsspeichers zum Speichern des Zustands. | ✔️ | ❌ |
| key | Der Name des Schlüssels zum Speichern des Zustands im Zustandsspeicher. | ✔️ | ✔️ |
| value | Required. Der zu speichernde Wert. | ❌ | ✔️ |
The following table explains the binding configuration properties that you set in the function.json file.
| function.json property | Description | Kann per Attribut gesendet werden | Kann über RequestBody gesendet werden |
|---|---|---|---|
| stateStore | Der Name des Zustandsspeichers zum Speichern des Zustands. | ✔️ | ❌ |
| key | Der Name des Schlüssels zum Speichern des Zustands im Zustandsspeicher. | ✔️ | ✔️ |
| value | Required. Der zu speichernde Wert. | ❌ | ✔️ |
Die folgende Tabelle gibt Aufschluss über die Bindungskonfigurationseigenschaften für @dapp.dapr_state_output, die Sie im Python-Code festlegen.
| Property | Description | Kann per Attribut gesendet werden | Kann über RequestBody gesendet werden |
|---|---|---|---|
| stateStore | Der Name des Zustandsspeichers zum Speichern des Zustands. | ✔️ | ❌ |
| key | Der Name des Schlüssels zum Speichern des Zustands im Zustandsspeicher. | ✔️ | ✔️ |
| value | Required. Der zu speichernde Wert. | ❌ | ✔️ |
Wenn Eigenschaften sowohl in Attributen als auch in RequestBody definiert sind, haben die in RequestBody bereitgestellten Daten höhere Priorität.
See the Example section for complete examples.
Usage
Um die Dapr-Zustandsausgabebindung zu verwenden, richten Sie zunächst eine Dapr-Zustandsspeicherkomponente 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
local.setting.json-Datei mit der folgenden Konfiguration:"PYTHON_ISOLATE_WORKER_DEPENDENCIES":1