我很难理解在使用elasticbeanstalk部署节点js应用程序时如何使用.ebextensions
。我在may application的顶层目录中创建了一个名为01run.config
的文件:
my_app:
|-- server.js
|-- site/(...)
|-- node-modules
|-- .ebextensions/01run.config
文件.ebextensions包含我的AWS凭据和一个引用我的应用使用的S3捆绑包的参数。
option_settings:
- option_name: AWS_SECRET_KEY
value: MY-AWS-SECRET-KEY
- option_name: AWS_ACCESS_KEY_ID
value: MY-AWS-KEY-ID
- option_name: PARAM1
value: MY-S3-BUNDLE-ID
使用eb create
部署我的应用后,会创建一个包含许多变量的.elasticbeanstalk/optionsettings.my_app-env
,其中PARAM1
设置为“”。凭证也不存在。
我想在启动应用程序的时候我读到了.ebextensions
的某个地方,所以我不会在optionsettings.my_app-env'中看到这些变量。但是,未设置变量,并且应用程序无法正常工作。我很感激任何解释。
我发现官方文档有点让人难以理解。
答案 0 :(得分:2)
似乎问题是我没有将.ebextensions
提交给git。显然,在初始化您的应用程序时会读取该文件,因此它必须是发送到elasticbeanstalk的包的一部分。
我已经考虑使用配置文件来设置amazon文档http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_nodejs_custom_container.html中的身份验证密钥。 但是,我没有提交该文件,因为很明显您不应该提交您的身份验证密钥(更多关于此讨论:How do you pass custom environment variable on Amazon Elastic Beanstalk (AWS EBS)?)。
我最终简化了包含PARAM1选项的文件,并在整个elasticbenastalk在线界面中传递了密钥和访问密钥ID。
答案 1 :(得分:0)
您的配置文件示例缺少命名空间。您必须为每个选项设置指定命名空间。
答案 2 :(得分:0)
您可以传递.elasticbeanstalk/optionsettings.[your-env-name]
文件中的环境选项。
您应该有一个名为[aws:elasticbeanstalk:application:environment]
的部分。它可能会填充PARAM1=
...等。只需在此部分下添加您的环境变量即可。不应提交.elasticbeanstalk
目录中的文件。
执行eb update
后,如果您转到基于Web的EBS控制台,则可以验证是否添加了选项。新选项应该出现。我相信通过控制台添加的任何旧选项都不会被删除。