#python #amazon-web-services #amazon-s3 #boto
#python #amazon-веб-сервисы #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 amp;amp; key.split("/")[5] == desiredColor
TheDesiredKeys.append(k)
Затем перейдите к извлечению всех объектов в этих местах? У меня сложилось впечатление, что есть более простой способ?
Также я пытался:
bucket.list()
Но во всех примерах это было похоже:
b - bucket.list()
for key in b:
doSomething
Однако я надеялся просто получить все ключи в объекте. Однако, когда я смотрю на корзину.list () в отладчике я не вижу всех ключей?
Ответ №1:
Ключи AWS S3 индексируются в лексическом порядке
Довольно легко найти ключ с помощью prefix.
Но для суффикса или чего-то еще, что на самом деле не является префиксом, вам нужно перебирать все ключи.
Как это сделать для prefix
спецификация boto для bucket.get_all_keys
параметра предложений 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
переменную среды, но вы также можете указать учетные данные непосредственно в этом вызове.