首页 > 解决方案 > 当函数发布到云时,停止在现有 blob 上触发 Azure blob 触发器函数

问题描述

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

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

标签: azuretriggersazure-blob-storageazure-functions

解决方案


如何禁用对现有 blob 的触发?

目前没有办法做到这一点也不推荐

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

BlobTrigger当前旨在确保最终处理与路径模式匹配的容器中的所有 blob,并在它们更新时重新处理。所以在所有的 blob 都有收据之后,当你上传一个新的 blob 时,它只会由 new blob 触发

更多细节,你可以参考这篇文章

当文件上传到 Azure Blob 存储或在其中更新时,会触发 Blob 触发器功能。如果禁用对现有 blob 的触发,则在更新 blob 时它不会获取最新内容,不推荐。

解决方法

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

列出容器中所有现有的 blob,当 blob 触发调用时,检查 blob 名称是否在列表中,如果没有,您可以继续触发方法。


推荐阅读