【问题标题】:Blob Created event only after Blob committed?Blob 仅在 Blob 提交后创建事件?
【发布时间】:2022-10-07 15:23:38
【问题描述】:

我们设置了一个带有 eventHubTrigger 的 Azure 函数来读取 Apache Nifi 创建的 blob。 EventGridSchema 针对 Blob Created 事件进行了过滤,基本上可以正常工作。问题是 Azure 函数偶尔会在 blob 完全提交之前获取它。

存储帐户是具有分层命名空间的 BlockBlobStorage 类型。 StorageBlobLogs 显示了典型的操作顺序:

Nifi 处理器:CreatePathFile > AppendFile > FlushFile。 紧随其后的 Azure 函数正在执行 Getblob > DeleteBlob。问题发生时,GetBlob 操作发生在FlushFile 甚至早于AppendFile

似乎只有 CreatePathFile 操作会触发 Blob Created 事件。 docs 表示 FlushWithClose 也会触发它,我们尝试在 data.api 上应用事件过滤器,除了完全停止函数运行之外没有实现任何其他功能。

我们如何为 Blob 完全提交后严格触发的 Blob Created Event 设置订阅?

  • 我不知道 Nifi 是如何工作的,但 \"CreateFilePath\" 是否可能已经创建了一个(空)blob?
  • 是的,它似乎首先创建了一个空文件。 Nifi processor docs 但是这意味着什么?
  • 好吧,即使是空的 blob 也会正确地触发 Blob Created 事件。
  • 是的,同意了。我期待每个创建的(空)blob 都有一个 Blob Create 事件,我将被过滤掉,每个完全提交的 blob 都会触发函数,但只观察前一个。
  • 这是合乎逻辑的,不是吗? Blob 只创建一次。之后您只需更新它,因此没有其他“已创建”事件

标签: azure azure-blob-storage azure-eventgrid


【解决方案1】:

我们如何为 Blob 完全提交后严格触发的 Blob Created Event 设置订阅?

没有配置,因为它取决于您的客户端在 blob REST API 中使用的操作。 触发时创建的 Microsoft.Storage.BlobCreated 也是 documented here

在创建或替换 blob 时触发。具体来说,本次活动 当客户端使用 PutBlob、PutBlockList 或 CopyBlob 时触发 Blob REST API 中可用的操作以及 Block Blob 完全承诺。如果客户端使用 CopyBlob 操作 启用了分层命名空间功能的帐户, CopyBlob 操作的工作方式略有不同。在这种情况下, 当 CopyBlob 时触发 Microsoft.Storage.BlobCreated 事件 操作已启动,而不是在块 Blob 完全完成时 坚定的。

【讨论】:

    猜你喜欢
    • 2021-09-23
    • 1970-01-01
    • 1970-01-01
    • 2020-03-03
    • 2010-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-13
    相关资源
    最近更新 更多