Aracılığıyla paylaş


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

Dapr gizli dizi giriş bağlaması, işlev yürütme sırasında gizli dizi verilerini giriş olarak 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("RetrieveSecret")]
public static void Run(
    [DaprServiceInvocationTrigger] object args,
    [DaprSecret("kubernetes", "my-secret", Metadata = "metadata.namespace=default")] IDictionary<string, string> secret,
    ILogger log)
{
    log.LogInformation("C# function processed a RetrieveSecret request from the Dapr Runtime.");
}

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

@FunctionName("RetrieveSecret")
public void run(
    @DaprServiceInvocationTrigger(
        methodName = "RetrieveSecret") Object args,
    @DaprSecretInput(
        secretStoreName = "kubernetes", 
        key = "my-secret", 
        metadata = "metadata.namespace=default") 
        Map<String, String> secret,
    final ExecutionContext context)

Aşağıdaki örnekte, Dapr gizli dizi giriş bağlaması nesnesi tarafından kaydedilen bir Dapr çağırma tetikleyicisiyle app eşleştirilir:

const { app, trigger } = require('@azure/functions');

app.generic('RetrieveSecret', {
    trigger: trigger.generic({
        type: 'daprServiceInvocationTrigger',
        name: "payload"
    }),
    extraInputs: [daprSecretInput],
    handler: async (request, context) => {
        context.log("Node function processed a RetrieveSecret request from the Dapr Runtime.");
        const daprSecretInputValue = context.extraInputs.get(daprSecretInput);

        // print the fetched secret value
        for (var key in daprSecretInputValue) {
            context.log(`Stored secret: Key=${key}, Value=${daprSecretInputValue[key]}`);
        }
    }
});

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:daprServiceInvocationTrigger

{
  "bindings": 
    {
      "type": "daprSecret",
      "direction": "in",
      "name": "secret",
      "key": "my-secret",
      "secretStoreName": "localsecretstore",
      "metadata": "metadata.namespace=default"
    }
}

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, $secret
)

# PowerShell function processed a CreateNewOrder request from the Dapr Runtime.
Write-Host "PowerShell function processed a RetrieveSecretLocal request from the Dapr Runtime."

# Convert the object to a JSON-formatted string with ConvertTo-Json
$jsonString = $secret | ConvertTo-Json

Write-Host "$jsonString"

Aşağıdaki örnekte, v2 Python programlama modelini kullanan bir Dapr Gizli Dizisi giriş bağlaması gösterilmektedir. Bağlamayı daprSecret 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="RetrieveSecret")
@app.dapr_service_invocation_trigger(arg_name="payload", method_name="RetrieveSecret")
@app.dapr_secret_input(arg_name="secret", secret_store_name="localsecretstore", key="my-secret", metadata="metadata.namespace=default")
def main(payload, secret: str) :
    # Function should be invoked with this command: dapr invoke --app-id functionapp --method RetrieveSecret  --data '{}'
    logging.info('Python function processed a RetrieveSecret request from the Dapr Runtime.')
    secret_dict = json.loads(secret)

    for key in secret_dict:
        logging.info("Stored secret: Key = " + key +
                     ', Value = ' + secret_dict[key])

Özellikler

İşlem içi modelde, şu parametreleri destekleyen bir Dapr gizli dizi giriş bağlaması tanımlamak için öğesini kullanınDaprSecret:

Parametre Açıklama
SecretStoreName Gizli diziyi almak için kullanılan gizli deponun adı.
Anahtar Alınacak gizli dizinin adını tanımlayan anahtar.
Meta veriler isteğe bağlı. biçimindeki "key1=value1&key2=value2"meta veri özellikleri dizisi.

Ek Açıklamalar

Ek DaprSecretInput açıklama işlevinizin gizli diziye erişmesini sağlar.

Öğe Açıklama
secretStoreName Dapr gizli dizi deposunun adı.
key Gizli anahtar değeri.
meta veriler İsteğe bağlı. Meta veri değerleri.

Yapılandırma

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

Özellik Açıklama
key Gizli anahtar değeri.
secretStoreName local-secret-store.yaml bileşen dosyasında tanımlandığı gibi gizli dizi deposunun adı.
meta veriler Meta veri ad alanı.

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 Gizli anahtar değeri.
secretStoreName local-secret-store.yaml bileşen dosyasında tanımlandığı gibi gizli dizi deposunun adı.
meta veriler Meta veri ad alanı.

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

Özellik Açıklama
secret_store_name Gizli deponun adı.
key Gizli anahtar değeri.
meta veriler Meta veri ad alanı.

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

Kullanım

Dapr gizli dizi giriş bağlamasını kullanmak için bir Dapr gizli dizi 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 daprSecret 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 gizli dizileri hakkında daha fazla bilgi edinin.