Sdílet prostřednictvím


Vstupní vazba dapr Secret pro Azure Functions

Vstupní vazba tajného kódu Dapr umožňuje číst data tajných kódů jako vstup 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("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.");
}

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

@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)

V následujícím příkladu je vstupní vazba tajného kódu Dapr spárována s triggerem volání Dapr, který je registrován objektem app :

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

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

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

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, $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"

Následující příklad ukazuje vstupní vazbu Dapr Secret, která používá programovací model Pythonu v2. daprSecret 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="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])

Attributes

In the in-process model, use the DaprSecret to define a Dapr secret input binding, which supports these parameters:

Parameter Description
SecretStoreName Název úložiště tajných kódů pro získání tajného kódu.
Key Klíč identifikující název tajného kódu, který se má získat.
Metadata Optional. Pole vlastností metadat ve formuláři "key1=value1&key2=value2".

Annotations

Poznámka DaprSecretInput umožňuje, aby vaše funkce měla přístup k tajnému kódu.

Element Description
secretStoreName Název úložiště tajných kódů Dapr.
key Hodnota tajného klíče.
metadata Optional. Hodnoty metadat.

Configuration

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

Property Description
key Hodnota tajného klíče.
secretStoreName Name of the secret store as defined in the local-secret-store.yaml component file.
metadata Obor názvů metadat.

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

function.json property Description
key Hodnota tajného klíče.
secretStoreName Name of the secret store as defined in the local-secret-store.yaml component file.
metadata Obor názvů metadat.

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

Property Description
secret_store_name Název úložiště tajných kódů.
key Hodnota tajného klíče.
metadata Obor názvů metadat.

See the Example section for complete examples.

Usage

Pokud chcete použít vstupní vazbu tajného klíče Dapr, začněte nastavením komponenty úložiště tajných kódů Dapr. Další informace o tom, kterou komponentu použít a jak ji nastavit, najdete v oficiální dokumentaci k Dapr.

To use the daprSecret in Python v2, set up your project with the correct dependencies.

  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 tajných kódech Dapr.