Вставка элементов в вложенные корзины на S3 с помощью boto - PullRequest
4 голосов
/ 17 августа 2011

Скажите, что на S3

установлено следующее ведро

MyBucket / MySubBucket

И я планирую предоставлять статические медиа-файлы для веб-сайта из MySubBucket (например, загруженные пользователями изображения и т. Д.). То, как конфигурации S3 кажутся настроенными в настоящее время, невозможно сделать общедоступной корзину MyBucket верхнего уровня, поэтому для имитации этого вам нужно сделать каждый отдельный элемент в этом контейнере общедоступным после его вставки.

Вы можете сделать вложенный сегмент вроде MySubBucket общедоступным, но проблема, с которой я сейчас сталкиваюсь, заключается в попытке выяснить, как вызвать boto, чтобы вставить тестовое изображение в этот сегмент? Кто-нибудь может привести пример?

Спасибо

1 Ответ

2 голосов
/ 06 декабря 2012

На самом деле вам просто нужно поставить имя вложенного сегмента и / перед именем файла. Следующий фрагмент кода поместит файл с именем 'test.jpg' в MySubBucket. k.make_public() делает этот файл общедоступным, но не обязательно саму корзину.

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

connection = S3Connection(AWSKEY,AWS_SECRET_KEY)

bucket = connection.get_bucket('MyBucket')
file = 'test.jpg'
k = Key(bucket)
k.key = 'MySubBucket/' + file
k.set_contents_from_filename(file)
k.make_public()
...