-
Amazon S3バケットの作成: まず、AWS Management Consoleにアクセスし、新しいS3バケットを作成します。バケット名を選択し、適切なリージョンを選択してください。
-
Djangoの設定: settings.pyファイルで、静的ファイルとメディアファイルのストレージバックエンドを設定します。以下のように設定します:
# settings.py
# 静的ファイルの設定
STATIC_URL = '/static/'
STATICFILES_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
AWS_STORAGE_BUCKET_NAME = 'your-bucket-name'
AWS_S3_REGION_NAME = 'your-region-name'
AWS_ACCESS_KEY_ID = 'your-access-key-id'
AWS_SECRET_ACCESS_KEY = 'your-secret-access-key'
# メディアファイルの設定
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
AWS_S3_CUSTOM_DOMAIN = f'{AWS_STORAGE_BUCKET_NAME}.s3.amazonaws.com'
上記の設定では、your-bucket-name
、your-region-name
、your-access-key-id
、your-secret-access-key
をそれぞれ自分の設定に置き換えてください。
- Djangoのcollectstaticコマンドの実行:
Djangoの
collectstatic
コマンドを実行して、静的ファイルをS3バケットにアップロードします。
python manage.py collectstatic
- メディアファイルの処理:
メディアファイルのアップロードや表示には、Djangoの
MEDIA_URL
とMEDIA_ROOT
の設定が必要です。以下のように設定します:
# settings.py
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
また、models.py
ファイルで、モデルフィールドを定義する際にupload_to
パラメータを使用して、メディアファイルをアップロードするディレクトリを指定することもできます。
- サイトのテンプレートでの使用: 静的ファイルとメディアファイルは、テンプレート内で次のように使用できます:
<!-- 静的ファイルの使用 -->
{% load static %}
<link rel="stylesheet" href="{% static 'css/styles.css' %}">
<!-- メディアファイルの表示 -->
{% if object.image %}
<img src="{{ object.image.url }}" alt="Image">
{% endif %}
以上で、Djangoサイトの静的ファイルとメディアファイルをAmazon S3に保存する方法が完了です。これにより、ファイルの配信や管理が簡単になり、スケーラビリティが向上します。