【问题标题】:Elastic Beanstalk connect to RDS from shell SSHElastic Beanstalk 从 shell SSH 连接到 RDS
【发布时间】:2014-02-10 21:26:25
【问题描述】:

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

我的应用程序运行良好,并使用 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 定义这些变量?

【问题讨论】:

    标签: python ssh amazon-ec2 amazon-elastic-beanstalk amazon-rds


    【解决方案1】:

    今天早上我想通了:

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

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

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

    【讨论】:

    • 正是我通过 SSH 运行 django 管理命令所需要的。谢谢!
    【解决方案2】:

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

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

    Get config 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 主页并在那里设置这些环境变量,用于 SSH 会话。请记住,该文件将在重建时消失。要使其永久化,请将profile 文件添加到您的项目中,然后使用容器命令复制到ec2-user home。

    【讨论】:

      猜你喜欢
      • 2016-02-15
      • 2021-02-14
      • 2016-08-24
      • 2017-06-30
      • 1970-01-01
      • 2011-09-06
      • 1970-01-01
      • 2016-01-09
      • 2014-02-08
      相关资源
      最近更新 更多