Azure 事件网格:查明 blob 是否被覆盖

问题描述

我已将 EventGridTrigger 连接到 Azure Functions 并监听 Microsoft.Storage.BlobCreated 更改。到目前为止,它似乎运行良好。但是,我观察到如果客户端覆盖同一个 blob,将会触发多个事件。我只需要为每个 blob 创建做一些服务器端处理一次。是否有任何元数据可供我们查看一个 blob 被覆盖了多少次?

作为一种解决方法,我正在考虑将 blob URI 保存到一个 Cosmos 容器中作为主键,以查看它之前是否曾经被处理过,但这对于这种微不足道的事情来说听起来有些矫枉过正。

解决方法

这里有 3 种可能的解决方案:

  1. 将 blob uri 存储到 Azure 表(与使用 Cosmos 的 sugestion 相同,但更便宜)
  2. 在处理之前打开 blob 版本控制检查它是 blob 的第一个版本。启用版本控制是有代价的。
  3. 检查更新 blob 的代码。我们可以使用 BlockBlobClient 并只更新受影响的块吗?这会避免在更新时触发 BlobCreated。

我会首先检查选项 3 是否可行。如果没有,请执行选项 1。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...