你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

命名和引用容器、Blob 和元数据

本主题介绍了如何命名和引用容器、Blob、元数据和快照。 存储帐户可包含零个或多个容器。 容器包含属性、元数据以及零个或多个 Blob。 如果帐户具有分层命名空间,则容器还可以包含零个或多个目录,这些目录可以包含零个或多个 Blob。 Blob 是由二进制数据、属性和元数据组成的任一实体。

资源名称

引用容器或 Blob 的 URI 必须是唯一的。 由于每个帐户名称都是唯一的,因此两个帐户可具有同名容器。 但是,在给定的存储帐户中,每个容器均必须具有一个唯一名称。 此外,给定容器中的每个 Blob 必须在该容器中拥有一个唯一名称。

如果您尝试使用违反命名规则的名称创建容器或 Blob,则请求将失败,状态代码为 400(错误的请求)。

Blob 和容器名称将传递给 URL 中的 BLOB 服务。 某些字符必须使用 UTF-8(首选)或 MBCS 以百分比编码形式出现在 URL 中。 使用 Azure 存储客户端库时,会自动进行此编码。 但是,即使经过编码,还是有一些字符在 URL 路径中无效。 如果这些字符出现在 Blob 或容器名称中,请求可能会失败。 有关这些字符的列表,请参阅 不建议在容器或 Blob 名称中使用 Unicode 字符

像 \uE000 这样的码位虽然在 NTFS 文件名中有效,但不是有效的 Unicode 字符,因此无法使用。 此外,也不允许使用某些 ASCII 或 Unicode 字符,如控制字符(0x00 到 0x1F、\u0081 等)。

有关控制 HTTP/1.1 中 Unicode 字符串的其他规则,请参阅 RFC 2616 第 2.2 节:基本规则RFC 3987

容器名称

容器名称必须是有效的 DNS 名称,并符合以下命名规则:

  • 容器名称必须以字母或数字开头或结尾,并且只能包含字母、数字和连字符/减号 ( ) 字符。

  • 每个连字符/减 ( ) 字符必须紧跟字母或数字;容器名称中不允许使用连续连字符。

  • 容器名称中的所有字母都必须为小写。

  • 容器名称必须介于 3 到 63 个字符。

目录名称

如果帐户具有分层命名空间,则目录名称必须符合以下命名规则:

  • 目录名称可以包含字符的任意组合。

  • 目录名称的长度必须至少为一个字符,并且长度不能超过 1,024 个字符。

  • 目录名称区分大小写。

  • 必须正确地对保留的 URL 字符进行转义。

注意

避免使用以点 (.) 、正斜杠 (/) 、反斜杠 (\) 结尾的目录名称,或二者的序列或组合。 路径段不应以点 (.) 结尾。

不允许反斜杠的屏幕截图。

Blob 名称

Blob 名称必须符合以下命名规则。 除非另有说明,否则这些规则也适用于具有分层命名空间的帐户中的 Blob。

  • Blob 名称可以包含任何字符组合。

  • 对于 Azure 存储中的 blob,blob 名称的长度必须至少为一个字符且不能超过 1,024 个字符。

    Azure 存储模拟器支持最多 256 个字符的 Blob 名称。 有关详细信息,请参阅使用 Azure 存储模拟器进行开发和测试

  • Blob 名称区分大小写。

  • 必须正确地对保留的 URL 字符进行转义。

  • 包含 Blob 名称的路径段数存在限制。 路径段是连续分隔符之间的字符串, (例如,对应于目录或虚拟目录的正斜杠 /) 。 以下路径段限制适用于 Blob 名称:

    • 如果存储帐户 启用分层命名空间,则构成 Blob 名称的路径段数不能超过 254。
    • 如果存储帐户启用了分层命名空间,则构成 blob 名称的路径段数不能超过 63 (包括帐户名的路径段和容器名称) 。

注意

避免使用以点 (.) 、正斜杠 (/) 、反斜杠 (\) 结尾的 blob 名称,或两者的序列或组合。 路径段不应以点 (.) 结尾。

不允许正斜杠的屏幕截图。

