我如何在python中使用amazon s3来使用REST示例

时间:2013-06-20 07:37:52

标签: python django amazon-s3 boto

我正在阅读此链接 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。

1 个答案:

答案 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。