Использование Boto3 и Python Как сделать папку общедоступной

Я хочу сделать папку с именем img, которая уже существует в моей личной корзине, общедоступной. Я использую Бото3. Я просто хочу сделать эту папку общедоступной, а не что-то еще, используя скрипт.

Вот как я сейчас подключаюсь к ведру и как далеко я продвинулся....

ACCESS_KEY_ID = 'xxxxx'
ACCESS_KEY_SECRET = 'xxxx'
bucket_name = 'mybucket'
sourceDir = "../../docs/buildHTML/html/"
destDir = ''

r = boto3.setup_default_session(region_name='eu-west-1')
s3 = boto3.resource('s3', aws_access_key_id=ACCESS_KEY_ID, aws_secret_access_key=ACCESS_KEY_SECRET)
bucket = s3.Bucket(bucket_name)

Итак, у меня есть ведро, и это работает. Как теперь сделать общедоступной папку img, которая уже существует?


person Prometheus    schedule 04.09.2015    source источник
comment
Кроме того, попробуйте предоставить учетные данные IAM через роль IAM или переменные среды или файл конфигурации ~/.boto, а не жестко кодировать их в исходном коде.   -  person jarmod    schedule 04.09.2015


Ответы (1)


Вам нужно добавить политику в корзину, что-то вроде этого:

{
  "Version":"2012-10-17",
  "Statement":[
    {
      "Sid":"PublicReadImages",
      "Effect":"Allow",
      "Principal": "*",
      "Action":["s3:GetObject"],
      "Resource":["arn:aws:s3:::mybucket/abc/img/*"]
    }
  ]
}

Это можно сделать через консоль AWS или любой из SDK. В boto3 я думаю, вы делаете это следующим образом:

bucket = s3.Bucket(bucket_name)

response = bucket.put(
    Policy = '<policy string here>'
)
person jarmod    schedule 04.09.2015