代码之家  ›  专栏  ›  技术社区  ›  aBlaze

当函数发布到云时,停止Azure BLB触发器函数在现有的斑点上被触发

  •  3
  • aBlaze  · 技术社区  · 6 年前

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

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

    1 回复  |  直到 6 年前
        1
  •  4
  •   Joey Cai    6 年前

    如何禁用现有BLUB上的触发?

    没办法这么做 目前和 未推荐的 .

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

    BlobTrigger 当前旨在确保容器中与路径模式匹配的所有blob最终都会被处理,并在更新时重新处理。 所以 在所有blob都有收据之后,当您上载新blob时,它将仅由新blob触发 .

    有关更多详细信息,请参阅 article .

    当文件上载到Azure blob存储或在其中更新时,将触发blob触发器函数。如果禁用现有的斑点,当更新BLB时,它不会得到最新的内容,而不是推荐的内容。

    解决办法 :

    如果仍要对新上载的blob进行触发,则可以在调用函数时添加判断。

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