Amazon Simple Storage Service
开发人员指南 (API Version 2006-03-01)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。点 击 Getting Started with Amazon AWS to see specific differences applicable to the China (Beijing) Region.

使用前缀和分隔符按层次结构列出键

前缀和分隔符参数将限制列表操作返回的结果类型。前缀将结果限制为仅以特定前缀开头的键,并且分隔符将导致列表收拢在单个摘要列表结果中共享一个通用前缀的所有键。

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

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

  • Europe/France/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/'。

带分隔符的列表请求允许您仅浏览一个级别的层次结构、跳过或总结嵌套在更深级别的键 (可能是数百万)。例如,假设您拥有存储桶 (ExampleBucket) 和以下键。

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 元素 (它是这些键开头的子字符串)。

Copy
<ListBucketResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <Name>ExampleBucket</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>