2016-06-07 2 views
1

heroku + aws s3에서 호스팅되는 응용 프로그램은 미디어 파일 만 저장하는 데 사용됩니다.
사용자가 업로드 할 때 오류가 발생합니다.장고에서 AWS -S3으로 CertificateError를 어떻게 해결할 수 있습니까?

CertificateError at /create/ 
hostname 'shuboy.media.s3.amazonaws.com' doesn't match either of '*.s3.amazonaws.com', 's3.amazonaws.com' 
Request Method: POST 
Request URL: http://shuboy2015.herokuapp.com/create/ 
Django Version: 1.9.6 
Exception Type: CertificateError 
Exception Value: 
hostname 'shuboy.media.s3.amazonaws.com' doesn't match either of '*.s3.amazonaws.com', 's3.amazonaws.com' 
Exception Location: /app/.heroku/python/lib/python2.7/ssl.py in match_hostname, line 271 
Python Executable: /app/.heroku/python/bin/python 
Python Version: 2.7.10 
Python Path: 
['/app', 
    '/app/.heroku/python/bin', 
    '/app/.heroku/python/lib/python2.7/site-packages/setuptools-20.4-py2.7.egg', 
    '/app/.heroku/python/lib/python2.7/site-packages/pip-8.1.1-py2.7.egg', 
    '/app', 
    '/app/.heroku/python/lib/python27.zip', 
    '/app/.heroku/python/lib/python2.7', 
    '/app/.heroku/python/lib/python2.7/plat-linux2', 
    '/app/.heroku/python/lib/python2.7/lib-tk', 
    '/app/.heroku/python/lib/python2.7/lib-old', 
    '/app/.heroku/python/lib/python2.7/lib-dynload', 
    '/app/.heroku/python/lib/python2.7/site-packages'] 
Server time: Tue, 7 Jun 2016 20:54:31 +0000 

settings.py 파일에서 정적 파일이없는 미디어 파일 만 저장하려고합니다.

DEFAULT_FILE_STORAGE = 'storages.backends.s3boto.S3BotoStorage' 
AWS_S3_SECURE_URLS = False 
AWS_QUERYSTRING_AUTH = False  
AWS_S3_ACCESS_KEY_ID = '*******' 
AWS_S3_SECRET_ACCESS_KEY = '******' 
AWS_STORAGE_BUCKET_NAME ='shuboy.media' 
AWS_S3_CUSTOM_DOMAIN = '%s.s3.amazonaws.com' % AWS_STORAGE_BUCKET_NAME  



STATIC_URL = '/static/' 
MEDIA_URL = 'https://%s/media/' % AWS_S3_CUSTOM_DOMAIN  

STATICFILES_DIRS = [ 
    os.path.join(BASE_DIR, "appname/static"), 
]  

STATIC_ROOT = os.path.join(BASE_DIR, "STATIC_CDN")  

MEDIA_ROOT = '%s.s3.amazonaws.com/media/' % AWS_STORAGE_BUCKET_NAME  

STATICFILES_STORAGE = 'whitenoise.django.GzipManifestStaticFilesStorage' 

누군가이 오류가 발생하는 이유를 말해 주면이 문제를 어떻게 해결할 수 있습니까? 더 이상의 제안이있을 것입니다.

답변

4

버킷 이름에 "."이 있기 때문에 위의 오류가 발생합니다. 그 안에.

이 문제를 해결하려면 ~/.boto 구성 파일 검색을 https_validate_certificates으로 설정하고 False으로 설정하십시오.

또는 "." 버켓 이름이 올바로 작동하는지 확인하십시오.

+0

"." 우리 양동이 이름에서 우리를 위해 그것을 분류했다. 그래도 좋은 ~ /. 보토 wordaround에 대해 몰랐어요. – ARJMP

+0

많은 도움 감사합니다 :) – shuboy2014

2

boto 패키지는 SSL 인증서 범위 때문에 이름에 점이있는 S3 버킷을 완전히 지원하지 않습니다.

만들고 "shuboymedia"같은 점없이 새로운 버킷을 사용하거나 설정에서 원숭이 패치를 추가 하나 : 나는 장고/Heroku가/아마존-S3와 함께이 같은 문제가 있었다

import ssl 
if hasattr(ssl, '_create_unverified_context'): 
    ssl._create_default_https_context = ssl._create_unverified_context 
관련 문제