用于节点64位的Amazon Elastic Beanstalk .config ENV

时间:2013-08-14 09:19:29

标签: node.js amazon-web-services elastic-beanstalk

以下是我的EB配置文件.ebextensions/app.config的摘录:

option_settings:
  - option_name: AWS_SECRET_KEY
    value: xxxxxxxxxx
  - option_name: AWS_ACCESS_KEY_ID
    value: xxxxxxxxxx
  - option_name: APP_ENV
    value: development
  - namespace: aws:elasticbeanstalk:container:nodejs
    option_name: ProxyServer
    value: nginx
  - namespace: aws:elasticbeanstalk:container:nodejs
    option_name: GzipCompression
    value: true
  - namespace: aws:elasticbeanstalk:container:nodejs
    option_name: NodeVersion
    value: 0.8.10
  - namespace: aws:elasticbeanstalk:container:nodejs
    option_name: NodeCommand
    value: npm start

commands:
  test_command: 
    command: echo $APPLICATION_ENV > /home/ec2-user/test.txt
    cwd: /home/ec2-user
    ignoreErrors: true

然后我做正常的事情:

$ git commit -am "wrote config file"
$ eb init
...
$ eb start
...
would you like to use the most recent commit [y/n] 
$ y

然后在部署完成并处于绿色状态后,查看我发现的eb生成的.elasticbeansalk/optionsettings.myapp-env文件:

[aws:elasticbeanstalk:application:environment]
PARAM1=
PARAM2=
PARAM3=
PARAM4=
PARAM5=

[aws:elasticbeanstalk:container:nodejs]
GzipCompression=false
NodeCommand=
NodeVersion=0.8.24
ProxyServer=nginx

我的环境变量未设置,NodeCommand指令未设置,NodeVersion已被忽略。什么给,EB?它如何忽略某些指令而不是其他指令呢?关于我做错了什么想法?


修改

根据this post,保存环境变量的JSON保存在这里:

/opt/elasticbeanstalk/deploy/configuration/containerconfiguration

这意味着我可以为变量解析这个领域,但这很令人沮丧,因为它应该用配置文件来处理(否则为什么会有一个?)。我的配置文件仍然存在问题,否则EB在这方面似乎完全被打破......

1 个答案:

答案 0 :(得分:0)

我也遇到过这个问题。我相信有两种方法可以解决它。

  1. 运行“eb update”,这应该会更新您的环境并希望获取变量。

  2. 创建新的环境并将代码部署到该环境中。一旦一切顺利,然后在新环境中指向dns并删除旧环境。

  3. 我也读过某个地方(我认为是aws论坛),如果你更新弹性beanstalk gui界面中的env,那些值将优先于你在源代码中放置的任何值。