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

awj*_*awj 2 c# azure azure-storage azure-blob-storage azure-functions

我正在研究可用于 Azure 存储的 Webhooks/事件触发器。不幸的是,文档似乎专注于展示如何让 Azure 门户为我构建该功能,这不允许本地测试。

特别是,我正在研究在删除 blob 时进行捕获。

我的使用示例(Azure 函数):

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

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

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

谁能解释为什么?难道是我的用法不对?

另外,我无法找到触发器的任何文档BlobDelete,我只能找到BlobInput,BlobOutputBlobCopy。我猜测了一下BlobDelete,结果……成功了一半。

Mik*_*e S 5

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

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

  1. 查看 Blob 事件的新(仍处于预览版)事件网格通知系统:https://learn.microsoft.com/en-us/azure/storage/blobs/storage-blob-event-quickstart。这将为您提供 blob 事件的 webhooks。
  2. 将问题切换到队列触发器,并在删除 blob 时对消息进行排队(如果您可以控制它)
  3. 采取手动方法 - 例如在计时器触发器上扫描目录。如果您有大型容器或没有状态来知道 blob 以前存在,则这可能不可行。但它在“垃圾收集器”场景中效果很好。