在Azure函数中输入多个Blob

时间:2019-03-29 09:10:47

标签: python azure-functions azure-storage-blobs

当我在Azure存储中的同一容器/目录下收到多个文件时,我想触发作业。假设我收到了2个文件: -mycontainer / uploads / files / file.rtf -mycontainer / uploads / files / file.txt

当两个文件都出现时,应该触发我想要的作业。所以我开始像这样定义绑定:

{
  "scriptFile": "__init__.py",
  "bindings": [
    {
      "name": "myitem",
      "type": "queueTrigger",
      "direction": "in",
      "queueName": "myfiles",
      "connection": "StorageConnectionString"
    },
    {
      "name": "inputRtf",
      "type": "blob",
      "direction": "in",
      "path": "uploads/files/{blobname}.rtf",
      "connection": "StorageConnectionString"
    },
    {
      "name": "inputTxt",
      "type": "blob",
      "direction": "in",
      "path": "uploads/files/{blobname}.txt",
      "connection": "StorageConnectionString"
    },
    {
      "name": "outputRtf",
      "type": "blob",
      "direction": "out",
      "path": "output/{blobname}.rtf",
      "connection": "StorageConnectionString"
    },
    {
      "name": "outputTxt",
      "type": "blob",
      "direction": "out",
      "path": "output/{blobname}.txt",
      "connection": "StorageConnectionString"
    }
  ]
}

为了简单起见,我们说python代码只是将.txt文件的内容复制到output容器中,与.rtf文件相同。我不太了解queueTrigger的工作原理,所以我很确定我的配置看起来不正确

1 个答案:

答案 0 :(得分:0)

您将必须确认功能所需的所有文件都存在,然后触发功能。输入绑定无法独自完成。

您可以改为使用Event Grid Triggered函数,该函数针对每个上载的blob和针对每个事件的事件而触发,请检查是否存在实际功能所需的其他文件。

如果没有,则仅返回 但是 ,如果确实存在所有文件,则触发您的实际功能。

您可以使用存储队列消息(使用binding)触发实际功能,该消息具有Blob输入绑定所需的文件名详细信息。

有关使用队列触发器绑定和Blob输入绑定的示例,请检查blob input binding docs