Как использовать AWS S3 Bucket для хранения статических и мультимедийных файлов в Django

Как использовать AWS S3 Bucket для хранения статических и мультимедийных файлов в Django Рисунок 1

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

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

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

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

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

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

Как использовать AWS S3 Bucket для хранения статических и мультимедийных файлов в Django Picture 2

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

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

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

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

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

Как использовать AWS S3 Bucket для хранения статических и мультимедийных файлов в Django Рисунок 3

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

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

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

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

Как использовать AWS S3 Bucket для хранения статических и мультимедийных файлов в Django Рисунок 4

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

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

  1. django-storages поможет вам определить серверную часть хранилища для файлов.
  2. boto3 — это комплект для разработки программного обеспечения AWS (SDK), который помогает проектам Python взаимодействовать с AWS.

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

pip установить django-storages boto3

После успешной установки этих пакетов откройте файл settings.py и добавьте boto3 в установленное приложение.

Наконец, настройте проект 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.

Как использовать AWS S3 Bucket для хранения статических и мультимедийных файлов в Django. Изображение 5

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

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

Здесь у вас есть такой образец:

class Post(models.Model): title = models.CharField(max_length=225, Blank=False, null=False) content = models.TextField(‘Тело сообщения’, Blank=False, null=False) author = models.CharField (max_length=225, пусто=ложь, ноль=ложь) date_published = models.DateTimeField(auto_now=True) image = models.ImageField(upload_to=’posts’) def __str__(self): return self.title

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

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

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

Как использовать AWS S3 Bucket для хранения статических и мультимедийных файлов в Django. Рисунок 6.

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

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

STATICFILES_STORAGE = ‘storages.backends.s3boto3.S3Boto3Storage’ AWS_LOCATION = ‘static’

Затем откройте интерфейс командной строки (CLI) и выполните команду:

python manage.py collectstatic –noinput

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

Готово! Надеюсь, статья будет вам полезна.

Похожие записи

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *