你当前正在访问 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 字符
下表提供了不建议在容器或 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 |