Как развернуть django на AWS EC2, используя медиа и статические файлы из S3 - PullRequest
0 голосов
/ 05 апреля 2019

Я хочу развернуть проект Django на AWS EC2.Для моих медиа-файлов мне нужно ведро на S3.Мой проект хорошо работает на локальном хосте, и я могу получить доступ к мультимедиа из S3, но после развертывания я не могу получить AWS_ACCESS_KEY_ID и AWS_SECRET_ACCESS_KEY, поэтому я получаю ошибку сервера 500.

Это основная часть настроек.py

DEBUG = False
ALLOWED_HOSTS = ['XXXXXXXX']
INSTALLED_APPS = [
    'apps.comic',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'storages',
]
STATIC_URL = '/static/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'apps/comic/static/media')
MEDIA_URL = '/media/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static/')

AWS_ACCESS_KEY_ID = os.environ.get('AWS_ACCESS_KEY_ID')
AWS_SECRET_ACCESS_KEY = os.environ.get('AWS_SECRET_ACCESS_KEY')
AWS_STORAGE_BUCKET_NAME = os.environ.get('AWS_STORAGE_BUCKET_NAME')

AWS_S3_FILE_OVERWRITE = False
AWS_DEFAULT_ACL = None

DEFAULT_FILE_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'

Я пытался создать ~ / .aws / учетные данные:

[default]
aws_access_key_id = X...X
aws_secret_access_key = X...X

Но это тот же результат Ошибка сервера 500. Я могу получить только страницу входа / регистрации, потому что я нена нем нет медиа-файлов.

Что я должен сделать для получения медиа-файлов после производства?Нужно ли вносить изменения в учетные данные или файл settings.py?

1 Ответ

0 голосов
/ 05 апреля 2019

Ваша проблема из-за этих трех строк:

AWS_ACCESS_KEY_ID = os.environ.get('AWS_ACCESS_KEY_ID')
AWS_SECRET_ACCESS_KEY = os.environ.get('AWS_SECRET_ACCESS_KEY')
AWS_STORAGE_BUCKET_NAME = os.environ.get('AWS_STORAGE_BUCKET_NAME')

, в частности, эта часть os.environ.get в основном инструктирует ваш скрипт на python искать ваши AWS_ACCESS_KEY_ID и AWS_SECRET_ACCESS_KEY в переменных операционной системы.

Чтобы решить эту проблему, у вас есть два варианта:

  • Добавить переменные AWS в переменные окружения EC2, запустив это на своем терминале export AWS_KEY=Your_Key

ИЛИ

  • Напишите свой идентификатор и ключ непосредственно в settings.py файле

     AWS_ACCESS_KEY_ID = "key_string_here"
     AWS_SECRET_ACCESS_KEY = "secret_string_here"
     AWS_STORAGE_BUCKET_NAME = "bucket_name_here"
    

Я бы предпочел второй вариант, так как он более переносимый.

...