Aracılığıyla paylaş


Azure İşlevleri için Dapr State giriş bağlaması

Dapr durumu giriş bağlaması, bir işlev yürütmesi sırasında Dapr durumunu okumanızı sağlar.

Dapr uzantısının kurulum ve yapılandırma ayrıntıları hakkında bilgi için bkz. Dapr uzantısına genel bakış.

Örnek

C# işlevi aşağıdaki C# modlarından biri kullanılarak oluşturulabilir:

Yürütme modeli Açıklama
Yalıtılmış çalışan modeli İşlev kodunuz ayrı bir .NET çalışan işleminde çalışır. Desteklenen .NET ve .NET Framework sürümleriyle kullanın. Daha fazla bilgi edinmek için bkz . .NET yalıtılmış çalışan işlemi işlevleri geliştirme.
İşlem içi model İşlev kodunuz İşlevler konak işlemiyle aynı işlemde çalışır. .NET'in yalnızca Uzun Süreli Destek (LTS) sürümlerini destekler. Daha fazla bilgi edinmek için bkz . .NET sınıf kitaplığı işlevleri geliştirme.
[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);
}

Aşağıdaki örnek, ile DaprServiceInvocationTriggerbağlamasını DaprStateInput kullanarak bir "RetreveOrder" işlev oluşturur:

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

Aşağıdaki örnekte, Dapr çağrı giriş bağlaması bir extraInput olarak eklenir ve nesnesi tarafından app kaydedilen bir HTTP tetikleyicisi ile eşleştirilir:

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;
    }
});

Aşağıdaki örneklerde, function.json dosyasındaki Dapr tetikleyicileri ve bu bağlamaları kullanan PowerShell kodu gösterilmektedir.

için function.json dosyası aşağıdadır:daprState

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

function.json dosya özellikleri hakkında daha fazla bilgi için Yapılandırma bölümüne bakın.

Kod:

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"

Aşağıdaki örnekte, v2 Python programlama modelini kullanan bir Dapr State giriş bağlaması gösterilmektedir. Bağlamayı daprState Python işlev uygulama kodunuzda ile daprServiceInvocationTrigger birlikte kullanmak için:

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)

Özellikler

İşlem içi modelde işlevinizde Dapr durumunu okumak için öğesini kullanın DaprState ve bu da şu parametreleri destekler:

Parametre Açıklama
StateStore Durumu alınacak durum deposunun adı.
Anahtar Belirtilen durum deposundan alınacak anahtarın adı.

Ek Açıklamalar

Ek DaprStateInput açıklama işlevinizde Dapr durumunu okumanızı sağlar.

Öğe Açıklama
stateStore Dapr durum deposunun adı.
key Durum deposu anahtar değeri.

Yapılandırma

Aşağıdaki tabloda kodda ayarladığınız bağlama yapılandırma özellikleri açıklanmaktadır.

Özellik Açıklama
stateStore Durum deposunun adı.
key Belirtilen durum deposundan alınacak anahtarın adı.

Aşağıdaki tabloda, function.json dosyasında ayarladığınız bağlama yapılandırma özellikleri açıklanmaktadır.

function.json özelliği Açıklama
key Belirtilen durum deposundan alınacak anahtarın adı.
stateStore Durum deposunun adı.

Aşağıdaki tabloda Python kodunuzda ayarladığınız bağlama yapılandırma özellikleri @dapp.dapr_state_input açıklanmaktadır.

Özellik Açıklama
state_store Durum deposunun adı.
key Gizli anahtar değeri. Belirtilen durum deposundan alınacak anahtarın adı.

Tam örnekler için Örnek bölümüne bakın.

Kullanım

Dapr durum giriş bağlamasını kullanmak için bir Dapr durum deposu bileşeni ayarlayarak başlayın. Resmi Dapr belgelerinde hangi bileşenin kullanılacağı ve nasıl ayarlanacağı hakkında daha fazla bilgi edinebilirsiniz.

python v2'de kullanmak daprState için projenizi doğru bağımlılıklarla ayarlayın.

  1. Sanal ortam oluşturma ve etkinleştirme

  2. Dosyanıza requirements.text aşağıdaki satırı ekleyin:

    azure-functions==1.18.0b3
    
  3. Terminalde Python kitaplığını yükleyin.

    pip install -r .\requirements.txt
    
  4. Dosyanızı local.setting.json aşağıdaki yapılandırmayla değiştirin:

    "PYTHON_ISOLATE_WORKER_DEPENDENCIES":1
    

Sonraki adımlar

Dapr durum yönetimi hakkında daha fazla bilgi edinin.