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.

Příklad

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

Model spouštění Popis
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 tématu Vývoj funkcí izolovaného pracovního procesu .NET.
Model v procesu 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 .NET.
[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;
    }
});

Následující příklady ukazují triggery Dapr v souboru function.json a kódu PowerShellu, který tyto vazby používá.

Tady je soubor function.json pro daprState:

{
  "bindings": 
    {
      "type": "daprState",
      "direction": "in",
      "key": "order",
      "stateStore": "%StateStoreName%",
      "name": "order"
    }
}

Další informace o function.json vlastnosti souboru naleznete v části Konfigurace .

V kódu:

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)

Atributy

V modelu v procesu použijte DaprState ke čtení stavu Dapr do funkce, která podporuje tyto parametry:

Parametr Popis
StateStore Název úložiště stavů pro načtení stavu.
Klíč Název klíče, který se má načíst ze zadaného úložiště stavů.

Poznámky

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

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

Konfigurace

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

Vlastnost Popis
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.

vlastnost function.json Popis
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.

Vlastnost Popis
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ů.

Kompletní příklady najdete v části Příklad.

Využití

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
    

Další kroky

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