`

Amazon Simple Storage Service(Amazon S3) 之二,通过4个参数

阅读更多
如果通过web访问S3服务来获取数据(Object),则分页、搜索等功能是比不可少的。而S3提供的4个参数,可以让我们方便快捷的将数据取出来,这4个参数是基于key操作的。key的概念参见文章一。

1、prefix。比如http://bucket.s3.amazonaws.com/?prefix=123,则将key中以123开头的列出来。

2、delimiter。比如http://bucket.s3.amazonaws.com/?delimiter=/,此时,S3可能会返回CommonPrefixes,将key中采用“/”分隔的列出来。

    <Contents>
    <Key>123/zzz.txt</Key>
    <LastModified>2007-12-11T07:41:51.000Z</LastModified>
    <ETag>"d725dfc2167445d1db23067de33ebd28"</ETag>
    <Size>203</Size>
    <StorageClass>STANDARD</StorageClass>
    </Contents>
    <Contents>
    <Key>abc/ooo/yxx.txt</Key>
    <LastModified>2007-12-12T05:34:35.000Z</LastModified>
    <ETag>"4fdf8a4dd42bd4d24855eebd5c9b9434"</ETag>
    <Size>41</Size>
    <StorageClass>STANDARD</StorageClass>
    </Contents>

用了“delimiter=/”返回,告诉你 有prefix为123/和abc/可用。

    <CommonPrefixes>
    <Prefix>123/</Prefix>
    </CommonPrefixes>
    <CommonPrefixes>
    <Prefix>abc/</Prefix>
    </CommonPrefixes>

这时输入http://bucket.s3.amazonaws.com/?delimiter=/&prefix=123/则将prefix中有123/的全部列出来。

如果key有这样的形式:ms_vb_5_src/sss.frm,ms_vb_6_src/ddd.frm,你可以把delimiter设为“_”来取数据。通过不同的delimiter和prefix可以非常灵活的获取数据。

如果数据量很大,则可以用第三个和第四个参数

3、MaxKeys。这个告诉S3一次性返回多少数据,默认返回1000个。URL输入http://bucket.s3.amazonaws.com/?delimiter=/&prefix=123/&max-keys=10,则返回:

    <Name>bucket</Name>
    <Prefix>123/</Prefix>
    <Marker />
    <NextMarker>123/10.txt</NextMarker>
    <MaxKeys>10</MaxKeys>
    <Delimiter>/</Delimiter>
    <IsTruncated>true</IsTruncated>
    <Contents>
    <Key>123/1.txt</Key>
    <LastModified>2007-12-12T06:02:33.000Z</LastModified>
    <ETag>"9dd4e461268c8034f5c8564e155c67a6"</ETag>
    <Size>1</Size>
    <StorageClass>STANDARD</StorageClass>
    </Contents>

里面IsTruncated为true,表示按照delimiter和prefix和max-keys取出的数据不止10个;余下的数据怎么取?就用到了NextMarker元素中数据。

4、Marker。 URL输入http://bucket.s3.amazonaws.com/?delimiter=/&prefix=123/&max -keys=10&marker=123/10.txt,marker的值就是NextMarker元素中数据。这样S3就返回了下10条数据。

    <Name>bucket</Name>
    <Prefix>123/</Prefix>
    <Marker>123/10.txt</Marker>
    <NextMarker>123/19.txt</NextMarker>
    <MaxKeys>10</MaxKeys>
    <Delimiter>/</Delimiter>
    <IsTruncated>true</IsTruncated>
    <Contents>
    <Key>123/1.txt</Key>
    <LastModified>2007-12-12T06:02:33.000Z</LastModified>
    <ETag>"9dd4e461268c8034f5c8564e155c67a6"</ETag>
    <Size>1</Size>
    <StorageClass>STANDARD</StorageClass>
    </Contents>

如果IsTruncated仍为true,则表示还有数据,我们把marker改为marker=123/19.txt便可以继续取下10条数据;如果IsTruncated为false,则表示按照条件已经将数据全部取出来了。

S3文档中,提供更为详细的解释。点击查看:http://docs.amazonwebservices.com/AmazonS3/2006-03-01/
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics