子文件夹的 Azure 函数 blob 触发器

Posted

技术标签:

【中文标题】子文件夹的 Azure 函数 blob 触发器【英文标题】:Azure function blob trigger for subfolders 【发布时间】:2021-01-17 17:45:10 【问题描述】:

我有一个容器文件夹,其中有许多子文件夹(大约 3000 个),一个文件可以放在任何子文件夹中。我需要对添加到子文件夹中的 blob 做出反应。如果将文件添加到子文件夹中,我仍然不知道如何创建 blob 触发器。

Example:

Excerpt from function.json: 

    "name": "myblob",
    "type": "blobTrigger",
    "direction": "in",
    "path": "rootContainer/name"


OK, a function is triggered if I receive the blob in rootContainer folder

Except from function.json: 

    "name": "*/myblob",
    "type": "blobTrigger",
    "direction": "in",
    "path": "rootContainer/name"

or 

    "name": "myblob",
    "type": "blobTrigger",
    "direction": "in",
    "path": "rootContainer/*/name"

不行,没有触发函数

关于这个问题的问题不多,他们仍然没有提供正常的答案。在文档中也找不到任何信息。

谢谢!

【问题讨论】:

【参考方案1】:

我注意到您使用*/myblob 作为名称,但这没有用。

例如,如果您希望在发送到rootContainer下的test等文件夹时触发该函数,则需要使用此function.json:


  "bindings": [
    
      "name": "myBlob",
      "type": "blobTrigger",
      "direction": "in",
      "path": "rootContainer/test/name",
      "connection": "AzureWebJobsStorage"
    
  ]

路径需要在编译时定义。

【讨论】:

感谢您的建议....!!!我正在寻找的场景不同......大约有 3000 个子文件夹,文件可以进入其中的任何一个,所以如果文件进入这些子文件夹中的任何一个,我可以有一个 blob 触发器来启动...... . @AmeyP 嗨,抱歉回复太晚了。您可以将触发条件设置为 3000 个文件夹的父文件夹。这样就可以处理你传入各个文件夹的文件了。如果要单独触发每个文件夹,则只能选择创建 3000 个触发器。让我知道这是否可以回答您的疑问。 @AmeyP 如果需要对每个文件夹中的文件进行不同的处理,可以将设置父文件夹后的blob名称作为触发条件,编写逻辑匹配前缀。 (Blob Storage 是平面存储,所以会使用文件夹信息作为 Blob 名称的前缀。)

以上是关于子文件夹的 Azure 函数 blob 触发器的主要内容,如果未能解决你的问题,请参考以下文章

Azure 函数 Blob 触发器将文件复制到文件共享

使用 epplus 从 blob 触发 azure 函数访问 excel 文件

Azure 函数在 blob 触发期间找不到 blob

用于读取 blob 架构的 Azure 函数

将多个 Blob 输入传递给 QueueTrigger Azure 函数的最佳方式

Azure Function App Python Blob 触发器巨大的文件大小