默认情况下,Blob 服务基于平面存储方案,而不是分层方案。 但是,可以在 Blob 名称中指定字符或字符串分隔符来创建虚拟层次结构。 例如,以下列表显示了有效的唯一 Blob 名称。 请注意,在同一容器中,作为 Blob 名称和虚拟目录名称的字符串是有效的:

  • /a

  • /a.txt

  • /a/b

  • /a/b.txt

枚举 Blob 时可使用分隔符。

元数据名称

容器或 Blob 资源的元数据将存储为与该资源关联的名称值对。 元数据名称必须遵守 C# 标识符的命名规则。

请注意,元数据名称保留在创建时具有的大小写形式,但在设置或读取时不区分大小写。 如果为资源提交两个或多个具有相同名称的元数据标头,Blob 服务将返回状态代码 400(错误的请求)。

资源 URI 语法

每个资源均具有一个对应的基本 URI,它指的是资源本身。

对于存储帐户,基本 URI 仅包含帐户的名称:

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

对于容器,基本 URI 包含帐户名称和容器名称:

https://myaccount.blob.core.windows.net/mycontainer

对于 Blob,基本 URI 包含帐户名称、容器名称和 Blob 名称:

https://myaccount.blob.core.windows.net/mycontainer/myblob

存储帐户可具有根容器(它是可从 URI 中忽略的默认容器)。 可以在不命名容器的情况下引用根容器中的 Blob,也可以按根容器的名称 ($root) 显式引用它。 有关详细信息 ,请参阅使用根容器 。 以下 URI 指根容器中的 Blob:

https://myaccount.blob.core.windows.net/myblob  
https://myaccount.blob.core.windows.net/$root/myblob  

Blob 快照

快照是指 Blob 在创建快照时所存储的状态的只读版本。 可以使用快照创建 Blob 的备份或检查点。 快照 Blob 名称包含基本 Blob URI 和日期时间值,该值指示快照的创建时间。

例如,假设 Blob 具有以下 URI:

https://myaccount.blob.core.windows.net/mycontainer/myblob

该 Blob 的快照 URI 的格式如下所示:

https://myaccount.blob.core.windows.net/mycontainer/myblob?snapshot=<DateTime>

下表提供了不建议在容器或 Blob 名称中使用的 Unicode 字符的列表。 这些字符在此列表中与其他字符结合使用时,可能无法进行 UTF-8 或 MBCS 解码,从而导致对 Blob 服务的请求失败。

Unicode 字符
U+0080
U+0082
U+0083
U+0084
U+0085
U+0086
U+0087
U+0088
U+0089
U+008A
U+008B
U+008C
U+008E
U+0091
U+0092
U+0093
U+0094
U+0095
U+0096
U+0097
U+0098
U+0099
U+009A
U+009B
U+009C
U+009E
U+009F
U+FDD1
U+FDD2
U+FDD3
U+FDD4
U+FDD5
U+FDD6
U+FDD7
U+FDD8
U+FDD9
U+FDDA
U+FDDB
U+FDDC
U+FDDE
U+FDDF
U+FDE0
U+FDE1
U+FDE2
U+FDE3
U+FDE4
U+FDE5
U+FDE6
U+FDE7
U+FDE8
U+FDE9
U+FDEA
U+FDEB
U+FDEC
U+FDED
U+FDEE
U+FDEF
U+FFF0
U+FFF1
U+FFF2
U+FFF3
U+FFF4
U+FFF5
U+FFF6
U+FFF7
U+FFF8
U+FFF9
U+FFFA
U+FFFB
U+FFFC
U+FFFD
U+FFFE
U+FFFF
U+1FFFE
U+1FFFF
U+2FFFE
U+2FFFF
U+3FFFE
U+3FFFF
U+5FFFE
U+5FFFF
U+6FFFE
U+6FFFF
U+7FFFE
U+7FFFF
U+9FFFE
U+9FFFF
U+AFFFE
U+AFFFF
U+BFFFE
U+BFFFF
U+DFFFE
U+DFFFF
U+EFFFE
U+EFFFF
U+FFFFE
U+FFFFF

另请参阅