Djangoroidの奮闘記

python,django,angularJS1~三十路過ぎたプログラマーの奮闘記

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

多分キャッシュにより認証をつける?とかつけないとかそういうことを設定する項目だと思う。。。

以下のサイトを参照にしました。

stackoverflow.com

403 Forbidden for compressed files on S3 · Issue #229 · django-compressor/django-compressor · GitHub