Узнайте, как настроить файловое хранилище S3, используя это пошаговое руководство.

Если вы создаете веб-приложение Django, важно эффективно обрабатывать статические ресурсы и загруженные пользователем медиафайлы.

В среде разработки Django управляет этими файлами. Однако в производственной среде вы захотите изучить дополнительные варианты. Ваша пользовательская база может значительно вырасти, и вы можете иметь дело с гораздо большими файлами, такими как аудио и видео.

Корзина Amazon Web Services (AWS) Simple Storage Service (S3) — это одна из альтернатив для размещения статических и мультимедийных файлов. Интегрируя S3 с Django, вы можете снять с сервера бремя управления файлами, снизить нагрузку и обеспечить более быструю и надежную доставку ресурсов.

Шаг 1. Создайте учетную запись AWS

Если у вас нет учетной записи AWS, перейдите к Сайт AWS, и создайте новую учетную запись.

Новые учетные записи AWS имеют бесплатный доступ к 5 ГБ стандартного хранилища S3 каждый месяц в течение года.

Шаг 2. Создайте корзину S3 для своего проекта

instagram viewer
  1. После создания учетной записи AWS войдите в систему и найдите S3 в строке поиска вверху, затем выберите первый вариант.
  2. После выбора первого варианта вы увидите новую страницу. Нажмите на Создать сегмент кнопка:
  3. Затем укажите имя для корзины S3. Вы можете оставить большую часть конфигурации по умолчанию.
  4. Прокрутите вниз до Заблокировать настройки общего доступа для этого сегмента раздел, снимите флажок Заблокировать весь публичный доступ настройки и подтвердите появившееся предупреждение.
  5. После этого нажмите кнопку Создать сегмент кнопка. Он перенаправит вас на страницу со списком созданных вами корзин S3.

Шаг 3. Создайте пользователя IAM на AWS

AWS предоставляет сервис под названием IAM (управление идентификацией и доступом). Это позволяет создать отдельную учетную запись для определенного человека или приложения, которым необходимо взаимодействовать с сервисами AWS.

Вы можете назначать различные уровни разрешений пользователям IAM, представляющим отдельных лиц или приложения, взаимодействующие с созданными вами сервисами AWS. С помощью пользователей IAM вы можете гарантировать, что каждый пользователь имеет доступ только к тем ресурсам, которые ему нужны, и ничего больше.

В целях безопасности вам следует создать пользователя IAM для вашего проекта Django, чтобы он мог взаимодействовать с вашей корзиной S3. Выполните следующие действия, чтобы создать пользователя IAM в AWS:

  1. В строке поиска введите Я и выберите первый вариант. Появится новая страница.
  2. В левой части страницы IAM выберите Пользователи, затем нажмите кнопку Добавить пользователей кнопка. Откроется еще одна страница для заполнения некоторой информации.
  3. Начните с ввода имени пользователя IAM и нажатия кнопки Следующий кнопка внизу: На следующей странице необходимо выбрать уровни разрешений для пользователя IAM. Следуй этим шагам:
    1. Сначала выберите Прикрепите политики напрямую вариант из Варианты разрешений раздел.
    2. Затем определите политику разрешений для вашего пользователя IAM. Это определит, что может и что не может делать пользователь IAM. Поскольку вы хотите, чтобы ваше приложение Django загружало и загружало файлы, вы должны предоставить ему полный доступ к корзине S3.
    3. в Политики разрешений раздел, вы должны искать S3Полный доступ и выберите вариант. После этого нажмите кнопку Следующий кнопка.
  4. Затем просмотрите политики для пользователя IAM и щелкните значок Создать пользователя кнопку, чтобы создать пользователя IAM.

Шаг 4. Создайте ключ доступа для вашего пользователя IAM

В AWS ключ доступа относится к учетным данным, которые можно использовать для аутентификации и безопасного программного доступа к ресурсам AWS. Ваш проект Django должен предоставить эти учетные данные для доступа к корзине S3.

Следующие шаги помогут вам сгенерировать ключ доступа для вашего проекта.

  1. После создания пользователя IAM вы получите предупреждающее сообщение, предлагающее просмотреть пользователя. Кроме того, вы можете просмотреть пользователя, щелкнув значок Имя пользователя.
  2. Далее выберите Учетные данные безопасности вкладку, прокрутите вниз, чтобы найти Ключи доступа раздел и выберите Создать ключ доступа.
  3. Вам нужно будет выбрать вариант использования для вашего доступа, чтобы AWS мог порекомендовать альтернативный вариант, где это уместно. Это не влияет на ваш ключ доступа. Не стесняйтесь выбирать такой вариант, как Сторонний сервис или Местный код и подтвердите всплывающее предупреждение. После этого нажмите кнопку Следующий кнопка.
  4. На следующей странице введите тег описания для вашего ключа доступа и нажмите кнопку Создать ключ доступа кнопка.
  5. После создания ключа доступа вы можете либо скопировать свои учетные данные, либо загрузить их в виде CSV-файла. В любом случае, убедитесь, что эти данные в безопасности.

