Я работаю с группой не-разработчиков, которые загружают объекты в корзину стиля s3 через radosgw.Все загруженные объекты должны быть общедоступными, но они не могут делать это программно.Есть ли способ сделать разрешение по умолчанию для публичного чтения объекта, чтобы его не нужно было каждый раз устанавливать вручную?Должен быть способ сделать это с помощью boto, но я пока не нашел примеров.Есть несколько пользователей, использующих графический интерфейс AWS, но это не вариант для меня.: (
Я создаю корзину следующим образом:
#!/usr/bin/env python
import boto
import boto.s3.connection
access_key = "SAMPLE3N84XBEHSAMPLE"
secret_key = "SAMPLEc4F3kfvVqHjMAnsALY8BCQFwTkI3SAMPLE"
conn = boto.connect_s3(
aws_access_key_id = access_key,
aws_secret_access_key = secret_key,
host = '10.1.1.10',
is_secure=False,
calling_format = boto.s3.connection.OrdinaryCallingFormat(),
)
bucket = conn.create_bucket('public-bucket', policy='public-read')
Я устанавливаю политику для публичного чтения, которая, кажется, позволяет людям просматривать корзину как каталог, но объектыв ведре не наследуйте это разрешение.
>>> print bucket.get_acl()
<Policy: http://acs.amazonaws.com/groups/global/AllUsers = READ, S3 Newbie (owner) = FULL_CONTROL>
Чтобы уточнить, я знаю, что могу решить это для каждого объекта следующим образом:
key = bucket.new_key('thefile.tgz')
key.set_contents_from_filename('/home/s3newbie/thefile.tgz')
key.set_canned_acl('public-read')
Но мои конечные пользователине способны сделать это, поэтому мне нужен способ сделать это разрешением по умолчанию для загруженного файла.