我的天蓝色储存中有大约800k的斑点。当我用blobTrigger创建azure函数时,它开始处理我在存储中的所有blob。如何将我的功能配置为仅针对新的和更新的blob进行触发?
答案 0 :(得分:10)
目前无法做到这一点。在内部,我们通过将收据存储在控件容器azure-webjobs-hosts
中来跟踪我们处理的blob。任何没有收据的blob或旧收据(基于blob ETag)都将被处理(或重新处理)。这就是为什么你的现有blob正在被处理 - 他们没有收据。 BlobTrigger
目前旨在确保最终处理与路径模式匹配的容器中的所有blob,并在更新时重新处理。
如果您对此充满热情,可以在我们的回购here中记录功能请求,并详细说明您的方案。
答案 1 :(得分:0)
有没有人为此找到某种解决方法?我目前正在尝试在Azure Functions中使用BlobTrigger来处理SQL审核日志。
我只需要更新的日志,但是我们的保留期非常长,因此使用NOOP(在多个环境中,并且每个正在运行的主机上的收据)通过所有这些blob看起来是非常慢/坏的方式去做吧。
答案 2 :(得分:0)
解决这个问题的方法是在已处理的Blob上设置元数据(例如Status = Complete)。触发触发器后,我首先检查这部分元数据,然后返回该函数(如果已设置)。
缺点是元数据的更新将触发该函数的额外执行