2017-04-06 97 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 

only(django)admin静态文件被复制到我的s3存储桶。

我认为问题在于我错误地配置了我的IAM用户权限,但实际上我有权将'admin/'文件复制到s3存储桶。

感谢您提供任何帮助。

回答

相关问题