前提・実現したいこと
Djangoでアプリを作成しEC2にデプロイしました。
mediaファイルの保存をS3に行おうと思い、本番環境でのAWS_ACCESS_KEY_ID等を~/.profileの環境変数に格納したいのですが、本番環境にてアプリを起動するとserver error(500)となってしまいます。
発生している問題・エラーメッセージ
Server Error(500)
該当のソースコード
【.profile(本番環境)】
# if running bash if [ -n "$BASH_VERSION" ]; then # include .bashrc if it exists if [ -f "$HOME/.bashrc" ]; then . "$HOME/.bashrc" fi fi # set PATH so it includes user's private bin if it exists if [ -d "$HOME/bin" ] ; then PATH="$HOME/bin:$PATH" fi # set PATH so it includes user's private bin if it exists if [ -d "$HOME/.local/bin" ] ; then PATH="$HOME/.local/bin:$PATH" fi export AWS_SECRET_ACCESS_KEY='*********************' export AWS_ACCESS_KEY_ID='*******************'
【settings.py(本番環境)】
python
1AWS_ACCESS_KEY_ID = os.environ.get('AWS_ACCESS_KEY_ID') 2AWS_SECRET_ACCESS_KEY = os.environ.get('AWS_SECRET_ACCESS_KEY')
試したこと
試しに本番環境(EC2)のsettings.pyにアクセスキーなどを直書きしたところS3への保存は成功しましたので、環境変数の読み取りが問題だと考えています。
更にechoでも本番環境にて環境変数を持って来れますし、本番環境でpythonのshellを立ち上げて
import os os.environ.get('AWS_ACCESS_KEY_ID')
というように打つと設定した環境変数が返ってきます。
ちなみに開発環境(ローカル)ではbash_profileに環境変数を記述し、settings.pyを同様の記述にしていますが、問題なくS3に保存できています。
補足情報(FW/ツールのバージョンなど)
python:3.6.7(開発・本番同様)
django:2.1.5(開発・本番同様)
開発環境(ローカル)OS:macOS Mojave 10.14.1
本番環境(EC2)OS:ubuntu 18.04.1
回答2件
あなたの回答
tips
プレビュー