2017-07-18 2 views
1

J'utilise un déclencheur de file d'attente pour transmettre des données sur un travail que je veux exécuter avec Azure Functions (j'utilise python). Une partie des données est le nom d'un fichier que je veux extraire du stockage BLOB. Pour cette raison, déclarer un chemin/nom de fichier dans une liaison d'entrée ne semble pas être la bonne direction, puisque la fonction n'aura pas le nom de fichier tant qu'elle n'aura pas déclenché la file d'attente.Accédez au stockage de blob sans liaison?

Une approche que j'ai essayée est d'utiliser le sdk de stockage azur, mais je ne suis pas sûr de savoir comment gérer l'authentification à partir de la fonction Azure.

Existe-t-il une autre façon d'aborder cela?

Répondre

1

Dans Function.json, la liaison d'entrée blob peut faire référence aux propriétés de la charge utile de la file d'attente. La charge utile de la file d'attente doit être un objet JSON Puisqu'il s'agit de function.json, cela fonctionne pour toutes les langues.

Voir docs officiels à https://docs.microsoft.com/en-us/azure/azure-functions/functions-triggers-bindings

Par exemple, en vous function.json,

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

Et si votre charge utile du message de file d'attente est:

{ 
"filename" : "myfilename" 
} 

le jeton {nom de fichier} dans le chemin du blob, l'expression sera remplacée.

+0

C'est de la magie noire qui fait l'azur sous le capot. Merci! – apengwin

0

Généralement, vous stockez les chaînes de connexion/les clés de compte dans les paramètres d'application de l'application Function, puis vous les lisez en accédant aux variables d'environnement. Je ne l'ai pas utilisé python dans Azure, mais je crois que cela ressemble

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

J'ai trouvé one example de la fonction python qui fait ce que vous demandez: déclenchement de file d'attente + opération de blob.

0

Le stockage de secrets peut (également) être effectué à l'aide des paramètres de l'application. Dans Azure, accédez à votre service d'application Azure Functions, puis cliquez sur "Paramètres de l'application". Ensuite, faites défiler jusqu'à la liste "Paramètres de l'application". Cette liste est composée de paires clé-valeur. Ajoutez votre clé, par exemple MY_CON_STR et la chaîne de connexion réelle comme valeur.

Ne pas oublier de cliquer sur Enregistrer sur ce point

Maintenant, dans votre application (votre fonction pour cet exemple), vous pouvez charger la valeur stockée à l'aide de sa clé. Par exemple, en python, vous pouvez utiliser:

os.environ['MY_CON_STR']

Notez que depuis le réglage est enregistré localement, vous devez l'exécuter à partir d'Azure. Malheureusement, les applications Azure Functions ne contiennent pas de fichier web.config.