Я использую библиотеку Python boto
для подключения к Amazon S3 и создания блоков и ключей для статического веб-сайта.Мои ключи и значения генерируются динамически, поэтому я делаю это программно, а не через веб-интерфейс (он работает с помощью веб-интерфейса).Мой код в настоящее время выглядит так:
import 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.create_bucket(BUCKET_NAME)
bucket.configure_website('index.html', 'error.html')
bucket.set_acl('public-read')
for template in ['index.html', 'contact-us.html', 'cart.html', 'checkout.html']:
k = Key(bucket)
k.key = key
k.set_acl('public-read')
k.set_metadata('Content-Type', 'text/html')
k.set_contents_from_string(get_page_contents(template))
Я получаю различные ошибки и проблемы с этим кодом.Когда ключи уже существуют, и я использовал этот код для их обновления, я устанавливал ACL каждого ключа на public-read
, но при просмотре файла в браузере все равно получал 403 запрещенных ошибки.
Я попытался удалить все ключи, чтобы воссоздать их с нуля, и теперь я получаю исключение NoSuchKey
.Очевидно, ключа нет, потому что я пытаюсь его создать.
Я поступаю неправильно?Есть ли другой способ сделать это для создания ключей, в отличие от их обновления?И испытываю ли я какое-то состояние гонки, когда разрешения не меняются?