Megosztás:


Dapr Secret bemeneti kötés az Azure Functionshez

A Dapr titkos bemeneti kötése lehetővé teszi a titkos kulcsok adatainak beolvasását bemenetként a függvény végrehajtása során.

A Dapr-bővítmény beállítási és konfigurációs részleteiről a Dapr bővítmény áttekintésében olvashat.

Example

A C#-függvények a következő C#-módok egyikével hozhatók létre:

Execution model Description
Izolált feldolgozói modell A függvénykód egy külön .NET-feldolgozófolyamatban fut. A .NET és a .NET-keretrendszer támogatott verzióival használható. További információ: Útmutató a C# Azure Functions izolált feldolgozói modellben való futtatásához.
In-process model A függvénykód ugyanabban a folyamatban fut, mint a Functions gazdafolyamata. Csak a .NET hosszú távú támogatási (LTS) verzióit támogatja. További információ: C# osztálykódtárfüggvények fejlesztése az Azure Functions használatával.
[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.");
}

Az alábbi példa egy függvényt "RetrieveSecret" hoz létre a DaprSecretInput következő kötéssel 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)

A következő példában a Dapr titkos bemeneti kötés egy Dapr-meghívási eseményindítóval van párosítva, amelyet az app objektum regisztrál:

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"

Az alábbi példa egy Dapr Secret bemeneti kötést mutat be, amely a v2 Python programozási modellt használja. A kötés és a daprSecret Python-függvényalkalmazás kódjának használatadaprServiceInvocationTrigger:

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 A titkos tár neve a titkos kulcs lekéréséhez.
Key A lekérni kívánt titkos kód nevét azonosító kulcs.
Metadata Optional. Metaadat-tulajdonságok tömbje az űrlapon "key1=value1&key2=value2".

Annotations

A DaprSecretInput széljegyzet lehetővé teszi, hogy a függvény hozzáférjen egy titkos kódhoz.

Element Description
secretStoreName A Dapr titkos üzlet neve.
key A titkos kulcs értéke.
metadata Optional. A metaadatok értékei.

Configuration

Az alábbi táblázat a kódban beállított kötéskonfigurációs tulajdonságokat ismerteti.

Property Description
key A titkos kulcs értéke.
secretStoreName Name of the secret store as defined in the local-secret-store.yaml component file.
metadata A metaadat-névtér.

Az alábbi táblázat a function.json fájlban beállított kötéskonfigurációs tulajdonságokat ismerteti.

function.json property Description
key A titkos kulcs értéke.
secretStoreName Name of the secret store as defined in the local-secret-store.yaml component file.
metadata A metaadat-névtér.

Az alábbi táblázat a Python-kódban beállított kötéskonfigurációs tulajdonságokat @dapp.dapr_secret_input ismerteti.

Property Description
secret_store_name A titkos tár neve.
key A titkos kulcs értéke.
metadata A metaadat-névtér.

See the Example section for complete examples.

Usage

A Dapr titkos kód bemeneti kötésének használatához először állítson be egy Dapr titkos tár összetevőt. A hivatalos Dapr-dokumentációban többet is megtudhat arról, hogy melyik összetevőt használja, és hogyan állíthatja be.

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

  1. Virtuális környezet létrehozása és aktiválása.

  2. requirements.text A fájlban adja hozzá a következő sort:

    azure-functions==1.18.0b3
    
  3. Telepítse a Python-kódtárat a terminálban.

    pip install -r .\requirements.txt
    
  4. Módosítsa a local.setting.json fájlt a következő konfigurációval:

    "PYTHON_ISOLATE_WORKER_DEPENDENCIES":1
    

Next steps

További információ a Dapr titkos kulcsairól.