【发布时间】:2014-05-30 14:26:40
【问题描述】:
我正在使用 Boto2 来帮助将 s3 与我在 heroku 上的 Django-admin 应用程序集成。为我的静态文件生成的一些 url 不正确。 示例:
https://BUCKET.s3.amazonaws.com/FOLDER/static/admin?Signature=XXX&Expires=YYY&AWSAccessKeyId=ZZZimg/icon_calendar.gif
应该是什么时候
https://BUCKET.s3.amazonaws.com/FOLDER/static/admin/img/icon_calendar.gif?Signature=XXX&Expires=YYY&AWSAccessKeyId=ZZZ
请注意img/icon_calendar.gif 不合适。我认为导致此问题的唯一原因是我用来在存储桶中的子文件夹上制作静态文件的代码。它基于this SO solution
#s3utils.py
from storages.backends.s3boto import S3BotoStorage
import os
STATIC_ROOT = 'FOLDER/static'
MEDIA_ROOT = 'FOLDER/media'
StaticRootS3BotoStorage = lambda: S3BotoStorage(location=STATIC_ROOT)
MediaRootS3BotoStorage = lambda: S3BotoStorage(location=MEDIA_ROOT)
#settings.py
...
AWS_STORAGE_BUCKET_NAME = "BUCKET"
AWS_ACCESS_KEY_ID = 'ZZZ'
AWS_SECRET_ACCESS_KEY = 'AAAA'
DEFAULT_FILE_STORAGE = 'app.s3utils.MediaRootS3BotoStorage'
STATICFILES_STORAGE = 'app.s3utils.StaticRootS3BotoStorage'
S3_URL = 'http://%s.s3.amazonaws.com/' % (AWS_STORAGE_BUCKET_NAME)
STATIC_ROOT = '/FOLDER/static/'
MEDIA_ROOT = '/FOLDER/media/'
STATIC_URL = '%sFOLDER/static/' % (S3_URL)
MEDIA_URL = '%sFOLDER/media/' % (S3_URL)
什么可能导致 URL 损坏?
【问题讨论】:
-
你找到解决这个问题的方法了吗@datinc?我有完全相同的设置和完全相同的问题。
-
我做了@espenhogbakk。我已将其设置为接受的答案。
标签: python django heroku amazon-s3 boto