了解应用如何与 Blob 存储数据资源交互

生成应用程序以使用 Azure Blob 存储中的数据资源时,代码主要与三种资源类型进行交互:存储帐户、容器和 Blob。 本文介绍这些资源类型,并说明它们如何相互关联。 它还演示了应用程序代码如何使用 Azure Blob 存储客户端库与这些各种资源进行交互。

Blob 存储资源类型

Azure Blob 存储客户端库允许与存储服务中三种类型的资源进行交互:

以下图示显示了这些资源之间的关系:

显示存储帐户、容器和 Blob 之间的关系的关系图

存储帐户

存储帐户在 Azure 中为数据提供唯一的命名空间。 存储在 Azure 存储中的每个对象都有一个地址,其中包含唯一的帐户名称。 帐户名称和 Blob 存储终结点的组合构成了存储帐户中对象的基址。

例如,如果存储帐户名为 sampleaccount,则 Blob 存储的默认终结点为:

https://sampleaccount.blob.core.windows.net

若要了解有关存储帐户类型的详细信息,请参阅 Azure 存储帐户概述

容器

容器组织一组 Blob,类似于文件系统中的目录。 存储帐户可以包含无限数量的容器,容器可以存储无限数量的 Blob。

容器的 URI 类似于:

https://sampleaccount.blob.core.windows.net/sample-container

有关命名容器的详细信息,请参阅 命名和引用容器、Blob 和元数据

Blob

Azure 存储支持三种类型的 Blob:

  • 块 Blob 存储文本和二进制数据。 块 Blob 由可以分别管理的数据块构成。 块 blob 最多可存储约 190.7 TiB。
  • 与块 Blob 一样,追加 Blob 也由块构成,但针对追加操作进行了优化。 追加 Blob 非常适用于诸如记录来自虚拟机的数据之类的场景。
  • 页 Blob 用于存储最大 8 TiB 的随机访问文件。 有关页面数据块的详细信息,请参阅 Azure 页面数据块概述

有关不同类型 Blob 的详细信息,请参阅了解块 Blob、追加 Blob 和页 Blob

Blob 的 URI 类似于:

https://sampleaccount.blob.core.windows.net/sample-container/sample-blob

有关命名 Blob 的详细信息,请参阅 命名和引用容器、Blob 和元数据

使用 Azure SDK 处理数据资源

Azure SDK 包含基于 Azure REST API 构建的库,允许你通过熟悉的编程语言范例与 REST API作进行交互。 SDK 旨在简化应用程序与 Azure 资源之间的交互。

在极少数情况下,升级到最新 beta 版或正式发布版 SDK 的应用程序可能会收到 InvalidHeaderValue 错误消息。 使用任何一个存储库时都可能发生此问题。 错误信息类似于以下示例:

HTTP/1.1 400 The value for one of the HTTP headers is not in the correct format.
Content-Length: 328
Content-Type: application/xml
Server: Microsoft-HTTPAPI/2.0
x-ms-request-id: <REMOVED>
Date: Fri, 19 May 2023 17:10:33 GMT
 
<?xml version="1.0" encoding="utf-8"?>
<Error>
<Code>InvalidHeaderValue</Code>
<Message>
The value for one of the HTTP headers is not in the correct format.
RequestId:<REMOVED>
Time:2023-05-19T17:10:34.2972651Z
</Message>
<HeaderName>x-ms-version</HeaderName><HeaderValue>yyyy-mm-dd</HeaderValue>
</Error>

如果您已升级到最新的测试版或正式版本的SDK并遇到此错误,建议您降级到之前的正式版本的SDK,以查看问题是否得到解决。

可以在以下位置查看特定于 SDK 的详细信息:

如果问题仍然存在,或者建议不可行,请开具支持票证以探索其他选项。

在 Azure Blob 存储客户端库中,每个资源类型都由一个或多个关联的类表示。 这些类提供用于处理 Azure 存储资源的操作。

下表列出了带有简要说明的基本类:

班级 DESCRIPTION
BlobServiceClient 表示存储帐户,并提供用于检索和配置帐户属性的操作,以及在存储帐户中处理 Blob 容器的功能。
BlobContainerClient 表示特定的 Blob 容器,并提供用于处理容器和其中的 blob 的操作。
BlobClient 表示特定的 Blob,并提供用于处理 Blob 的常规操作,包括上传、下载、删除和创建快照的操作。
AppendBlobClient 表示追加 Blob,并提供特定于追加 Blob 的操作,比如追加日志数据。
BlockBlobClient 表示块 Blob,并提供特定于块 blob 的操作,例如暂存和随后提交数据块。

以下包中包含了用于处理 Blob 存储数据资源的类:

后续步骤

使用 SDK 处理 Azure 资源从创建客户端实例开始。 若要详细了解客户端对象创建和管理,请参阅 创建和管理与数据资源交互的客户端对象