Azure 事件网格:查明 blob 是否被覆盖
Azure Event Grid: Find out if a blob is being overwritten
我已将 EventGridTrigger
连接到 Azure Functions 并监听 Microsoft.Storage.BlobCreated
更改。到目前为止,它似乎工作正常。但是,我观察到如果客户端覆盖同一个 blob,则会触发多个事件。我只需要为每个 blob 创建 一次 做一些服务器端处理。是否有任何元数据可供我们查看一个 blob 被覆盖了多少次?
作为一种解决方法,我正在考虑将 blob URI 作为主键保存到 Cosmos
容器中,以查看它之前是否被处理过,但这对于这种微不足道的事情来说听起来有点过分了。
这里有 3 种可能的解决方案:
- 将 blob uri 存储到 Azure Table(与您对 Cosmos 的建议相同,但更便宜)
- 打开 blob 版本控制并在处理之前检查它是否是 blob 的第一个版本。开启版本控制是有代价的。
- 检查更新 blob 的代码。是否可以使用 BlockBlobClient 并仅更新受影响的块?这是否会避免在更新时触发 BlobCreated。
我将从检查选项 3 是否可行开始。如果不执行选项 1。
我已将 EventGridTrigger
连接到 Azure Functions 并监听 Microsoft.Storage.BlobCreated
更改。到目前为止,它似乎工作正常。但是,我观察到如果客户端覆盖同一个 blob,则会触发多个事件。我只需要为每个 blob 创建 一次 做一些服务器端处理。是否有任何元数据可供我们查看一个 blob 被覆盖了多少次?
作为一种解决方法,我正在考虑将 blob URI 作为主键保存到 Cosmos
容器中,以查看它之前是否被处理过,但这对于这种微不足道的事情来说听起来有点过分了。
这里有 3 种可能的解决方案:
- 将 blob uri 存储到 Azure Table(与您对 Cosmos 的建议相同,但更便宜)
- 打开 blob 版本控制并在处理之前检查它是否是 blob 的第一个版本。开启版本控制是有代价的。
- 检查更新 blob 的代码。是否可以使用 BlockBlobClient 并仅更新受影响的块?这是否会避免在更新时触发 BlobCreated。
我将从检查选项 3 是否可行开始。如果不执行选项 1。