DjangoでアップロードファイルをS3に置くときの設定メモ
適当にImageFieldを持つmodelを作る
models.py
class Image(models.Model): file = models.ImageField(upload_to='img/%Y%m%d') memo = models.CharField(max_length=255)
S3に置くためにdjango-storagesを使う
たぶん以下が最小限の設定
settings.py
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto.S3BotoStorage' AWS_ACCESS_KEY_ID = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxx' AWS_SECRET_ACCESS_KEY = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxx' AWS_STORAGE_BUCKET_NAME = 'xxxxxxx'
バケット名や設定はAWSのアカウントページで確認しておく
これだけでアップロードしたファイルは指定したS3のバケットに保存された
便利便利
さらに以下を追加して
STATICFILES_STORAGE = 'storages.backends.s3boto.S3BotoStorage' STATIC_URL = 'http://' + AWS_STORAGE_BUCKET_NAME + '.s3.amazonaws.com/' ADMIN_MEDIA_PREFIX = STATIC_URL + 'admin/'
python manage.py collectstaticを実行すると、jsやcssなどの静的ファイルがS3上にコピーされ、そちらが参照されるようになる