【发布时间】:2017-04-21 20:38:35
【问题描述】:
我的 Azure 存储中有大约 80 万个 Blob。当我使用 blobTrigger 创建 azure 函数时,它开始处理我在存储中拥有的所有 blob。如何将我的函数配置为仅针对新的和更新的 blob 触发?
【问题讨论】:
标签: c# azure azure-blob-storage azure-functions
我的 Azure 存储中有大约 80 万个 Blob。当我使用 blobTrigger 创建 azure 函数时,它开始处理我在存储中拥有的所有 blob。如何将我的函数配置为仅针对新的和更新的 blob 触发?
【问题讨论】:
标签: c# azure azure-blob-storage azure-functions
目前没有办法做到这一点。在内部,我们通过将收据存储在我们的控制容器azure-webjobs-hosts 中来跟踪我们处理了哪些 blob。任何没有收据的 blob 或旧收据(基于 blob ETag)都将被处理(或重新处理)。这就是您现有的 blob 正在处理的原因 - 它们没有收据。 BlobTrigger 当前旨在确保最终处理与路径模式匹配的容器中的所有 blob,并在它们更新时重新处理。
如果您对此充满热情,可以在我们的 repo here 中记录功能请求,并提供有关您方案的详细信息。
【讨论】:
azure-webjobs-hosts 吗?
我解决这个问题的方法是在已处理的 Blob 上设置元数据(例如,状态 = 完成)。当触发器被触发时,我首先检查这段元数据,如果它已经设置则返回函数。
这样做的缺点是元数据的更新会触发函数的额外执行
【讨论】: