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