如何在 Event Hub 的存储帐户中列出最新的 AVRO blob?

How to list the newest AVRO blobs in a storage account of Event Hub?

我们在 Microsoft Azure 中有一个事件中心实例,它以 AVRO 格式将数据捕获到 blob 存储帐户中:

Blob 名称是 container1/my-test-namespace/my-test-eventhub 后跟 0、1、2 或 3 - 然后是日期。

我可以使用 ContainerClient python class:

列出 blob
import os, uuid
from azure.storage.blob import BlobServiceClient, BlobClient, ContainerClient, __version__

print("Azure Blob storage v" + __version__ + " - List blobs in my-test container1")
connect_str = 'DefaultEndpointsProtocol=https;AccountName=...;AccountKey=...;EndpointSuffix=core.windows.net'

container_client = ContainerClient.from_connection_string(connect_str, 'container1')
blob_list = container_client.list_blobs()
i = 0
for blob in blob_list:
    print(str(i) + ":\t" + blob.name)
    i = i + 1
    if i >= 10:
        break

这很好用-

不过我想知道,如何显示 10 个 最新 blob?

我想列出 10 个最新的 blob,末尾有“.avro”。

我已经在 azure.storage.blob 文档中搜索过,但还没有找到方法。

如果你看上面的截图,有一个“修改”列,我想知道它是否可以从 python 脚本中使用。

很遗憾,azure blob storage sdk 中没有sort方法。

有 2 个解决方法。

第一个是您可以创建一个 blob 触发的 azure 函数,当在该容器中创建一个新的 blob 时,将相关信息(如 blob_name、creation_time)写入一个数据库等。然后你可以通过访问数据库查询最新的10个blob。这是目前推荐的。

第二个是,你应该列出所有的 blob,然后编写你自己的代码按 creation time 属性.

对它们进行排序