J'ai 3 fonctions Azure, la première est le déclencheur de blob, la deuxième est le déclencheur de file d'attente de bus de service et la troisième est les fonctions de sujet de bus de service. Les fonctions s'exécutent correctement, mais j'ai maintenant l'obligation d'avoir un nom de blob dans les 3 fonctions, ce qui aide à déclencher les premières fonctions. Dans les fonctions de déclenchement de blob, je peux obtenir le nom de blob en utilisant la variable de chemin d'accès de la liaison d'entrée, mais je ne parviens pas à trouver un moyen de transmettre cette variable de nom de blob à deux autres fonctions. Est-il possible de passer cette variable en dynamique dans les liaisons d'autres fonctions ?

1
sam 17 nov. 2020 à 21:42

1 réponse

Meilleure réponse

Si vous parlez de passer un nom de blob dynamique avec du code, ce n'est pas possible. En effet, la valeur du nom du blob de la liaison d'entrée blob ou du déclencheur blob est conçue comme const. (cela doit donc être défini avant la compilation.)

Le seul moyen est d'utiliser le mécanisme laissé au début de la conception.

Vous pouvez faire quelque chose comme ci-dessous:

__init__.py

import logging

import azure.functions as func


def main(msg: func.ServiceBusMessage, outputblob: func.Out[func.InputStream]):
    logging.info('Python ServiceBus queue trigger processed message: %s',
                 msg.get_body().decode('utf-8'))
    outputblob.set('111')

function.json

{
  "scriptFile": "__init__.py",
  "bindings": [
    {
      "name": "msg",
      "type": "serviceBusTrigger",
      "direction": "in",
      "queueName": "myqueue",
      "connection": "bowman1012_SERVICEBUS"
    },
    {
      "name": "outputblob",
      "type": "blob",
      "path": "{mypath}/111.txt",
      "connection": "MyStorageConnectionAppSetting",
      "direction": "out"
    }
  ]
}

Vous pouvez envoyer un message au format json au bus de service :

{
    "mypath":"bowman"
}

Ensuite, vous pouvez envoyer le blob au chemin dynamique de votre choix :

enter image description here

Bref, il est impossible d'utiliser l'encodage. Vous ne pouvez y parvenir qu'à travers les éléments laissés au début de la conception de la fonction azur.

2
Bowman Zhu 18 nov. 2020 à 02:18