【问题标题】:Stop Azure blob trigger function from being triggered on existing blobs when function is published to the cloud当函数发布到云时,停止在现有 Blob 上触发 Azure Blob 触发器函数
【发布时间】:2019-01-11 12:20:28
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:

    如何禁用对现有 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 名称是否在列表中,如果没有,您可以继续触发方法。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-26
    • 2022-01-08
    • 2020-06-09
    • 1970-01-01
    • 2021-10-08
    • 2022-10-25
    • 2018-08-29
    • 1970-01-01
    相关资源
    最近更新 更多