Djangoroidの奮闘記

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

Elastic Bean stalk Django S3のmediaの403errorの解消方法

django+S3+Elastic Beanstalkで、アプリを構築していたところ、なぜかmediaファイルだけ、403errorが発生してしまった。いろいろ調べたところstackoverflowに以下のような回答があった。

stackoverflow.com

I was able to resolve this problem by adding this line to my settings file: AWS_QUERYSTRING_AUTH = False Credit goes to blackrobot on github.

確かにherokuの時は、これ入れてたな。 settings.pyに以下の設定を入れておく。

AWS_QUERYSTRING_AUTH = False

これで無事画像も表示された!!

AWS_QUERYSTRING_AUTH は、django-storage用の変数(defaultでは、trueになっている)

Setting AWS_QUERYSTRING_AUTH to False removes query parameter authentication from generated URLs. This can be useful if your S3 buckets are public.

URLから生成された認証情報を取り除くことができるみたいなことが書いてある。多分、mediaとstaticで分けてると、staticの認証情報でmediaにアクセスしようとして、それが一致してなくて、mediaにはアクセスできてなかったのかなぁ。とにかく、mediaとstaticを同じbucketで分ける場合は、この設定が必要なようです。

公式サイト:

Amazon S3 — django-storages 1.5.1 documentation