首页 文章

Elastic Beanstalk从shell SSH连接到RDS

提问于
浏览
13

我在Elastic Beanstalk EC2实例上有一个python应用程序,它连接到PostgreSQL RDS .

我的应用程序工作正常,并使用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连接时,如何使弹性beanstalk定义这些变量?

3 回答

  • 18

    我想通了这个morgning:

    环境变量不是在virtualenv中设置的,而是由另一个脚本设置的 . 首先,你必须激活virualenv,然后你需要通过激活'current'目录中的env脚本来加载变量 . 像这样:

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

    Beanstalk RDS变量现在已设置并可供您在SSH中执行的任何脚本使用 .

  • 3

    我没有找到您提到的脚本,但找到了另一种获取相同信息的方法 .

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

    获取配置脚本可以让您访问以下类别的大量信息:

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

    希望能帮助到你 .

  • 1

    遗憾的是,环境变量在Elastic Beanstalk容器之外不可用 .

    作为替代方案,您可以将 .profile 文件添加到 ec2-user home并在那里为SSH会话设置这些环境变量 . 请记住,该文件将在重建时消失 . 要使其永久化,请将 profile 文件添加到项目中,并使用container命令复制到 ec2-user home .

相关问题