Эластичный бобовый шлейф подключается к RDS из корпуса SSH
У меня есть приложение python на экземпляре EC2 Extract Beanstalk, который подключен к RDS PostgreSQL.
Мое приложение отлично работает и использует переменные среды, заданные Elastic Beanstalk для подключения к базе данных:
os.environ['RDS_DB_NAME']
os.environ['RDS_USERNAME']
os.environ['RDS_PASSWORD']
os.environ['RDS_HOSTNAME']
os.environ['RDS_PORT']
Однако это не работает, когда я вхожу в учетную запись EC2 с SSH. Переменные среды RDS не установлены. Поскольку мое приложение работает в браузере, я думаю, что это не могут быть группы безопасности. Я также пытался получить доступ к переменным с активированным virtualenv.
Как я могу сделать эластичный beanstalk для определения этих переменных, когда у меня есть SSH-соединение?
Ответы
Ответ 1
Я понял, что это morgning:
Переменные среды не заданы в virtualenv, а другой script. Сначала вам нужно активировать virualenv, тогда вам нужно загрузить переменные, активировав env script в "текущем" каталоге. Вот так:
source /opt/python/run/venv/bin/activate
source /opt/python/current/env
Теперь переменные RDS Beanstalk устанавливаются и готовы к использованию любым script, который вы выполняете в SSH.
Ответ 2
Я не нашел сценарии, которые вы упомянули, но найти другой способ получить ту же информацию.
cd /opt/elasticbeanstalk/bin
sudo ./get-config environment
Получить конфигурацию script позволяет получить доступ к большому количеству изменений в этих категориях:
optionsettings environment option settings that affect instance
container container specific configurations
addons addon configurations
environment environment variables
meta EB environment meta-data
Надеюсь, что это поможет.
Ответ 3
К сожалению, переменные окружения недоступны вне контейнера Elastic Beanstalk.
В качестве альтернативы вы можете добавить .profile
файл в ec2-user
home и установить для него такие переменные среды для сеансов SSH. Помните, что файл будет удален. Чтобы сделать его постоянным, добавьте profile
файл в проект и скопируйте его в ec2-user
с помощью команды container.