文档简介:
GET Bucket (List Objects)
此操作用来返回Bucket中部分或者全部(最多1000)的Object信息。用户可以在请求元素中设置选择条件来获取Bucket中的Object的子集。
只有根用户和拥有GET Bucket权限的子用户才能执行此操作。
请求语法
GET / HTTP/1.1 Host: BucketName.oos-cn.ctyunapi.cn Date: date Authorization: signatureValue |
请求参数
名称 |
描述 |
是否必须 |
delimiter |
分隔符,是用来对关键字们进行分组的字符。所有的关键字都包含delimiter和prefix间的相同子串,prefix之后第一个遇到delimiter的字符串都会加到一个叫CommonPrefix的组中。如果没有特别定义prefix,所有的关键字都会被返回,但不会有CommonPrefix。delimiter只支持”/”,不支持其他分隔符。 |
否 |
marker |
指明在bucket中list object的起始位置,Amazon S3中list object按照阿拉伯字母顺序。 |
否 |
max-keys |
设置返回结果中最多显示的数量,如果查询结果超过最大数量,另一个变量是否翻页会标记为true<IsTruncated>True<IsTruncated>,用来返回剩余的查询结果。 |
否 |
prefix |
前缀用来限制返回的结果必须以这个前缀开始,可以通过前缀将bucket分为若干个组。 |
否 |
返回元素
名称 |
描述 |
Contents |
每个Object返回的元数据。 |
CommonPrefixes |
当定义delimiter之后,返回结果中会包含CommonPrefixes,CommonPrefix中包含以prefix开头,delimiter结束的左右字符串组合,比如prefix是note/,同时delimiter是斜杠(/),结果中的note/summer/july将返回note/summer/,其余结果将按照maxkey要求返回。 |
Delimiter |
将prefix和第一次出现delimiter的所有查询结果滚动的存入CommonPrefix组中。 |
DisplayName |
Object的所有者显示名称。 |
ETag |
通过MD5的方式计算出标签,ETag主要用来反映对象内容的信息发生了改变,并不反映元数据的变化。 |
ID |
对象所属账户ID。 |
IsTruncated |
通过是(True)或否(false)来表示返回的结果是否为所有要求的结果。 |
Key |
对象的关键字。 |
LastModified |
记录的对象最后一次被修改的日期和时间。 |
Marker |
标记从哪个位置开始罗列出bucket中的object。 |
Name |
Bucket的名称。 |
Owner |
Bucket所属的根用户。 |
Prefix |
关键字以特定的前缀开始。 |
Size |
记录对象object的大小。 |
StorageClass |
存储类型: STANDARD:标准存储; STANDARD_IA:低频访问存储; REDUCED_REDUNDANCY:低冗余存储。 |
NextMarker |
若IsTruncated返回true,用户可以将NextMarker的值设置为下次请求中的marker参数,以便获取后续对象。 |
请求示例
GET / HTTP/1.1 Host: BucketName.oos-cn.ctyunapi.cn Date: Mon, 03Sep 2012 17:50:00 GMT Authorization: AWS 7799e793ce4624ee7e5a:xQE0diMbLRepdf3YB+FIEXAMPLE= Content-Type: text/plain |
返回示例
<?xml version="1.0" encoding="UTF-8"?> <ListBucketResult xmlns="/doc/2006-03-01/"> <Name>bucket</Name> <Prefix/> <Marker/> <MaxKeys>1000</MaxKeys> <IsTruncated>false</IsTruncated> <Contents> <Key>my-image.jpg</Key> <LastModified>2012-09-03T17:50:30.000Z</LastModified> <ETag>"fba9dede5f27731c9771645a39863328"</ETag> <Size>434234</Size> <StorageClass>STANDARD</StorageClass> <Owner> <ID>75aa57f09aa0c8caeab4f8c24e99d10f8e7faeebf76c078efc7c6caea54ba06a</ID> <DisplayName>yourmail@mail.com</DisplayName> <Owner> <ID></ID> <DisplayName></DisplayName> </Owner> </Contents> </ListBucketResult> |
使用请求变量的示例:
假设数据库中存储数据如下所示:
doc/Sample.pdf
doc/Ant/sample.doc
doc/Feb/sample2.doc
doc/Feb/sample3.doc
doc/Feb/sample4.doc
要查询prefix为doc/,delimiter为/,同时marker为doc/F,max-keys为40的结果,请求头为
GET /?prefix=doc/&marker=doc/F&max-keys=40&delimiter=/ HTTP/1.1 Host: doc.oos-cn.ctyunapi.cn Date: Mon, 03 Sep 2012 12:00:00 GMT Authorization: AWS 7799e793ce4624ee7e5a:xQE0diMbLRepdf3YB+FIEXAMPLE= |
返回的结果集为:
<ListBucketResult xmlns="/doc/2012-09-03/"> <Name>doc</Name> <Prefix>doc/</Prefix> <Marker>doc/F</Marker> <MaxKeys>40</MaxKeys> <Delimiter>/</Delimiter> <IsTruncated>false</IsTruncated> <Contents> <Key>sample.pdf</Key> <LastModified>2012-09-01T01:56:20.000Z</LastModified> <ETag>"bf1d737a4d46a19f3bced6905cc8b902"</ETag> <Size>142863</Size> <Owner> <ID>canonical-user-id</ID> <DisplayName>display-name</DisplayName> </Owner> <StorageClass>STANDARD</StorageClass> </Contents> <CommonPrefixes> <Prefix>Feb/</Prefix> <Prefix>Ant/</Prefix> </CommonPrefixes> </ListBucketResult> |