我最近一直在开发一个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
但是,每当我查看服务器时,没有设置这样的环境变量(因此,当我尝试os.getenv('ProductionBucket')
时无法访问)
我遇到了这个this page,它似乎试图记录所有的名称空间。我也尝试过使用PARAM1
作为选项名,但得到了类似的结果。
如何在Amazon Elastic Beanstalk中设置环境变量?
编辑:
我还尝试在所有其他命令之前添加一个命令,该命令只导出一个环境变量:
commands:
01_env_vars:
command: "source scripts/env_vars"
。。。这也不成功
我已经使用一个现代(即非传统)容器进行了检查,并在/opt/elasticbeanstalk/deploy/configuration/containerconfiguration下找到它作为一个json文件。
行为似乎依赖于平台:我特别记得在PHP中,它还创建了一些带有值的shell脚本。
不管怎样,请查看/opt/elasticbeanstalk/hooks/configdeploy。
同样,它运行这个python脚本,这看起来非常方便:
https://gist.github.com/19c1e4b718f9a70a4ce1
我也有同样的问题。
信不信由你,你必须在部署之前将
.ebextensions
目录和所有*.config
文件提交给版本控制,以便它们在服务器上显示为环境变量。为了使敏感信息不受版本控制,可以使用如下配置文件:
然后在AWS管理面板(configuration>;Software configuration>;Environment Properties)中编辑配置并更新其中的值。
你也会发现this answer很有帮助。
我还执行了以下操作以获取在非容器阶段的cloudformation中配置的环境变量,例如常规命令
执行此命令后,您将在/tmp/ebúenv中有一个包含所有环境变量的文件。只需在需要环境变量的命令之前执行以下命令
示例
在elastic beanstalk的配置文件中,如下所示:
相关问题 更多 >
编程相关推荐