azure - 当函数发布到云时,停止在现有 Blob 上触发 Azure Blob 触发器函数

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

我有一个在 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/

相关文章:

azure - Azure Data Lakes (Hadoop) 中的优先级和并行度值意味着什么?

asp.net-mvc - 如何在应用程序中支持多个客户?

c# - API + SQL 存储的 Azure 配置

Jenkins 必须在 Windows 上触发构建吗?

java - 用于执行 Azure blob 加密/解密的默认加密策略是什么

azure - 术语 'Enable-Migrations' 未被识别为 cmdlet、函数、脚本文件或可操作程序的名称

python - 如何从表单输入触发器中获取流创建表单中的 'Branch files on creation' 值?

MySQL 触发器在表 A、INSERT 或 UPDATE 表 B 上使用 TIMESTAMPDIFF()

azure - Windows Azure 共享访问签名始终给出 : Forbidden 403

azure - Azure Blob 中的某些图像无法从 Web 访问(但有些可以)