2013-07-08 3 views
3

Я пытаюсь загрузить файл в определенное место с помощью boto и python. Я пользуюсь чем-то с этим:s3 подключение к 'папке' через boto

from boto.s3.connection import S3Connection 
from boto.s3.key import Key 


conn = S3Connection(AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY) 
bucket = conn.get_bucket('the_bucket_name') 
for key in bucket: 
    print key.name 

Вот трюк. Мне были предоставлены учетные данные в «папку» в ведре. за это - Amazon S3 boto - how to create a folder? Я понимаю, что на самом деле в s3 нет папок, скорее таких как «foo/bar/my_key.txt». когда я пытаюсь выполнить get_bucket() Я получаю

boto.exception.S3ResponseError: S3ResponseError: 403 Forbidden

потому что я не на самом деле имеют учетные данные для базового ковша, а подмножество ключей ковшей. my_bucket/the_area_I_have_permission/*

Кто-нибудь знает, как я могу передать конкретную «область» в ведро, к которому у меня есть доступ на этапе подключения? или альтернативный метод, который я могу использовать для доступа к my_bucket/the_area_I_have_permission/*?

ответ

1

Нашли проблему. RequestTimeTooSkewed Error using PHP S3 Class

Проблема заключалась в том, что дата моей виртуальной машины была выключена, а амазонка использует дату для подтверждения запроса. 1+ - @bdonlan.

2

ли эта помощь:

bucket = conn.get_bucket('the_bucket_name',validate=False) 

key = bucket.get_key("ur_key_name") 
if key is not None: 
    print key.get_contents_as_string() 

keys = bucket.list(prefix='the_area_I_have_permission') 
for key in keys: 
    print key.name 
+0

благодарит за ответ. Неа. получил TypeError: get_key() получил неожиданный аргумент ключевого слова 'префикс' для первого и boto.exception.S3ResponseError: S3ResponseError: 403 Запрещено для второго. – Brad

+0

Ох смешивает два разных вызова API. Это должен быть звонок. Что касается 403, можете ли вы получить доступ к ведру с помощью другой клиники (может быть, UI или S3Explorer плагин для Firefox) с этими секретными ключами? –

+0

dang. Я по-прежнему получаю 403 за первое. Я пытаюсь подключиться к «bucket-name», тогда я передаю путь к файлу, к которому я пытаюсь получить доступ, например: «/some/path/file.json». это верно? я пробовал с и без ведущей косой черты. – Brad