Файловый хостинг Amazon S3 + Django + Heroku

Django — библиотека для создания сайтов на языке Python.

Heroku — платформа, которая позволяет размещать сайты, сделанные на Django.

Heroku не предоставляет постоянного хранилища для файлов, которые пользователь загружает через сайт, поэтому необходимо воспользоваться каким-то сторонним сервисом, например, Amazon S3.

Допустим, что мы уже зарегистрировались на Heroku и Amazon.

Настройка Amazon

Перейдем в My Security Credentials (учетные данные безопасности).

My Security Credentials

Создадим новый ключ доступа с помощью кнопки Create New Access Key.

Create New Access Key

Появится окно с идентификатором ключа и секретным ключом. Их надо сохранить, чтобы потом настроить Heroku. Сохранить можно в файл с помощью кнопки Download Key File.

Access Key

Теперь нужно перейти в Amazon S3 и создать хранилище (кнопка Create Bucket).

Amazon S3

Зададим DNS-совместимое имя хранилища и регион такой же как на Heroku, чтобы минимизировать задержки при передаче данных. Остальные настройки можно оставить без изменения. Имя понадобится для настройки Heroku.

Create Bucket

Работать с файлами и папками хранилища можно прямо в браузере. Можно создавать папки, загружать файлы, удалять то и другое, переименовывать, перемещать, копировать и прочее.

При загрузке файла создается ссылка на него, по которой он будет доступен в интернете.

Загрузим один файл, чтобы узнать по какому адресу располагается наше хранилище. Адрес зависит от выбранного региона. Часть ссылки, которая подчеркнута красным, понадобится для настройки Heroku.

example.txt

Настройка Heroku

Перейдем в настройки приложения и назначим переменные окружения, которые здесь называются Config Variables.

Heroku Config Variables

Требуется назначить 4 переменные окружения на основе настроек Amazon:

  • AWS_ACCESS_KEY_ID — идентификатор ключа.
  • AWS_SECRET_ACCESS_KEY — секретный ключ.
  • AWS_STORAGE_BUCKET_NAME — имя хранилища.
  • AWS_URL — адрес, по которому располагается хранилище.

Настройка проекта Django

Для работы с Amazon S3 нужно установить пакеты django-storages и boto3.

  • django-storages — это коллекция хранилищ для Django.
  • boto3 — библиотека для работы с сервисами Amazon.

Если используется файл requirements.txt для удовлетворения зависимостей, то в него нужно прописать пакеты нужных версий, например:

django-storages==1.6.5
boto3==1.4.7

Установить пакеты можно следующей командой:

pip install -r requirements.txt

В файле settings.py нужно прописать следующий код.

INSTALLED_APPS = (
    ...
    'storages',
    ...
)

AWS_ACCESS_KEY_ID = os.environ.get('AWS_ACCESS_KEY_ID')
AWS_SECRET_ACCESS_KEY = os.environ.get('AWS_SECRET_ACCESS_KEY')
AWS_STORAGE_BUCKET_NAME = os.environ.get('AWS_STORAGE_BUCKET_NAME')
AWS_URL = os.environ.get('AWS_URL')

DEFAULT_FILE_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'

AWS_MEDIA_URL = "{}/{}/".format(AWS_URL, AWS_STORAGE_BUCKET_NAME)

MEDIA_URL = AWS_MEDIA_URL

Продолжение будет…

Реклама

Автор

Дмитрий Бравиков

Инженер. Электронщик. Программист.

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход /  Изменить )

Google photo

Для комментария используется ваша учётная запись Google. Выход /  Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход /  Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход /  Изменить )

Connecting to %s