アプリなどを開発するブログ

React Native / Swift / Ruby on Railsなどの学習メモ。


DjangoでファイルストレージにAmazon S3を使う

Django + Herokuでファイルをアップしてそれを使うみたいな仕組みは
Herokuの仕様でNGになってます。

なので、アップされたファイルはAmazon S3に置く、というのがよさそうです。 リクエストや容量がそれなりにならなければ、基本無料ですし、
必要になったら課金していけば本番環境でもそのまま使えるし。

django-strageとbotoというライブラリで簡単に実現できます。 ここの記事がとっても参考になりました。 Utilizing S3 for a Heroku Django app

導入手順

django-strage をインストール

Djangoから色んなストレージサービスを使えるようにするライブラリです。

pip install django-storages

boto をインストール

django-strageでAmazon Web Servicesを使いやすくするライブラリです。
こちらもインストール。

pip install boto

settings.py の INSTALLED_APPS に 'storages' を追加

settings.pyに以下を追加

STATICFILES_STORAGE = 'storages.backends.s3boto.S3BotoStorage'

django-admin.pyがS3 bucketにファイルを追加できるようにします。

setting.py にAWSのパラメータを追加

AWS_ACCESS_KEY_ID = 'XXXXXXXXXXXXXXXXXXX'
AWS_SECRET_ACCESS_KEY = 'xxXXXxxXxxXxXXXxxXxXxxXXXXxxXxX'
AWS_STORAGE_BUCKET_NAME = 'bucket name'

setting.pyのSTATIC_URLを変更

STATIC_URL = 'https://s3.amazonaws.com/bucket-name/'
Django admin appを使っている場合はADMIN_MEDIA_PREFIXも更新

(Django 1.3 以前のみ)

ADMIN_MEDIA_PREFIX = STATIC_URL + 'admin/'

.slugignoreファイルを作成

以下の内容を含む.slugignoreという名前のファイルを作成して保存。(.ignoreみたいなもんです)

static

以上です!