你当前正在访问 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.txt

  • /a/b

  • /a/b.txt

枚举 Blob 时,可以利用分隔符字符。

元数据键和值名称

容器或 Blob 资源的元数据存储为与资源关联的名称/值对。 元数据密钥名称必须遵循以下命名规则:

  • 必须以字母或下划线开头

  • 以下任何字符可以是字母、数字或下划线

  • 元数据密钥名称必须是有效的 ASCII

元数据值名称还必须是有效的 ASCII。 请注意,元数据名称保留创建它们的大小写,但在设置或读取时不区分大小写。 如果为资源提交了两个或多个具有相同名称的元数据标头,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

另请参阅