当前位置: 首页 > 知识库问答 >
问题:

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

孟茂
2023-03-14

我正在调查可用于 Azure 存储的 Webhook/事件触发器。不幸的是,文档似乎专注于演示如何让 Azure 门户为我构建函数,这不允许进行本地测试。

特别是,我正在研究捕获已删除 Blob 的时间。

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

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

当我从存储容器中删除一个blob时,问题出现了:函数没有被触发。

然而,我发现,如果我在控制台中点击<code>CTRL C</code>则该函数被触发。

有人能解释为什么吗?我的用法错了吗?

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

共有2个答案

于鸿博
2023-03-14

Blob触发器不会对已删除的blob做出反应。如果您需要,您应该查看带有博客事件的事件网格触发器。

司寇研
2023-03-14

BlobTrigger不会在已删除的Blob上启动,只会在新的/修改的Blob中启动。

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

  1. 查看blob事件的新(仍在预览中)事件网格通知系统:https://docs.microsoft.com/en-us/azure/storage/blobs/storage-blob-event-quickstart.这将为您提供blob事件的Webhook
  2. 将问题切换到队列触发器,并在删除blob时将消息排队(如果您可以控制它)。
  3. 采取手动方法-就像在定时器触发器上扫描目录。如果您有大型容器或没有状态来知道blob之前存在,则这可能不可行。但它在“垃圾收集器”场景中非常有效
 类似资料:
  • Azure函数存储帐户Blob容器触发器 在我们的一个用例中,我正在为具有以下条件的存储帐户容器中的任何活动寻找Azure函数触发器 < li >具有特定命名约定的容器(名称如xxxx-input) < li >它应该自动检测是否创建了新的容器(具有特定的命名约定) < li>

  • Azure Data Factory如何认证来自事件网格的传入消息?也就是在这幅图中,从事件网格到数据工厂的“推送消息”是如何得到认证的:https://docs . Microsoft . com/en-us/azure/Data-Factory/how-to-create-Event-trigger # storage-Event-trigger-Data-Factory-pipeline-r

  • 我的Python Azure函数配置文件()定义了一个Blob存储触发器。 当Azure功能唤醒时(即,Live Metrics中显示的服务器在一段睡眠时间后变为在线),它将处理所有现有Blob,而不管哪些Blob已经生成触发事件。 我注意到< code > azure-web jobs-hosts/blob receipts 文件夹中填充了< code>sandboxhost637nnn文件夹。

  • 我在 Azure 数据工厂中具有事件触发器,它在 Azure Blob 存储中创建新 Blob 时触发。但我的触发器在创建 Blob 时没有触发。 已按照以下链接进行操作,但卡在下面提到的点:Azure 数据工厂:事件未启动管道。 环境详情: 事件网格已注册,ADF为v2并将参数传递给管道。我的问题是我是否需要激活Azure存储事件订阅?如果是这样,我的事件处理程序应该是什么(在我的情况下是ADF

  • 我有一个 Blob 存储容器,其中配置了事件网格触发器(Blob 已创建)。我正在通过数据工厂加载此 blob 存储文件,很多时候,许多文件可能会在一次尝试中出现在此 blob 中。也许我们可以举一个20个文件的例子。 好消息是我的事件网格触发器启动了,函数app被调用。然而,我发现有时对于同一个文件,事件网格触发器被触发了不止一次。 在这20个文件中,很少有文件非常大,比如300 MB,但其他文

  • 我已经实现了一个EventGrid触发器来响应Blob存储事件,其逻辑简化如下: 外部API的响应时间不长(1秒或更短),我对主机的配置设置为默认(因此允许无限数量的并发调用)。 当同时添加多个blob(从只有2个blob开始)时,我在日志中得到了很多重复的事件(脚本正在快速地一个接一个地上传blob,中间没有等待时间)。 我觉得这可能是由于我从不承认收到事件,我不知道我是否应该在我的代码中执行此