2017-04-06 15 views
1

私はDjangoプロジェクトを設定して、S3バケットを使用してローカルファイルとメディアファイルを格納します。Djangoカスタム静的ファイルはs3バケットに収集されません

次のように私のプロジェクトツリーがある:

src/ 
     blog/ 
      settings/ 
        __init__ 
        local.py 
        production.py 
      s3utils.py 
      [..] 
     [..] 

マイlocal.py

access_key = "xx" 
secret_key = "yy" 

AWS_ACCESS_KEY_ID = access_key 
AWS_SECRET_ACCESS_KEY = secret_key 
AWS_STORAGE_BUCKET_NAME = 'zz' 


STATICFILES_STORAGE = 'blog.s3utils.StaticRootS3BotoStorage' 
DEFAULT_FILE_STORAGE = 'blog.s3utils.MediaRootS3BotoStorage' 
S3DIRECT_REGION = 'us-west-2' 
S3_URL = 'http://%s.s3.amazonaws.com/' % AWS_STORAGE_BUCKET_NAME 
MEDIA_URL = 'http://%s.s3.amazonaws.com/media/' % AWS_STORAGE_BUCKET_NAME 
MEDIA_ROOT = MEDIA_URL 
STATIC_URL = S3_URL + "/static/" 
ADMIN_MEDIA_PREFIX = STATIC_URL + 'admin/' 

import datetime 

two_months = datetime.timedelta(days=61) 
date_two_months_later = datetime.date.today() + two_months 
expires = date_two_months_later.strftime("%A, %d %B %Y 20:00:00 GMT") 

AWS_HEADERS = { 
    'Expires': expires, 
    'Cache-Control': 'max-age=%d' % (int(two_months.total_seconds()),), 
} 

s3utils.py

from storages.backends.s3boto import S3BotoStorage 

StaticRootS3BotoStorage = lambda: S3BotoStorage(location='static') 
MediaRootS3BotoStorage = lambda: S3BotoStorage(location='media') 

私が実行します。

python manage.py collectstatic 

(django)adminの静的ファイルは、s3バケットにコピーされます。

私は自分のIAMユーザの許可を間違って設定したと思っていましたが、実際には'admin/'ファイルをs3バケットにコピーする権限があります。

ご協力いただきありがとうございます。

答えて

関連する問題