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?
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:
The Beanstalk RDS variables are now set and ready to use by any script you execute in SSH.
I did not find the scripts you have mentionned but find another way to reach the same information.
Get config script allow you to get access to a lot of indormaftion on this categories :
Hope it helps.
Unfortunately, environment variables are not available outside of Elastic Beanstalk container.
As an alternative you can add
.profile
file toec2-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 theprofile
file to your project and copy toec2-user
home with container command.