AWS S3への画像アップロードを行うDjangoアプリケーションの設定方法
この記事では、自分がDjangoアプリケーションでAWS S3を使用して画像をアップロードするために行った設定を記述します。具体的には、Djangoの設定ファイルにAWS認証情報を追加し、Apache経由で環境変数を設定する手順を詳しく載せておきます。
前提条件
AWSアカウントがあること
Djangoアプリケーションが既にセットアップされていること
Apacheがインストールされ、設定されていること
ステップ1:AWS認証情報の設定
AWS管理コンソールにログインし、新しいアクセスキーを作成します。作成したアクセスキーとシークレットアクセスキーをメモしておきます。
ステップ2:Apache環境変数の設定
AWS認証情報をApacheの環境変数として設定します。これにより、DjangoアプリケーションがAWS S3にアクセスするための資格情報を取得できます。
Apacheの環境変数ファイルを編集します:
sudo nano /etc/apache2/envvars
次の内容を追加します:
export AWS_ACCESS_KEY_ID='your_access_key_id'
export AWS_SECRET_ACCESS_KEY='your_secret_access_key'
※ your_access_key_id と your_secret_access_key は、作成した実際のアクセスキーとシークレットアクセスキーに置き換えてください。
Apacheを再起動します:
sudo systemctl restart apache2
ステップ3:Django設定ファイルの更新
Djangoアプリケーションの settings.py ファイルを編集し、AWS S3を使用するための設定を追加します。
settings.py ファイルを編集します:
import os
AWS_ACCESS_KEY_ID = os.environ.get('AWS_ACCESS_KEY_ID')
AWS_SECRET_ACCESS_KEY = os.environ.get('AWS_SECRET_ACCESS_KEY')
print(f"DEBUG: AWS_ACCESS_KEY_ID = {AWS_ACCESS_KEY_ID}")
print(f"DEBUG: AWS_SECRET_ACCESS_KEY = {AWS_SECRET_ACCESS_KEY}")
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
AWS_STORAGE_BUCKET_NAME = 'your_AWS_STORAGE_BUCKET_NAME'
AWS_S3_REGION_NAME = 'your_AWS_S3_REGION_NAME'
boto3 と django-storages をインストールします:
pip install boto3 django-storages
ステップ4:静的ファイルの収集
AWS S3を使用するための設定を行った後、静的ファイルを収集します。
manage.py を使用して静的ファイルを収集します:
sudo python3 manage.py collectstatic
ステップ5:デプロイと確認
Apacheサーバーを再起動し、Djangoアプリケーションが正しく動作しているか確認します。
Apacheサーバーを再起動します:
sudo systemctl restart apache2
AWS認証情報が正しく読み込まれていることを確認するために、Apacheのエラーログを確認します:
sudo tail -f /var/log/apache2/error.log
結論
この記事では、DjangoアプリケーションでAWS S3を使用して画像をアップロードするための設定方法を説明しました。Apacheの環境変数を使用してAWS認証情報を設定し、Djangoの設定ファイルを更新することで、AWS S3へのアクセスを実現しました。
この手順を踏むことで、DjangoアプリケーションがAWS S3に画像をアップロードできるようになります。
注意
本番環境で動作させる時には以下の点に気をつけてください
・your_access_key_id や your_secret_access_key などのプレースホルダーを実際の値に置き換えない。
・デバッグメッセージ (print(f"DEBUG: AWS_ACCESS_KEY_ID = {AWS_ACCESS_KEY_ID}") など) を本番環境に残さない。