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 の方と同じ様にやればよい。