我正在研究可用于 Azure 存储的 Webhooks/事件触发器。不幸的是,文档似乎专注于展示如何让 Azure 门户为我构建该函数,这不允许本地测试。
特别是,我正在考虑在删除 blob 时进行捕获。
我的使用示例(Azure 函数):
[FunctionName("BlobDelete")]
public static async Task Run([BlobTrigger("...")]
CloudBlockBlob blob,
string name,
TraceWriter log)
{
;
}
当我从存储容器中删除 blob 时出现问题:该函数未触发。
但是,我发现如果我在控制台中点击CTRL+C
那么就会触发该函数。
谁能解释一下为什么吗?难道是我的用法错误?
此外,我无法找到 BlobDelete
触发器的任何文档,我只能找到 BlobInput
、BlobOutput
和 BlobCopy
。我用 BlobDelete
进行了猜测,结果...成功了一半。
最佳答案
BlobTrigger 不会在已删除的 blob 上触发,只会在新的/修改的 blob 上触发。
替代方案包括(按推荐顺序列出):
- 查看针对 blob 事件的新(仍处于预览版)事件网格通知系统:https://learn.microsoft.com/en-us/azure/storage/blobs/storage-blob-event-quickstart 。这将为您提供 blob 事件的 webhook。
- 将问题切换到队列触发器,并在删除 blob 时对消息进行排队(如果您可以控制它)
- 采取手动方法 - 例如在计时器触发器上扫描目录。如果您有大型容器或没有状态来知道 blob 以前存在,则这可能不可行。但它在“垃圾收集器”场景中效果很好。
关于c# - Azure 存储事件触发器 - 捕获正在删除的 blob,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48466994/