了解 microsoft.storage.blobcreated 事件

Understanding the microsoft.storage.blobcreated event

我正在尝试使用事件触发器将数据从 Azure blob 加载到 SQL 数据库。

我想了解的是,当我在 Azure blob 存储中创建大文件时,事件 Microsoft.storage.blobcreated 实际何时触发?

  1. 是我的文件刚刚创建还在加载数据的时候还是

  2. 当文件加载完所有数据后

在第一种情况下,副本 activity 可能会丢失一些数据,因为文件尚未完全下载所有数据。

此外,在我们处理它的同时,有没有一种方法可以处理对现有 blob 的任何修改,以便修改后的文件也下载到我的 SQL 数据库中?

只有当您的文件在 Azure blob 存储中创建完成后,您才会拥有 blob 属性,例如 URL、TYPE 和 SIZE:

Microsoft.storage.blobcreated 事件需要这些 blob 属性作为事件属性,您可以从 blob 创建的事件示例中获取:

[{
  "topic": "/subscriptions/{subscription-id}/resourceGroups/Storage/providers/Microsoft.Storage/storageAccounts/xstoretestaccount",
  "subject": "/blobServices/default/containers/testcontainer/blobs/testfile.txt",
  "eventType": "Microsoft.Storage.BlobCreated",
  "eventTime": "2017-06-26T18:41:00.9584103Z",
  "id": "831e1650-001e-001b-66ab-eeb76e069631",
  "data": {
    "api": "PutBlockList",
    "clientRequestId": "6d79dbfb-0e37-4fc4-981f-442c9ca65760",
    "requestId": "831e1650-001e-001b-66ab-eeb76e000000",
    "eTag": "0x8D4BCC2E4835CD0",
    "contentType": "text/plain",
    "contentLength": 524288,
    "blobType": "BlockBlob",
    "url": "https://example.blob.core.windows.net/testcontainer/testfile.txt",
    "sequencer": "00000000000004420000000000028963",
    "storageDiagnostics": {
      "batchId": "b68529f3-68cd-4744-baa4-3c0498ec19f0"
    }
  },
  "dataVersion": "",
  "metadataVersion": "1"
}]

详情请见:Event properties.

这意味着在文件创建完成之前,您的数据不会加载到您的SQL数据库中。

关于你的另一个问题,有没有一种方法可以处理对现有 blob 的任何修改,以便修改后的文件也下载到我的 SQL 数据库中?

是的,有。例如,您可以将逻辑应用程序与触发器一起使用:Azure Blob Storage - When a blob is added or modified. You can reference this tutorial.

希望对您有所帮助。