Azure Python SDK:BlobServiceClient 与 BlobClient?

Azure Python SDK: BlobServiceClient vs. BlobClient?

我见过的大多数(全部?)Azure 存储 Python SDK 示例都演示了创建 BlobServiceClient,然后创建 BlobClient 用于上传/下载 blob( ref1, ref2,等等)。

为什么先创建 BlobServiceClient 然后再创建 BlobClient 而不是直接创建 BlobClient

示例:

from azure.storage.blob import BlobClient


def create_blob_client(connection_string):
    try:
        blob_client = BlobClient.from_connection_string(connection_string)
    except Exception as e:
        logging.error(f"Error creating Blob Service Client: {e}")
    return blob_client

connection_string = os.environ["CONNECTION_STRING"]

blob_client = create_blob_client(connection_string)

Why create a BlobServiceClient then a BlobClient instead of just directly creating a BlobClient?

BlobClient 只允许您使用 blob,因此如果您只想使用 blob,您可以直接创建一个 BlobClient 并使用它。您无需先创建 BlobServiceClient,然后再从中创建 BlobClient。

BlobServiceClient 出现在图片中如果你想在 blob 服务级别执行操作,例如在存储帐户中设置 CORS 或列出 blob 容器。那个时候你就需要BlobServiceClient了。

如果您已经创建了 BlobServiceClient 并提供了连接信息,

BlobServiceClient.get_blob_client 只是一种轻松获取 BlobClient 的便捷方法。 BlobServiceClient API 表示:

This client provides operations to retrieve and configure the account properties as well as list, create and delete containers within the account. For operations relating to a specific container or blob, clients for those entities can also be retrieved using the get_client functions.

如果这就是您的用例所需要的(例如,您的容器已经创建),直接创建 BlobClient 没有错。文档和示例可能使用 BlobServiceClient.get_blob_client 方法,因为它们通常是端到端的,即创建容器、上传 blob、删除容器等。