Azure存储事件触发器 - 捕获正在删除的blob

时间:2018-01-26 17:59:32

标签: c# azure azure-storage azure-storage-blobs azure-functions

我正在调查可用于Azure存储的webhooks /事件触发器。遗憾的是,文档似乎专注于展示如何让Azure门户为我构建功能,但不允许进行本地测试。

特别是,我正在研究何时删除blob。

我的使用示例(Azure功能):

[FunctionName("BlobDelete")]
public static async Task Run([BlobTrigger("...")]
                             CloudBlockBlob blob,
                             string name,
                             TraceWriter log)
{
    ;
}

当我从存储容器中删除blob时出现问题:该功能未被触发。

但是,我发现如果我在控制台中点击CTRL+C,那么就会触发该功能。

任何人都可以解释原因吗?我的用法不对吗?

此外,我无法找到BlobDelete触发器的任何文档,我只能找到BlobInputBlobOutputBlobCopy。我用BlobDelete猜测了它......一半都有效。

2 个答案:

答案 0 :(得分:2)

BlobTrigger不会触发已删除的blob,只会触发新的/修改的blob。

替代品包括(按推荐顺序列出):

  1. 查看blob事件的新(静态预览)事件网格通知系统:https://docs.microsoft.com/en-us/azure/storage/blobs/storage-blob-event-quickstart。这将为您提供blob事件的webhook。
  2. 将问题转移到队列触发器并在删除blob时对消息进行排队(如果可以控制)
  3. 采取手动方式 - 就像在定时器触发器上扫描目录一样。如果你有大容器或没有状态知道blob以前存在,这可能是不可行的。但它在"垃圾收集器"场景。

答案 1 :(得分:2)

Blob Trigger对删除的blob没有反应。如果您需要,您应该查看带有博客事件的Event Grid触发器。