我有一个在 blob 触发器上启动的 Azure 函数。有趣的是,如果我将此 Azure Function 的更新版本发布到云,并且已经存在 Blob,则将在每个已存在的 Blob 上触发 Azure Function。
这不是我想要的功能。相反,我希望新发布的 Azure 函数仅在新上传的 blob 上触发,而不是在已存在的 blob 上触发。 如何禁用现有 blob 上的触发?
最佳答案
How can I disable triggering on existing blobs?
目前无法做到这一点并且不建议。
在内部,我们通过将收据存储在控制容器 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 名称是否在列表中,如果不在列表中,则可以继续触发的方法。
关于azure - 当函数发布到云时,停止在现有 Blob 上触发 Azure Blob 触发器函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51675455/