2014-01-21 102 views
10

我在連接到PostgreSQL RDS的Elastic Beanstalk EC2實例上有一個python應用程序。Elastic Beanstalk從shell中連接到RDS SSH

我的應用程序工作正常,並使用由彈性魔豆設置爲與數據庫連接的環境變量:

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連接時,如何讓彈性beanstalk定義這些變量?

回答

14

我想通了這個morgning:

的環境變量沒有設置的virtualenv內,而是由另一個腳本。首先,您必須激活virualenv,然後您需要通過激活「當前」目錄中的env腳本來加載變量。像這樣:

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

Beanstalk RDS變量現在已經設置好,可以在SSH中執行任何腳本來使用了。

1

不幸的是,環境變量在Elastic Beanstalk容器外部不可用。

作爲替代方案,您可以將.profile文件添加到ec2-user主目錄,並在那裏爲SSH會話設置那些環境變量。請記住,該文件將重建。要使其永久生效,請將profile文件添加到您的項目中,並使用容器命令複製到ec2-user首頁。

2

我沒有找到你提到的腳本,但找到了另一種方式來達到相同的信息。

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

獲取配置腳本,讓你得到這個類別獲得了不少indormaftion的:

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

希望它能幫助。

+0

也許我的答案已過時,但可以測試它,因爲我不再使用彈性beanstalk。 – jvannistelrooy

相關問題