获取返回空字典的存储 blob 的属性

Get Properties of storage blobs returning empty dict

我刚刚上传了 5GB 的数据,想验证 MD5 和是否匹配。我已经为我的本地文件副本计算了这个,但在从 Azure 获取 ContentMD5 时遇到问题。到目前为止,我得到一个空的字典,但我可以看到 blob 名称。目前我将其限制为前 10 个项目,仅用于调试。我知道 Azure 上的 MD5 与典型的 md5sum 调用不同,并且在本地允许这样做。但是,目前,我看不到任何 blob 属性。当我通过 Azure 控制台浏览时,这些属性就在那里(ContentMD5 属性)。

我哪里错了?

这是我目前的代码:

import os
from os import sys
from azure.storage.blob import BlobServiceClient

def remote_check(connection_str):
    blob_service_client = BlobServiceClient.from_connection_string(connection_str)
    container_name = "global"
    container = blob_service_client.get_container_client(container=container_name)
    blob_list = container.list_blobs()
    count = 0
    for blob in blob_list:
        if count < 10:
            blob_client = blob_service_client.get_blob_client(container=container_name, blob=blob)
            a = blob_client.get_blob_properties()
            print(a.metadata)
            print("Blob name: " + str(blob_client.blob_name))
            count = count + 1
        else:
           break

def main():
    try:
        CONNECTION_STRING = os.environ['AZURE_STORAGE_CONNECTION_STRING']
        remote_check(CONNECTION_STRING)
    except KeyError:
        print("AZURE_STORAGE_CONNECTION_STRING must be set.")
        sys.exit(1)

if __name__ == '__main__':
    main()

也许您可以使用此处描述的休息(例如,使用像邮递员这样的休息客户端)调用来检查 blob 属性:

https://docs.microsoft.com/en-us/rest/api/storageservices/get-blob-properties

“Content-MD5”返回为 HTTP-Response Header。

请确保您使用的是最新版本的软件包 azure-storage-blob 12.6.0

有些属性在content_settings中,例如要得到content_md5,你应该使用下面的代码:

a=blob_client.get_blob_properties()
print(a.content_settings.content_md5)

这是我的测试结果: