Это контрольный список настроек, который я сделал для своих коллег.
- Настройте учетную запись на Amazon и получите веб-службы Amazon. (Он проверяет вашу кредитную карту, но не будет взимать с вас плату.)
- Перейти на веб-консоль AWS, перейти к S3 (хранение файлов). Создать новый ведро.
- В свойствах ковша добавляются письменные сообщения для аутентифицированных пользователей.
- В консоли AWS перейдите в раздел Службы> Развертывание & Управление> IAM (Управление идентификацией и доступом). Создайте в нем группу пользователей и один пользователь. НЕ ЗАКРЫВАЙТЕ ОКНО ПОПЕРА! В всплывающем окне нажмите «Загрузить учетные данные», чтобы сохранить ключи. Они необходимы для Django
settings_local.py
.
- Если вы забыли или потеряли ключи, перейдите к этому пользователю> Учетные записи безопасности> Доступ к учетным данным> Управление ключами доступа. Создайте ключ и сохраните учетные данные.
Еще в IAM, установить права доступа пользователя:
{
"Version": "2013-08-17",
"Statement": [
{
"Effect": "Allow",
"Action": "s3:*",
"Resource": ["*"]
}
]
}
Эта политика позволяет получить доступ ко всем ведрами к группе пользователей:
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"s3:ListAllMyBuckets"
],
"Effect": "Allow",
"Resource": "arn:aws:s3:::*"
},
{
"Action": [
"cloudfront:*"
],
"Effect": "Allow",
"Resource": "*"
}
]
}
Теперь ведро установлено, пользователи имеют доступ к нему. Вы можете попробовать установить и проверить доступ к ведру из Django.
Установите следующие пакеты:
django-storages==1.1.8
boto==2.9.7
Я добавил этот код settings_local.py
не выставлять его тем, кто считает, обязан:
USE_AMAZON = False # Set this to True when ready
STATIC_URL = 'your-bucket-s3-url'
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto.S3BotoStorage'
AWS_ACCESS_KEY_ID = 'XXXXXXXXXXXXXXXXX'
AWS_SECRET_ACCESS_KEY = 'YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY'
AWS_STORAGE_BUCKET_NAME = 'your-bucket-name'
Этот код идет в settings.py
:
from settings_local import *
if USE_AMAZON:
BASE_MEDIA_URL = 'static'
MEDIA_URL = '/media/'
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto.S3BotoStorage'
STATIC_ROOT = os.path.join(settings.BASE_PATH, 'static')
MEDIA_ROOT = os.path.join(settings.BASE_PATH, 'old_media')
STATICFILES_DIRS = (
('img', os.path.join(STATIC_ROOT, 'img'),
('js', os.path.join(STATIC_ROOT, 'js'),
)
INSTALLED_APPS += (
'django.contrib.staticfiles',
'storages',
)
Перейдите в раздел AWS S3 и получите URL-адрес своего ведра, вставьте его в файлы настроек, установите STATIC_URL
соответственно.
Вставить ключи из учетных данных в settings_local.py. Теперь Django должен иметь возможность загружать статические файлы в хранилище.
Выполнить эту команду:
$ uenv/bin/python your_project/manage.py collectstatic
Если загружать файлы, то все правильно. Если нет, проверьте сообщения об ошибках.
- Если сбой Django, то это проблемы с локальной настройкой (скорее всего, импортные ошибки - затем
pyflakes your_project/settings*.py
).
- Если удаленный сервер отвечает 403, то это политика доступа пользователей, проблема. Вам нужно обратиться к пользователю и настроить доступ, а также ведро и проверить, имеют ли пользователи, прошедшие проверку подлинности, разрешения.
Для проверки доступа к файлам из Интернета вставьте веб-адрес ведра S3 в STATIC_URL. Запустите Django и посмотрите, откуда взялись активы statc.
Если вы хотите CloudFront, это еще несколько шагов.
В AWS перейдите в Сервис> Хранение & Доставка контента> CloudFront. Создайте дистрибутив. Распространение подобно виртуальному веб-серверу с доступом к папке.
Выбрать:
- Скачать
- Origin доменного имени = имя домена ведра, созданные на первых этапах. состояние
- Распределение = Enabled
Перейти к новым настройкам распределения и скопировать имя домена. Вставьте его как STATIC_URL
в файл settings_local.py
. Новый STATIC_URL
от CloudFront не должен содержать имя ведра, потому что это доменное имя специально для этого ведра.
Этот URL-адрес является конфиденциальной информацией в том смысле, что доступ к ней стоит вам реальных денег и медленнее, чем локальный сервер-разработчик, поэтому, вероятно, он не должен работать в среде разработки.
Надеюсь, это поможет.
Это пятница. Пойдите пить пиво и попробуйте еще раз в понедельник с чистой головой. :-) –
Я не достаточно взрослый, чтобы пить :(Я искал указания о том, как это сделать в течение пары дней. Я почти готов отказаться. – Zacharoo
Иногда вам просто нужно отступить и повторите попытку после некоторого отдыха. Получите некоторое отвлечение (а не игру или компьютер) и начните с нуля завтра. –