AWS S3を使用したDjangoのデフォルトストレージとしてのCloudFrontの設定方法


  1. AWS S3バケットの作成: AWSコンソールにアクセスし、新しいS3バケットを作成します。必要な設定を行い、バケットのアクセス許可を適切に設定してください。

  2. CloudFrontディストリビューションの作成: AWSコンソールのCloudFrontサービスにアクセスし、新しいディストリビューションを作成します。ディストリビューションの設定で、以下の項目を設定します。

    • Origin Domain Name: S3バケットのエンドポイントを指定します。
    • Origin Path: オプションですが、S3バケット内の特定のパスを指定することもできます。
    • Default Cache Behavior Settings: キャッシュの設定を行います。
    • Alternate Domain Names (CNAMEs): CloudFrontディストリビューションに関連付けるカスタムドメインを指定します。
  3. Djangoの設定変更: Djangoのsettings.pyファイルを編集し、デフォルトのファイルストレージバックエンドを設定します。以下のコードを追加してください。

DEFAULT_FILE_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
AWS_S3_CUSTOM_DOMAIN = 'your-cloudfront-domain.cloudfront.net'
  1. コード例: 以下は、DjangoビューからS3バケットにファイルをアップロードする例です。
from django.core.files.storage import default_storage
def upload_file(request):
    file = request.FILES['file']
    file_name = file.name
    file_path = f'media/{file_name}'
    storage = default_storage
    storage.save(file_path, file)

これで、DjangoのデフォルトのファイルストレージとしてCloudFrontが設定され、S3バケット内のファイルが高速に配信されるようになります。