2017-07-18 3 views
1

Ich verwende einen Warteschlangentrigger, um einige Daten über einen Job zu übergeben, den ich mit Azure-Funktionen ausführen möchte (ich benutze Python). Ein Teil der Daten ist der Name einer Datei, die ich aus dem BLOB-Speicher abrufen möchte. Aus diesem Grund scheint das Deklarieren eines Dateipfads/-namens in einer Eingabebindung nicht die richtige Richtung zu sein, da die Funktion den Dateinamen erst dann erhält, wenn der Warteschlangentrigger ausgelöst wird.Access Blob Speicher ohne Bindung?

Ein Ansatz, den ich ausprobiert habe, ist die azure-Speicher-SDK, aber ich bin mir nicht sicher, wie die Authentifizierung innerhalb der Azure-Funktion zu behandeln ist.

Gibt es eine andere Möglichkeit, dies zu erreichen?

Antwort

1

In Function.json kann sich die Blob-Eingabebindung auf Eigenschaften aus der Warteschlangennutzlast beziehen. Die Warteschlangennutzlast muss ein JSON-Objekt sein. Da dies function.json ist, funktioniert es für alle Sprachen.

Siehe offizielle Dokumentation auf https://docs.microsoft.com/en-us/azure/azure-functions/functions-triggers-bindings

Zum Beispiel in Sie function.json,

{ 
    "name": "imageSmall", 
    "type": "blob", 
    "path": "container/{filename}", 
} 

Und wenn die Warteschlange Nachrichtennutzlast ist:

{ 
"filename" : "myfilename" 
} 

Dann wird der {Dateiname} Token Im Ausdruck des Blobs wird der Ausdruck ersetzt.

+0

Das ist etwas Schwarzmagier unter der Haube tun. Vielen Dank! – apengwin

0

In der Regel speichern Sie Verbindungszeichenfolgen/Kontoschlüssel in den App-Einstellungen der Funktions-App und lesen sie dann durch Zugriff auf Umgebungsvariablen. Ich habe nicht Python in Azure verwendet, aber ich glaube, das sieht aus wie

connection = open(os.environ['ConnectionString']).read() 

I one example von Python-Funktion gefunden haben, die das tut, was man sich wünschen: Warteschlange Trigger + blob Betrieb.

0

Das Speichern von Geheimnissen kann (auch) mit den App-Einstellungen durchgeführt werden.

Wechseln Sie in Azure zu Ihrem Azure Functions App-Dienst und klicken Sie dann auf "Anwendungseinstellungen". Scrollen Sie dann nach unten zur Liste "App-Einstellungen". Diese Liste besteht aus Schlüssel-Wert-Paaren. Fügen Sie Ihren Schlüssel hinzu, z. B. MY_CON_STR und die tatsächliche Verbindungszeichenfolge als Wert.

Vergessen Sie nicht,

An diesem Punkt speichern klicken, wird in der Anwendung (Ihre Funktion für dieses Beispiel), können Sie den gespeicherten Wert seinen Schlüssel laden. Zum Beispiel in Python, können Sie verwenden:

os.environ['MY_CON_STR']

Beachten Sie, dass da die Einstellung nicht lokal gespeichert ist, müssen Sie sie in Azure ausführen. Leider enthalten Azure Functions-Anwendungen keine Datei web.config.

Verwandte Themen