Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
La liaison d’entrée d’état Dapr vous permet de lire l’état Dapr pendant l’exécution d’une fonction.
Pour en savoir plus sur l’installation et la configuration de l’extension Dapr, reportez-vous à Présentation de l’extension Dapr.
Example
Une fonction C# peut être créée à l’aide de l’un des modes C# suivants :
| Execution model | Description |
|---|---|
| Modèle de worker isolé | Le code de votre fonction s’exécute dans un processus Worker .NET distinct. Utilisez avec les versions prises en charge de .NET et .NET Framework. Pour plus d’informations, consultez Guide d’exécution de C# Azure Functions dans le modèle worker isolé. |
| In-process model | Le code de votre fonction s’exécute dans le même processus que le processus hôte Functions. Prend uniquement en charge les versions LTS (Long Term Support) de .NET. Pour en découvrir plus, consultez Développer des fonctions de bibliothèque de classes C# à l’aide d’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);
}
L’exemple suivant crée une fonction "RetrieveOrder" à l’aide de la liaison DaprStateInput avec DaprServiceInvocationTrigger :
@FunctionName("RetrieveOrder")
public String run(
@DaprServiceInvocationTrigger(
methodName = "RetrieveOrder")
String payload,
@DaprStateInput(
stateStore = "%StateStoreName%",
key = "order")
String product,
final ExecutionContext context)
Dans l’exemple suivant, la liaison d’entrée d’appel Dapr est ajoutée en tant que extraInput et associée à un déclencheur HTTP, qui est inscrit par l’objet app :
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"
L’exemple suivant montre une liaison d’entrée d’état Dapr, qui utilise le modèle de programmation Python v2. Pour utiliser la liaison daprState à côté de la liaison daprServiceInvocationTrigger dans le code d’application de votre fonction Python :
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 | Le nom du magasin d’état pour récupérer l’état. |
| Key | Le nom de la clé à récupérer à partir du magasin d’état spécifié. |
Annotations
L’annotation DaprStateInput vous permet de lire l’état Dapr dans votre fonction.
| Element | Description |
|---|---|
| stateStore | Le nom du magasin d’état Dapr. |
| key | La valeur de clé du magasin d’état. |
Configuration
Le tableau suivant décrit les propriétés de configuration de liaison que vous définissez dans le code.
| Property | Description |
|---|---|
| stateStore | Le nom du magasin d’état. |
| key | Le nom de la clé à récupérer à partir du magasin d’état spécifié. |
Le tableau suivant décrit les propriétés de configuration de liaison que vous définissez dans le fichier function.json.
| function.json property | Description |
|---|---|
| key | Le nom de la clé à récupérer à partir du magasin d’état spécifié. |
| stateStore | Le nom du magasin d’état. |
Le tableau suivant explique les propriétés de configuration de liaison pour @dapp.dapr_state_input que vous définissez dans votre code Python.
| Property | Description |
|---|---|
| state_store | Le nom du magasin d’état. |
| key | La valeur de clé secrète. Le nom de la clé à récupérer à partir du magasin d’état spécifié. |
See the Example section for complete examples.
Usage
Pour utiliser la liaison d’entrée d’état Dapr, commencez par configurer un composant de magasin d’état Dapr. Pour en savoir plus sur le composant à utiliser et sur sa configuration, reportez-vous à la documentation officielle de Dapr.
Pour utiliser le daprState dans Python v2, configurez votre projet avec les bonnes dépendances.
Dans votre fichier
requirements.text, ajoutez la ligne suivante :azure-functions==1.18.0b3Dans le terminal, installez la bibliothèque Python.
pip install -r .\requirements.txtModifiez votre fichier
local.setting.jsonavec la configuration suivante :"PYTHON_ISOLATE_WORKER_DEPENDENCIES":1