DjangoのmediaをS3へ

2022/03 の作業


前回、static を S3 に配置したんで、今度は、media ( アップロードした画像 )を S3 に配置する様に設定。

aws との連携の設定は、static の設定でやっているので、media のアップロードの設定と、URL の設定。

static は、AWS_LOCATION を設定すると、その下に配置されるが、media はそんな感じで配置できない。

でも、S3Boto3Storage をオーバーライドすればできるらしい。


1.ディレクトリを指定するクラスを作成

(work_venv) $ vi worksite/worksite/worksite_storage.py
from storages.backends.s3boto3 import S3Boto3Storage

class MediaStorage(S3Boto3Storage):
    location = 'media'


2.media の S3 の設定

前回の設定の下辺りに設定を追加。

(work_venv) $ vi worksite/worksite/settings/prod.py 
・・・・
# media
MEDIA_URL = 'https://%s/media/' % AWS_S3_CUSTOM_DOMAIN
DEFAULT_FILE_STORAGE = 'worksite.worksite_storage.MediaStorage'
・・・・


バケットの下に media が作成されて、配置されている。

media の下に、「images」、「original_images」が作成され、その下にアップロードした画像が入っている。

これなら、別に、media を作成しなくても良かった様な気がする。


3. NGINX の media を無効化

static の方と同じ様にやればよい。