Как использовать AWS S3 Bucket для хранения статических и мультимедийных файлов в Django
Бакет Simple Storage Service (S3) Amazon Web Services (AWS) — это альтернатива для хранения статических и мультимедийных файлов. Интегрируя S3 с Django, вы можете снять нагрузку с управления файлами на своем сервере, разгрузив и обеспечив более быструю и надежную доставку контента.
Шаг 1. Создайте учетную запись AWS
Если у вас нет учетной записи, перейдите на сайт AWS, чтобы создать новую учетную запись.
Новые учетные записи AWS получают бесплатный доступ к 5 ГБ стандартного хранилища S3 в месяц в течение одного года.
Шаг 2. Создайте корзину S3 для проекта
- После создания учетной записи AWS войдите в систему и найдите S3 в строке поиска вверху, затем щелкните первый вариант.
- Затем вы увидите новую страницу, нажмите кнопку «Создать корзину».
- Затем назовите свою корзину S3. Вы можете оставить конфигурацию по умолчанию.
- Прокрутите вниз до Параметры блокировки общего доступа для этого сегмента, снимите флажок Блокировать весь публичный доступ и подтвердите появившееся предупреждение.
- После этого нажмите кнопку «Создать корзину» . Вы попадете на страницу со списком созданных корзин S3.
Шаг 3. Создайте пользователя IAM на AWS
AWS предоставляет сервис под названием IAM (управление идентификацией и доступом). Это позволяет создать отдельную учетную запись для конкретных людей или приложений, которым необходимо взаимодействовать с сервисами AWS.
Вы можете назначать различные уровни разрешений пользователям IAM, которые представляют отдельных лиц или приложения, взаимодействующие с созданными сервисами AWS. С помощью пользователей IAM вы можете гарантировать, что каждый пользователь имеет доступ только к тем ресурсам, которые ему нужны, и не более того.
В целях безопасности вам следует создать пользователя IAM для вашего проекта Django, чтобы он мог взаимодействовать с корзиной S3. Выполните следующие действия, чтобы создать пользователя IAM в AWS:
- В строке поиска введите IAM и выберите первый вариант. Появится новая страница:
- В левой части страницы IAM выберите «Пользователи», затем продолжайте нажимать кнопку «Добавить пользователей» . Откроется другая страница для заполнения информации.
- Начните с ввода имени пользователя IAM и нажмите кнопку «Далее» внизу.
- На следующей странице вы должны выбрать уровни разрешений для пользователя IAM. Следуй этим шагам:
- Сначала выберите Прикрепить политики непосредственно в параметрах разрешений.
- Затем определите политику авторизации для пользователя IAM. Это действие определяет, что может и что не может делать пользователь IAM. Поскольку вы хотите, чтобы приложение Django загружало и загружало файлы, вы должны предоставить ему полный доступ к корзине S3.
- В разделе Политики разрешений вы должны найти и выбрать S3FullAccess. Затем нажмите «Далее».
- Затем просмотрите политики для пользователя IAM и нажмите кнопку «Создать пользователя», чтобы создать пользователя IAM.
Шаг 4: Создайте ключ доступа для IAM. пользователь
В AWS — ключ доступа только для учетных данных, который можно использовать для программной аутентификации и доступа к ресурсам AWS. Ваш проект Django должен предоставить эти учетные данные для доступа к корзине S3.
Следующие шаги помогут вам создать ключ доступа к проекту:
- После создания пользователя IAM вам будет предложено просмотреть пользователя. Вы можете просмотреть пользователя, нажав Имя пользователя.
- Затем выберите вкладку «Учетные данные безопасности» > прокрутите вниз, чтобы найти «Ключи доступа», и выберите «Создать ключ доступа».
- Вам нужно выбрать вариант использования для доступа, чтобы AWS мог предложить подходящие альтернативы. Это не влияет на ключ доступа. Не стесняйтесь щелкнуть параметр, например «Сторонняя служба» или «Местный код», и подтвердить предупреждение. Затем нажмите кнопку Далее .
- На следующей странице введите тег описания для ключа доступа и нажмите кнопку Создать ключ доступа .
- После создания ключа доступа вы можете скопировать учетные данные или загрузить их в виде CSV-файла. В любом случае убедитесь, что эти данные в безопасности.
Шаг 5. Настройте проект Django для корзины S3.
Чтобы использовать корзины S3 с проектами Django, установите следующие пакеты:
- django-storages поможет вам определить серверную часть хранилища для файлов.
- 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.
Шаг 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, которую вы создали с нуля:
Шаг 7. Соберите статические файлы для корзины S3.
Добавьте в файл settings.py следующие конфигурации:
STATICFILES_STORAGE = ‘storages.backends.s3boto3.S3Boto3Storage’ AWS_LOCATION = ‘static’
Затем откройте интерфейс командной строки (CLI) и выполните команду:
python manage.py collectstatic –noinput
Чтобы убедиться, что все работает правильно, откройте корзину S3 в консоли AWS. Вы должны увидеть папку с именем static .
Готово! Надеюсь, статья будет вам полезна.