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バケットにコピーする権限があります。
ご協力いただきありがとうございます。
は、あなたが私の一日行われ、あなたに@Rafaelをありがとう! – user123892