2015-04-28 5 views
2

Я работаю в течение двух дней, и ни один из ответов не решает проблему.403 Запрещено на хранилищах Django css/js с Amazon S3 на экземпляре EC2

Установка

AWS_S3_ACCESS_KEY_ID = 'xxxxxxx' 
AWS_S3_SECRET_ACCESS_KEY = 'xxxxxxxxx' 
AWS_STORAGE_BUCKET_NAME = 'my-bucket.mycompany.com' 
COMPRESS_URL = 'http://{}.s3.amazon.com/'.format(AWS_STORAGE_BUCKET_NAME) 
STATIC_URL = COMPRESS_URL 
AWS_S3_FILE_OVERWRITE = True 
AWS_S3_SECURE_URLS = True 
AWS_QUERYSTRING_AUTH = False 
AWS_S3_CUSTOM_DOMAIN = '{}.s3-external-3.amazonaws.com'.format(AWS_STORAGE_BUCKET_NAME) 

прибегая к помощи

Incorrect date/time on server: Это ЭК-2 экземпляра, но даже если я установил yum install ntp ntpdate ntp-doc - НЕТ УДАЧИ

AWS_QUERY_STRING_AUTH: Несколько источников онлайн, чтобы сделать это, но не разрешил мою проблему

AWS_QUERY_STRING_AUTH: Еще раз

AWS_S3_CUSTOM_DOMAIN Не повезло здесь ни

Эксперимент

# ON THE EC2 BOX 
./manage.py shell 
from boto.s3.connection import S3Connection 
from django.conf import settings 
conn = S3Connection(settings.AWS_S3_ACCESS_KEY_ID, settings.AWS_S3_SECRET_ACCESS_KEY) 
b = conn.get_bucket('my-bucket.mycompany.com') 
key = b.get_key('500.html') 
print key.get_contents_as_string() # WORKS FINE 

Однако, когда я бегу ./manage.py compress я получаю

CommandError: An error occured during renderinghome_4770.html: 
'https://mybucket.mycompany.com.s3-external-3.amazonaws.com/css/smoothness/jquery-ui-1.10.1.custom.css' 
isn't accessible via COMPRESS_URL ('http://mybucket.mycompany.com.s3.amazon.com/') and can't be compressed 

Прежде чем спросить, да файл доступный на этом ковше. Я также попробовал традиционный способ django-хранилищ с автономным сжатием, используя <project-root>/static как STATIC_ROOT, а затем загрузив содержимое ./manage.py collectstatic И ./manage.py compress:, т. Е. Результирующие файлы css/js и manifest_1.json в ведро, но в браузере я до сих пор получаю 403 Forbidden на css/js файлы

Любые идеи о том, что может происходить ???

ответ

0

Вы создали политику CORS на своем ковше? Кроме того, возможно, потребуется добавить разрешение, чтобы позволить «Все» в «Список» объекты в ведре (хотя попробовать политику CORS первый)

Edit: Вот документы: http://docs.aws.amazon.com/AmazonS3/latest/dev/cors.html

+0

Я пытался как и ни один не кажется, Работа. Ошибка остается прежней. Моя политика CORS - это GET и PUT –

0

ли вы проверяете метаданные файла css (==> Файл ==> Свойства)?

убедитесь, что они установлены в качестве CSS-файлов, а не как: «двоичный/октет-поток»

Как AWS делает то.

0

У меня была аналогичная проблема, которая, по-видимому, вызвана смешением storage.CachedStaticFilesStorage с storage.backends.s3boto.S3BotoStorage.

У меня не было времени, чтобы диагностировать проблему (которая, вероятно, включала мою настройку CACHES), но не используя storage.CachedStaticFilesStorage с исправленной мной проблемой S3.

Я использую django-require-s3 пакет и имел следующие параметры:

DEFAULT_FILE_STORAGE = STATICFILES_STORAGE = 'require_s3.storage.OptimizedCachedStaticFilesStorage' 

Первое решение: https://stackoverflow.com/a/19110977/1074659

# Add 
AWS_QUERYSTRING_AUTH = False 

Второе решение:

# Alter 
DEFAULT_FILE_STORAGE = STATICFILES_STORAGE = 'require_s3.storage.OptimizedStaticFilesStorage'