azure - 当函数发布到云时,停止在现有 blob 上触发 Azure blob 触发器函数
问题描述
我有一个在 blob 触发器上启动的 Azure 函数。有趣的是,如果我将此 Azure 函数的更新版本发布到云中并且已经存在 blob,那么将在每个已经存在的 blob 上触发 Azure 函数。
这不是我想要的功能。相反,我希望仅在新上传的 blob 上触发新发布的 Azure 函数,而不是在已存在的 blob 上触发。如何禁用对现有 blob 的触发?
解决方案
如何禁用对现有 blob 的触发?
目前没有办法做到这一点,也不推荐。
在内部,我们通过将收据存储在我们的控制容器中来跟踪我们处理了哪些 blob azure-webjobs-hosts
。任何没有收据的 blob 或旧收据(基于 blob ETag)都将被处理(或重新处理)。这就是您现有的 blob 正在处理的原因,它们没有收据。
BlobTrigger
当前旨在确保最终处理与路径模式匹配的容器中的所有 blob,并在它们更新时重新处理。所以在所有的 blob 都有收据之后,当你上传一个新的 blob 时,它只会由 new blob 触发。
更多细节,你可以参考这篇文章。
当文件上传到 Azure Blob 存储或在其中更新时,会触发 Blob 触发器功能。如果禁用对现有 blob 的触发,则在更新 blob 时它不会获取最新内容,不推荐。
解决方法:
如果您仍然想在新上传的 blob 上触发,您可以在调用该函数时添加判断。
列出容器中所有现有的 blob,当 blob 触发调用时,检查 blob 名称是否在列表中,如果没有,您可以继续触发方法。
推荐阅读
- python - Groupby pandas 按特定公式
- php - 如何将制表符空间添加到 php 函数
- java - 在 Java 中选择 ArrayList 中最后 25% 的对象
- laravel - 使用 Laravel Echo 服务器的 React-Native 推送通知
- encryption - 将纯文本与密文异或以检索密钥(C1 XOR P1=K,P1 XOR K=C1)
- c# - NHibernate 查询:包含在父属性或子属性中的字符串
- selenium - Selenium 如何管理等待页面加载?
- asp.net - 在一个解决方案中混合 packageReference 和 packages.config?
- angular - 如何将多重继承与角度组件一起使用
- google-apps-script - 缺少资源 > 应用脚本项目上的云平台