使用前缀组织对象 - Amazon Simple Storage Service

使用前缀组织对象

您可以使用前缀来组织存储在 Amazon S3 存储桶中的数据。前缀是对象键名称开头的一串字符串。前缀可以是任意长度,取决于对象键名称的最大长度(1024 个字节)。您可以把前缀视为一种以类似于目录的方式组织数据的方式。但是,前缀不是目录。

按前缀搜索会将结果限制为仅以指定前缀开头的这些键。分隔符导致列表操作将共享公共前缀的所有键汇总到单个汇总列表结果中。

前缀和分隔符参数的目的是帮助您按层次结构组织,然后浏览您的键。要执行此操作,首先为您的存储桶选取一个分隔符,例如,斜杠(/),它不会出现在任何预期的键名中。您可以使用另一个字符作为分隔符。斜杠 (/) 字符没有什么独特之处,它是一个非常常见的前缀分隔符。接下来,通过串联所有包含层次结构的级别,并使用分隔符分隔每个级别来构建您的键名。

例如,如果您正在存储关于城市的信息,您可以按大陆、按国家/区域,然后按省份或州来自然地组织他们。因为这些名称通常不包含标点符号,您可以使用斜杠 (/) 作为分隔符。下面的示例使用斜杠 (/) 分隔符。

  • Europe/France/Nouvelle-Aquitaine/Bordeaux

  • North America/Canada/Quebec/Montreal

  • North America/USA/Washington/Bellevue

  • North America/USA/Washington/Seattle

如果您采用此方式来存储世界上每个城市的数据,那么管理平面键命名空间会很困难。通过使用带列表操作的 PrefixDelimiter,您可以使用已创建的层次结构来列出您的数据。例如,要列出美国的所有州,请设置 Delimiter='/'Prefix='North America/USA/'。要列出您拥有数据的所有加拿大省份,请设置 Delimiter='/'Prefix='North America/Canada/'

有关分隔符、前缀和嵌套文件夹的更多信息,请参阅前缀和嵌套文件夹之间的区别

使用前缀和分隔符列出对象

如果您使用分隔符发布列表请求,您可以仅浏览一个级别的层次结构、跳过或总结嵌套在更深级别的键(可能是数百万)。例如,假设您拥有具有以下键的存储桶(DOC-EXAMPLE-BUCKET):

sample.jpg

photos/2006/January/sample.jpg

photos/2006/February/sample2.jpg

photos/2006/February/sample3.jpg

photos/2006/February/sample4.jpg

示例存储桶仅拥有根级 sample.jpg 对象。要仅列出存储桶中的根级对象,您需要向存储桶发送带正斜杠(/)分隔符的 GET 请求。作为响应,Amazon S3 将返回 sample.jpg 对象密钥,因为它不包含 / 分隔符。所有其他键都包含分隔符。Amazon S3 将组合这些密钥,并在指定的分隔符首次出现时,返回带前缀值 photos/ 的单个 CommonPrefixes 元素(它是这些密钥开头的子字符串)。

<ListBucketResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <Name>DOC-EXAMPLE-BUCKET</Name> <Prefix></Prefix> <Marker></Marker> <MaxKeys>1000</MaxKeys> <Delimiter>/</Delimiter> <IsTruncated>false</IsTruncated> <Contents> <Key>sample.jpg</Key> <LastModified>2011-07-24T19:39:30.000Z</LastModified> <ETag>&quot;d1a7fb5eab1c16cb4f7cf341cf188c3d&quot;</ETag> <Size>6</Size> <Owner> <ID>75cc57f09aa0c8caeab4f8c24e99d10f8e7faeebf76c078efc7c6caea54ba06a</ID> <DisplayName>displayname</DisplayName> </Owner> <StorageClass>STANDARD</StorageClass> </Contents> <CommonPrefixes> <Prefix>photos/</Prefix> </CommonPrefixes> </ListBucketResult>

有关以编程方式列出对象键的更多信息,请参阅以编程方式列出对象键