我有一个看起来像这样的脚本:
export foo=/tmp/foo
export bar=/tmp/bar
Run Code Online (Sandbox Code Playgroud)
每次我构建时都运行'source init_env'(其中init_env是上面的脚本)来设置一些变量.
为了在Python中实现同样的目的,我运行了这个代码,
reg = re.compile('export (?P<name>\w+)(\=(?P<value>.+))*')
for line in open(file):
m = reg.match(line)
if m:
name = m.group('name')
value = ''
if m.group('value'):
value = m.group('value')
os.putenv(name, value)
Run Code Online (Sandbox Code Playgroud)
但后来有人决定在init_env文件中添加如下行:
export PATH="/foo/bar:/bar/foo:$PATH"
Run Code Online (Sandbox Code Playgroud)
显然我的Python脚本崩溃了.我可以修改Python脚本来处理这一行,但是当有人想出一个在init_env文件中使用的新功能时,它就会破坏.
问题是,是否有一种简单的方法来运行Bash命令并让它修改我的os.environ?
我最近一直在研究Django应用程序,试图让它与Amazon Elastic Beanstalk一起使用.
在我的.ebextensions/python.config文件中,我设置了以下内容:
option_settings:
- namespace: aws:elasticbeanstalk:application:environment
option_name: ProductionBucket
value: s3-bucket-name
- namespace: aws:elasticbeanstalk:application:environment
option_name: ProductionCache
value: memcached-server.site.com:11211
Run Code Online (Sandbox Code Playgroud)
但是,每当我查看服务器时,都没有设置这样的环境变量(因此,当我尝试时无法访问) os.getenv('ProductionBucket')
我遇到了这个页面似乎试图记录所有命名空间.我也尝试使用PARAM1作为选项名称,但有类似的结果.
如何在Amazon Elastic Beanstalk中设置环境变量?
编辑:
我还尝试在所有其他命令之前添加命令,这些命令只会导出一个环境变量:
commands:
01_env_vars:
command: "source scripts/env_vars"
Run Code Online (Sandbox Code Playgroud)
......这也不成功
python environment-variables amazon-web-services amazon-elastic-beanstalk
我正在为Elastic Beanstalk使用自定义AMI,因为它有一些大的包装要求.
当我通过SSH连接到EC2实例时,我的应用程序无法使用我的环境变量(在Elastic Beanstalk Web控制台设置中指定).
我的生产应用程序可以很好地访问变量,但我不能在控制台中这样做,这实际上使调试非常困难.
在使用SSH控制台时,如何使所有环境变量可用?