AWS s3(Simple Storage Service) - NurOrNuLL/ESDP-AP-5-6-TEAM-2 GitHub Wiki

AWS s3(Simple Storage Service)

Описание

Amazon Simple Storage Service — онлайн веб-служба, предлагаемая Amazon Web Services, предоставляет возможность хранения и получения любого объёма данных в любое время из любой точки сети, так называемый файловый хостинг.

Установка

  • Перед установкой надо зарегистрироваться как root на https://aws.amazon.com/ru/

  • Для интеграции в pycharm надо установить пакеты:

  1. boto3
  2. django-storages

Создание пользователя

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

Войдите на веб-страницу AWS, найдите IAM в списке служб, он указан в разделе «Security, Identity & Compliance (Безопасность, идентификация и соответствие)»:

image

Перейдите на вкладку «Пользователи» и нажмите кнопку «Добавить пользователя»:

image

Добавьте имя пользователя и выберите опцию программного доступа:

image

Нажмите Далее, чтобы перейти к разрешениям. На этом этапе нам нужно создать новую группу с правами доступа S3 и добавить в нее нового пользователя. Следуйте указаниям мастера и нажмите кнопку «Создать группу»:

image

Определите имя для группы и найдите встроенную политику AmazonS3FullAccess:

image

Нажмите в группе «Создать», чтобы завершить процесс создания группы, на следующем экране, недавно созданная группа будет отображаться выбранной, сохраните ее и, наконец, нажмите кнопку «Далее: теги»:

image

Если хотите можете добавить теги(любые) или пропустить:

image

Нажмите кнопку далее:

image

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

image

  • Запишите всю информацию: пользователь, идентификатор ключа доступа и секретный ключ доступа.
  • Сохраните их на потом.
  • Нажмите на кнопку Закрыть, и давайте продолжим.
  • Теперь пришло время создать нашу первую «корзину».

Создание корзины(серевер s3):

Корзина (bucket) — это то, что мы называем контейнером хранения в S3. Мы можем работать с несколькими сегментами в рамках одного проекта Django. Но, по большей части, вам понадобится только одна корзина на сайт.

Нажмите в меню «Сервисы» и найдите S3. Он расположен под хранилищем. Если вы видите экран ниже, вы находитесь в правильном месте.

image

Нажмите на + Создать корзину, чтобы начать поток. Установите DNS-совместимое имя для вашей корзины. Оно будет использоваться для идентификации ваших активов. В моем случае я выбираю test.aspar. Таким образом, путь к моим ресурсам будет примерно таким: https://test.aspar.s3.amazonaws.com/static/.

image

image

  • Выберите близкий вам регион

  • Нажмите создать корзину

Интеграция в pycharm

Самый простой способ - установить библиотеки с помощью pip:

pip install boto3
pip install django-storages

Теперь добавьте storages к вашему INSTALLED_APPS внутри модуля settings.py:

INSTALLED_APPS = [
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',

    'storages',
]

Это простейший вариант использования. Он работает "из коробки" с минимальной конфигурацией. Вся конфигурация ниже идет внутри модуля settings.py:

STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'static/'),
]
AWS_ACCESS_KEY_ID = 'AKIA2M2OPPDRB7G7CJ7A'
AWS_SECRET_ACCESS_KEY = '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'
AWS_STORAGE_BUCKET_NAME = 'test.aspar'
AWS_S3_CUSTOM_DOMAIN = '%s.s3.amazonaws.com' % AWS_STORAGE_BUCKET_NAME

AWS_S3_OBJECT_PARAMETERS = {
    'CacheControl': 'max-age=86400',
}
AWS_DEFAULT_ACL = 'public-read'
AWS_LOCATION = 'static'
STATICFILES_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
STATIC_URL = "https://%s/%s/" % (AWS_S3_CUSTOM_DOMAIN, AWS_LOCATION)

DEFAULT_FILE_STORAGE = 'core.storage_backends.MediaStorage'

Даже если мы используем нашу локальную машину, нам нужно будет выполнить команду collectstatic, так как наш код будет ссылаться на удаленное местоположение:

python manage.py collectstatic

image

Если мы проверим на веб-сайте AWS, мы увидим наши статические активы там:

image