2015-12-04 4 views
0

У меня есть url (в виде https://s3.amazonaws.com/...), Указывающий на файл в S3, и я хочу, чтобы он был загружен пользователем, поэтому я установил разрешение с панели управления S3 в консоли AWS но я узнал, что он сбрасывается всякий раз, когда файл переписывается (имя файла остается неизменным).Как автоматизировать разрешение доступа к URL-адресу S3 http:

Есть ли способ автоматически установить разрешение сразу после создания файла? Я посмотрел на библиотеку boto, но не мог понять. Заранее спасибо!

+0

У вас есть контроль над тем, как файл записывается на S3? – garnaat

+0

Да, я делаю @ garnaat. – kee

+0

Пожалуйста, продемонстрируйте код, который вы используете, чтобы его загрузить. – tedder42

ответ

1

Это очень распространенная операция.

With the Boto library, you can set an ACL. Если у вас есть ключ:

key.set_acl('public-read') 

Если у вас нет ключа, вам необходимо иметь ведро:

bucket.set_acl('public-read', 'path/to/key') 

Вы можете использовать не консервированные списки ACL также. Документация связывается с этим.

В boto3 вы также можете установить ACL.

Bucket syntax:

s3client.put_bucket_acl(ACL='public-read', Bucket='bucketname') 

Key syntax:

s3client.put_object_acl(ACL='public-read', Bucket='bucketname', Key='path/to/key') 

Non-законсервированные списки ACL немного легче в boto3.