我正在阅读此链接 http://docs.aws.amazon.com/AmazonS3/2006-03-01/API/RESTBucketGET.html
我想使用的例子就是这个
The following GET request specifies the delimiter parameter with value "/", and the prefix parameter with value photos/2006/.
回复是
GET /?prefix=photos/2006/&delimiter=/ HTTP/1.1
Host: example-bucket.s3.amazonaws.com
Date: Wed, 01 Mar 2009 12:00:00 GMT
Authorization: AWS AKIAIOSFODNN7EXAMPLE:xQE0diMbLRepdf3YB+FIEXAMPLE=
返回的resposne是
<ListBucketResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<Name>example-bucket</Name>
<Prefix>photos/2006/</Prefix>
<Marker></Marker>
<MaxKeys>1000</MaxKeys>
<Delimiter>/</Delimiter>
<IsTruncated>false</IsTruncated>
<CommonPrefixes>
<Prefix>photos/2006/feb/</Prefix>
</CommonPrefixes>
<CommonPrefixes>
<Prefix>photos/2006/jan/</Prefix>
</CommonPrefixes>
</ListBucketResult>
我明白了,但我不知道如何使用boto在django / pyhton中实现它。
还有什么方法可以获得JOSN而不是xml。
答案 0 :(得分:2)
在boto中,你可以像这样创建一个类似的请求:
import boto
s3 = boto.connect_s3()
bucket = s3.lookup('example-bucket')
for key in bucket.list(prefix='photos/2006/', delimiter='/'):
print k.name
boto所做的是解析S3的XML输出并将其转换为Python对象。因此,列出一个存储桶将返回一堆Key对象,每个对象代表一个S3中的对象。
boto或S3中没有任何东西可以自动将数据转换为JSON,但你可以编写一些Python来将Key对象中的信息转换为JSON。