Sdílet prostřednictvím


Vstupní vazba stavu Dapr pro Azure Functions

Vstupní vazba stavu Dapr umožňuje číst stav Dapr během provádění funkce.

Informace o nastavení a konfiguraci rozšíření Dapr najdete v přehledu rozšíření Dapr.

Example

Funkci jazyka C# je možné vytvořit pomocí jednoho z následujících režimů jazyka C#:

Execution model Description
Izolovaný model pracovního procesu Kód funkce se spouští v samostatném pracovním procesu .NET. Používá se s podporovanými verzemi rozhraní .NET a .NET Framework. Další informace najdete v Příručce pro spouštění funkcí Azure Functions jazyka C# v izolovaném pracovním modelu.
In-process model Kód funkce se spouští ve stejném procesu jako hostitelský proces služby Functions. Podporuje pouze verze dlouhodobé podpory (LTS) rozhraní .NET. Další informace najdete v tématu Vývoj funkcí knihovny tříd jazyka C# pomocí 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);
}

Následující příklad vytvoří "RetrieveOrder" funkci pomocí vazby DaprStateInput s DaprServiceInvocationTrigger:

@FunctionName("RetrieveOrder")
public String run(
        @DaprServiceInvocationTrigger(
            methodName = "RetrieveOrder") 
        String payload,
        @DaprStateInput(
            stateStore = "%StateStoreName%",
            key = "order")
        String product,
        final ExecutionContext context)

V následujícím příkladu je vstupní vazba volání Dapr přidána jako extraInput a spárována s triggerem HTTP, který je registrován objektem 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"

Následující příklad ukazuje vstupní vazbu Dapr State, která používá programovací model Pythonu v2. daprState Použití vazby vedle kódu aplikace funkcí PythonudaprServiceInvocationTrigger:

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 Název úložiště stavů pro načtení stavu.
Key Název klíče, který se má načíst ze zadaného úložiště stavů.

Annotations

Poznámka DaprStateInput umožňuje číst stav Dapr do funkce.

Element Description
stateStore Název úložiště stavů Dapr.
key Hodnota klíče úložiště stavu.

Configuration

Následující tabulka vysvětluje vlastnosti konfigurace vazby, které jste nastavili v kódu.

Property Description
stateStore Název úložiště stavů.
key Název klíče, který se má načíst ze zadaného úložiště stavů.

Následující tabulka vysvětluje vlastnosti konfigurace vazby, které jste nastavili v souboru function.json.

function.json property Description
key Název klíče, který se má načíst ze zadaného úložiště stavů.
stateStore Název úložiště stavů.

Následující tabulka vysvětluje vlastnosti konfigurace vazby, @dapp.dapr_state_input které jste nastavili v kódu Pythonu.

Property Description
state_store Název úložiště stavů.
key Hodnota tajného klíče. Název klíče, který se má načíst ze zadaného úložiště stavů.

See the Example section for complete examples.

Usage

Pokud chcete použít vstupní vazbu stavu Dapr, začněte nastavením komponenty úložiště stavů Dapr. Další informace o tom, kterou komponentu použít a jak ji nastavit, najdete v oficiální dokumentaci k Dapr.

Pokud chcete použít python daprState v2, nastavte projekt se správnými závislostmi.

  1. Vytvoření a aktivace virtuálního prostředí

  2. requirements.text Do souboru přidejte následující řádek:

    azure-functions==1.18.0b3
    
  3. V terminálu nainstalujte knihovnu Pythonu.

    pip install -r .\requirements.txt
    
  4. Upravte local.setting.json soubor pomocí následující konfigurace:

    "PYTHON_ISOLATE_WORKER_DEPENDENCIES":1
    

Next steps

Přečtěte si další informace o správě stavu Dapr.