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

Вместо локального обслуживания изображений из нашего проекта Django (не рекомендуется для производства) мы будем использовать этот сервис Amazon.

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

Удерживая нажатой клавишу «Control», щелкните правой кнопкой мыши любое изображение › Inspect Element.

Путь ко всем изображениям начинается так /media/...jpg. Это путь к медиа-папке локального проекта Django.

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

Настройка сегментов Amazon S3

Чтобы создать корзину Amazon S3, выполните следующие действия.

  1. Перейдите в AWS (Amazon Web Services) и войдите в систему, используя свои учетные данные.

2. Найдите S3 и выберите его.

3. Нажмите Create bucket.

4. Выберите имя корзины. Я выбрал exampleaws-bucket1 для своего ведра.

Оставьте настройки по умолчанию для других разделов.

5Прокрутите до конца и нажмите Create bucket .

6. Нажмите на название сегмента, чтобы просмотреть дополнительные сведения о сегменте.

7. Нажмите Permissions.

8. Найдите раздел CORS configuration, нажмите Edit и добавьте следующий код.

[
    {
        "AllowedHeaders": [
            "*"
        ],
        "AllowedMethods": [
            "PUT",
            "POST",
            "DELETE"
        ],
        "AllowedOrigins": [
            "*"
        ],
        "ExposeHeaders": []
    }
]

После добавления кода нажмите Save changes.

Amazon IAM (управление идентификацией и доступом)

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

  1. Перейдите на домашнюю страницу AWS, найдите IAM и выберите его.

2. Нажмите Users.

3. Нажмите Add users.

4. Выберите имя пользователя. Я выбрал owner в качестве имени.

В качестве типа доступа выберите Programmatic access.

Нажмите на Next: Permissions.

5. Нажмите Attach existing policies directly › Найдите S3 › Выберите AmazonS3FullAccess › Нажмите Next:Tags.

6. Пропустите раздел Tags и перейдите к последнему разделу.

7. Просмотрите информацию и нажмите Create user.

8. После создания пользователя будут сгенерированы два ключа. Мы включим их в файл settings.py проекта.

Подключение к корзинам Amazon S3

  1. Откройте settings.py и добавьте следующий код внизу файла.
#example/settings.py
...
              
#S3 BUCKETS
AWS_ACCESS_KEY_ID = 'AKIAWY4F45EVDNFWIXGL' 
AWS_SECRET_ACCESS_KEY = 'X9j1UG2z18T6moU17VlUJKwpQ875y3h5kLM+vh5V'
AWS_STORAGE_BUCKET_NAME = 'exampleaws-bucket1'

Сгенерированные ключи будут другими, поэтому вставьте свои собственные ключи в приведенный выше код.

2. Установите следующие пакеты, чтобы Amazon S3 Buckets работал с проектом Django.

pip install django-storages
pip install boto3

3. Откройтеsettings.py и добавьте storages в раздел INSTALLED_APPS.

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

#example/settings.py
...
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'listings',
    'users',
    'django_filters',
    'crispy_forms',
    'crispy_bootstrap5',
    'storages'
]
...
#S3 BUCKETS
AWS_ACCESS_KEY_ID = 'AKIAWY4F45EVDNFWIXGL' 
AWS_SECRET_ACCESS_KEY = 'X9j1UG2z18T6moU17VlUJKwpQ875y3h5kLM+vh5V'
AWS_STORAGE_BUCKET_NAME = 'exampleaws-bucket1'

AWS_S3_FILE_OVERWRITE = False
AWS_DEFAULT_ACL = None 
AWS_S3_REGION_NAME = 'us-east-2'
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage' 
STATICFILES_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'

Если вы хотите узнать больше о конфигурации корзин Amazon S3, обратитесь к приведенным ниже ресурсам.

Хранилища Django

Амазон S3

4. Перейдите на панель инструментов Amazon S3 Buckets и нажмите Upload.

Найдите папку media проекта Django на своем компьютере и загрузите всю папку или отдельные изображения.

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

Мы должны следовать этому процессу только один раз. После того, как мы настроим корзину Amazon S3, изображения для проекта будут загружены прямо в корзину.

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

5. Выполните команду python manage.py runserver и перейдите на страницу подробного списка любого из объявлений.

6. Удерживая нажатой клавишу Control/щелкните правой кнопкой мыши любое изображение › Inspect Element.

7. Новый путь к изображениям должен содержать URL-адрес с названием вашей корзины, за которым следует .s3.amazonaws.com.

Все будущие изображения будут загружены в корзину, а не в медиа-папку проекта Django.

Если вам нравится сериал, следите за мной в Twitter и на Youtube, чтобы узнать больше.

Youtube: Брайам Лоайза

Твиттер: balt1794