Шаг 5: Настройте свой проект Django для корзины S3

Чтобы использовать корзину S3 с проектом Django, установите следующие пакеты:

  • Джанго-хранилища: этот пакет поможет вам определить серверную часть хранилища для ваших файлов.
  • бото3: Этот пакет является AWS Комплект для разработки программного обеспечения (SDK) чтобы помочь вашему проекту Python взаимодействовать с AWS.

Вы можете установить эти пакеты в свой Виртуальная среда Python с менеджером пакетов Python Pip, введя эту команду в своем терминале:

pip install django-storages boto3

После того, как вы успешно установили эти пакеты, откройте settings.py файл и добавить бото3 к установленным приложениям.

Последнее, что нужно сделать, — настроить проект Django для использования корзины AWS S3. Вот общая конфигурация для использования:

AWS_ACCESS_KEY_ID = 'AWS_ACCESS_KEY_ID '
AWS_SECRET_ACCESS_KEY = 'AWS_SECRET_ACCESS_KEY'
AWS_STORAGE_BUCKET_NAME = 'AWS_STORAGE_BUCKET_NAME'
AWS_S3_SIGNATURE_NAME = 's3v4',
AWS_S3_REGION_NAME = 'AWS_S3_REGION_NAME'
AWS_S3_FILE_OVERWRITE = False
AWS_DEFAULT_ACL = None
AWS_S3_VERITY = True
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'

Вставьте приведенную выше конфигурацию в свой settings.py файл и заменить значения соответственно. Замените свой AWS_ACCESS_KEY_ID и AWS_SECRET_ACCESS_KEY с ключом доступа и секретным ключом доступа, которые вы скопировали или загрузили ранее. Вы также должны изменить AWS_STORAGE_BUCKET_NAME и AWS_S3_REGION_NAME к именам вашей корзины S3 и региона.

Вы можете получить название региона, перейдя в корзину S3 и скопировав последние значения из регион AWS столбец.

Шаг 6. Проверьте свою конфигурацию AWS

Выполнив вышеуказанные шаги, вы должны быть готовы протестировать свое приложение, загрузив файлы. Следующие примеры кода будут загружать файлы непосредственно из панели администратора, но вы можете загружать свои файлы из другого места.

Для контекста у вас может быть модель, которая выглядит так:

classPost(models.Model):
title = models.CharField(max_length=225, blank=False, null=False)
content = models.TextField('Post Body', blank=False, null=False)
author = models.CharField(max_length=225, blank=False, null=False)
date_published = models.DateTimeField(auto_now=True)
image = models.ImageField(upload_to='posts')

def__str__(self):
return self.title

Убедитесь, что вы выполняете необходимые операции, такие как миграция, добавление его в панель администратора, создание представления и другие вещи, необходимые для вашего проекта. Убедитесь, что вы практикуете Принцип MVT Джанго.

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

Перейдите на свой основной сайт и убедитесь, что изображение там. Если это так, щелкните правой кнопкой мыши изображение и выберите Открыть изображение в новой вкладке вариант. На новой вкладке, содержащей изображение, вы заметите, что адресная строка ссылается на корзину S3, которую вы создали ранее:

Еще один способ убедиться, что ваша конфигурация работает, — перейти к своей корзине на консоли AWS. Там вы найдете свое изображение:

Шаг 7. Соберите статические файлы в корзину S3

До сих пор вы могли загружать медиафайлы в корзину S3; теперь вам нужно загрузить свои статические файлы.

Для этого добавьте эти конфигурации в свой settings.py файл:

STATICFILES_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
AWS_LOCATION = 'static'

После этого откройте свой Интерфейс командной строки (CLI) и запустите эту команду:

python manage.py collectstatic --noinput

Чтобы убедиться, что все работает, откройте корзину S3 в консоли AWS. Вы увидите папку с именем статический.

Используйте корзину AWS S3, чтобы получить гораздо больше

Возможности корзин AWS S3 огромны! Вы должны ознакомиться с ним и научиться использовать S3 для других целей, например, для размещения статического веб-приложения.

Знание того, как правильно использовать корзины S3, сэкономит вам много времени и поможет создать лучший продукт или решение. Но вы также должны знать, что S3 может не подходить для каждого случая, поэтому перед его использованием учитывайте требования вашего проекта.