2014-01-21 15 views
10

私はPostgreSQL RDSに接続されたElastic Beanstalk EC2インスタンスにPythonアプリケーションを持っています。Elastic BeanstalkはシェルからRDSに接続するSSH

私のアプリケーションは正常に動作し、データベースに接続するためにElastic Beanstalkでによって設定される環境変数を使用しています。

os.environ['RDS_DB_NAME'] 
os.environ['RDS_USERNAME'] 
os.environ['RDS_PASSWORD'] 
os.environ['RDS_HOSTNAME'] 
os.environ['RDS_PORT'] 

私はSSHでEC2インスタンスにログインしたときしかし、これは動作しません。 RDS環境変数が設定されていません。私のアプリケーションはブラウザで動作するので、セキュリティグループではないと思います。また、virtualenvを有効にして変数にアクセスしようとしました。

私はSSH接続時にこれらの変数を定義するためにエラスティックビーンストークを作成できますか?

答えて

14

私はこのmorgningそれを考え出し:

環境変数はvirtualenvの内、しかし別のスクリプトによって設定されていません。まず、virualenvを有効にする必要があります。次に、 'current'ディレクトリにのenvスクリプトを有効にして変数を読み込む必要があります。

source /opt/python/run/venv/bin/activate 
source /opt/python/current/env 

SSHで実行するスクリプトでBeanstalk RDS変数が設定され、すぐに使用できるようになりました。

1

残念ながら、環境変数はElastic Beanstalkコンテナの外部では利用できません。

代わりに、ec2-userのファイルに.profileファイルを追加して、その環境変数をSSHセッション用に設定することができます。ファイルが再構築されることを忘れないでください。永久にするには、profileファイルをプロジェクトに追加し、コンテナコマンドを使用してec2-userのホームにコピーします。

2

あなたが言及したスクリプトは見つかりませんでしたが、同じ情報に到達する別の方法が見つかりました。

cd /opt/elasticbeanstalk/bin 
sudo ./get-config environment 

取得configスクリプトを使用すると、このカテゴリにindormaftionの多くへのアクセスを取得することができます:

optionsettings     environment option settings that affect instance 
container      container specific configurations 
addons       addon configurations 
environment      environment variables 
meta        EB environment meta-data 

はそれがお役に立てば幸いです。

+0

多分私の答えは時代遅れですが、私はもう弾力のある豆の茎を使用していないので、それをテストすることができます。 – jvannistelrooy

関連する問題