如何将 blob 名称传递给不同的 azure python 函数

How to pass blob name to different azure python functions

我有 3 个 azure 函数,第一个是 blob 触发器,第二个是服务总线队列触发器,第三个是服务总线主题函数。这些函数 运行 很好,但现在我需要在所有 3 个函数中使用 blob 名称,这有助于触发第一个函数。在 blob 触发器函数中,我可以使用输入绑定的路径变量获取 blob 名称,但我无法找到将此 blob 名称变量传递给其他两个函数的方法。是否可以在其他函数的绑定中将此变量作为动态传递?

如果您谈论的是通过代码传递动态 blob 名称,那么这是不可能的。这是因为blob input binding或blob trigger的blob name值被设计为const。(因此必须在编译前设置。)

唯一的办法就是利用设计之初留下的机制

您可以执行如下操作:

__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"
    }
  ]
}

您可以发送 json 格式消息到服务总线:

{
    "mypath":"bowman"
}

然后您可以将 blob 发送到您想要的动态路径:

总之,无法使用编码。只能通过azure函数设计之初留下的东西来实现。