通过python Boto和AWS S3访问密钥和对象

时间:2014-06-26 23:00:32

标签: python amazon-web-services amazon-s3 boto

我看了:https://ceph.com/docs/master/radosgw/s3/python/

但是,我正在寻找一种方法来访问AWS S3,而不仅仅是部分密钥。

所以我可能有这样的钥匙:

  

MyPlace酒店/ yourplace / ourplace /大小/颜色

我可能有尺寸和颜色,我怎么才能得到与之匹配的钥匙?

我是否需要做以下事情:

TheDesiredKeys
For k in all keys
     if key.split("/")[4] == desiredSize && key.split("/")[5] == desiredColor
         TheDesiredKeys.append(k)

然后去取那些位置的所有对象?我觉得有一种更简单的方法吗?

我也试过了:

 bucket.list()

但是在所有的例子中它都像:

 b - bucket.list()
 for key in b:
      doSomething

但是我希望只是获取一个对象中的所有键。但是,当我在调试器中查看bucket.list()时,我没有看到所有的键?

1 个答案:

答案 0 :(得分:0)

AWS S3密钥以词法顺序

编制索引

使用前缀很容易找到密钥。

但是对于后缀或任何不是真正的前缀,你必须遍历所有键。

如何为前缀

执行此操作 bucket.get_all_keys的{​​{3}}提供参数prefix

>>> import boto
>>> con = boto.connect_s3()
>>> bucket_name="bucketname"
>>> bucket=con.get_bucket(bucket_name)
>>> keys = bucket.get_all_keys(prefix="region/cz/")
>>> for key in keys:
...     print key.name
...
region/cz/Prague.gif
region/cz/Ostrava.gif

注意:boto.connect_s3()假设您已配置系统,我为此使用BOTO_CONFIG环境变量,但您也可以直接在此调用中指定凭据。