将功能发布到云时,阻止在现有Blob上触发Azure Blob触发功能

时间:2018-08-03 15:03:54

标签: azure triggers azure-storage-blobs azure-functions azure-blob-storage

我有一个Azure函数,该函数在Blob触发器上启动。有趣的是,如果我将此Azure Function的更新版本发布到云中,并且已经存在Blob,则将在每个这些已经存在的Blob上触发Azure Function。

这不是我想要的功能。相反,我希望仅在新上传的Blob上触发新发布的Azure函数,而不在已经存在的Blob上触发。 如何禁用现有Blob的触发?

1 个答案:

答案 0 :(得分:4)

  

如何禁用现有Blob的触发?

当前无法执行此操作,并且不推荐

在内部,我们通过在控制容器azure-webjobs-hosts中存储收据来跟踪处理了哪些Blob。 任何没有收据的Blob或旧的收据(基于Blob ETag)都将被处理(或重新处理)。这就是为什么您现有的Blob正在处理,它们没有收据。

BlobTrigger当前旨在确保与路径模式匹配的容器中的所有Blob最终得到处理,并在每次更新时对其进行重新处理。 因此,所有Blob都有收据后,当您上传新Blob时,它只会由新Blob触发

有关更多详细信息,您可以参考此article

当文件上传到Azure Blob存储或在Azure Blob存储中更新时,将触发blob触发功能。如果禁用现有Blob上的触发功能,则在更新Blob时不会获得最新内容,因此不建议这样做。

解决方法

如果您仍然想在新上传的Blob上触发,则可以在调用该函数时添加一个判断。

List all of existing blobs在容器中,当blob触发调用时,请检查blob名称是否在列表中,否则请继续执行触发的方法。