Django AmazonS3 Heroku でデプロイした時の話 Media 403 error解消編
静的ファイル公開の場合の設定をしてみる
静的ファイルの公開方法 — Django 1.4 documentation
S3などを利用する場合はこちら
静的ファイルの公開方法 — Django 1.4 documentation
ちなみに、カスタムストレージの設定方法はこちら
カスタムのストレージシステムを作成する — Django 1.4 documentation
現在の設定
STATICFILES_DIRS = ( os.path.join(BASE_DIR, "static_in_pro", "our_static"), ) STATICFILES_STORAGE = 'myproject.custom_storages.StaticRootS3BotoStorage' STATIC_URL = "https://%s/%s/" % ("*******.s3-website-ap-northeast-1.amazonaws.com", "static") # MEDIA_ROOT = 'mediafiles' MEDIAFILES_LOCATION = 'media' MEDIA_URL = "https://%s/%s/" % ("*******.s3-website-ap-northeast-1.amazonaws.com", "media") DEFAULT_FILE_STORAGE = 'myproject.custom_storages.MediaRootS3BotoStorage'
でもこれだけだと、s3にあるimageに、urlからアクセスできない。
例えば、https://mybucketname.s3-ap-northeast-1.amazonaws.com/media/image.jpg
というurlのjpgがあった場合、直接ブラウザにurlを入れると表示されるが、djangoのサイトからはアクセスできない。403errorが出てしまうという状況
色々試したけど、結論的には、、、
settings/production.py に以下のコードを追記すると無事解決されました。
AWS_QUERYSTRING_AUTH = False
多分キャッシュにより認証をつける?とかつけないとかそういうことを設定する項目だと思う。。。
以下のサイトを参照にしました。
403 Forbidden for compressed files on S3 · Issue #229 · django-compressor/django-compressor · GitHub