0
0

DjangoアプリケーションでAWS S3を使用して画像をアップロードする設定方法

Posted at

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}") など) を本番環境に残さない。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0