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

标签 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)
{
    ;
}

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

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

谁能解释一下为什么吗?难道是我的用法错误?

此外,我无法找到 BlobDelete 触发器的任何文档,我只能找到 BlobInputBlobOutputBlobCopy 。我用 BlobDelete 进行了猜测,结果...成功了一半。

最佳答案

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

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

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

关于c# - Azure 存储事件触发器 - 捕获正在删除的 blob,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48466994/

相关文章:

c# - 将base64转换为图像并在gridview中显示

c# - SoapCoreOptions.Binding 现已过时

azure - 在哪里可以找到要在 Microsoft Flow 的 Azure REST API 调用中使用的受众和客户端 ID 字段?

azure - 如何将azure sdk升级到2.4?

c# - 如何通过给节点id读取xml中的节点值

c# - 加密名称

azure - 如何为Azure Keyvault + SecretProviderClass + imagePullSecrets + 私有(private)docker存储库配置部署文件

Azure应用服务角色环境初始化失败

java - 通过代理服务器连接到 Azure 存储帐户 Microsoft Azure Storage SDK for Java

Azure 表删除模式 - 删除旧项目