Elastic Beanstalk connect to RDS from shell SSH

2019-03-11 04:58发布

I have a python application on an Elastic Beanstalk EC2 instance which is connected to an PostgreSQL RDS.

My application works fine and uses the environment variables that are set by Elastic Beanstalk to connect with the database:

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

However, this doesn't work when I login on the EC2 instance with SSH. The RDS environment variables are not set. Since my application works in the browser, I think it cannot be the security groups. I've also tried to access the variables with the virtualenv activated.

How can I make elastic beanstalk to define these variables when I have an SSH connection?

3条回答
老娘就宠你
2楼-- · 2019-03-11 05:20

I figured it out this morgning:

The environment variables are not set within the virtualenv, but by another script. First you have to activate the virualenv, then you need to load the variables by activating the env script in the 'current' directory. Like this:

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

The Beanstalk RDS variables are now set and ready to use by any script you execute in SSH.

查看更多
爷、活的狠高调
3楼-- · 2019-03-11 05:22

I did not find the scripts you have mentionned but find another way to reach the same information.

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

Get config script allow you to get access to a lot of indormaftion on this categories :

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

Hope it helps.

查看更多
Ridiculous、
4楼-- · 2019-03-11 05:30

Unfortunately, environment variables are not available outside of Elastic Beanstalk container.

As an alternative you can add .profile file to ec2-user home and set those environment variables there, for SSH sessions. Remember, that the file will be gone on rebuild. To make it permanent, add the profile file to your project and copy to ec2-user home with container command.

查看更多
登录 后发表回答