3

以下は、私の 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? 特定のディレクティブを無視し、他のディレクティブを無視するにはどうすればよいでしょうか? 私が間違っていることについてのアイデアはありますか?


編集

この投稿によると、環境変数を保持する JSON は次の場所に保持されます。

/opt/elasticbeanstalk/deploy/configuration/containerconfiguration

つまり、変数のこのフィールドを解析できますが、構成ファイルで処理する必要があるため、これはイライラします (そうでなければ、なぜ 1 つあるのですか?)。私の構成ファイルにはまだ問題があるはずです。そうでなければ、EB はこの点で完全に壊れているようです...

4

1 に答える 1

0

私もこの問題に遭遇しました。それを解決するには2つの方法があると思います。

  1. 「eb update」を実行すると、環境が更新され、うまくいけば変数が取得されます。

  2. 新しい環境を作成し、その環境にコードをデプロイします。すべてがうまくいったら、dns を新しい環境に向けて、古い環境を削除します。

また、私はどこか (私が信じている aws フォーラム) で、エラスティック Beanstalk GUI インターフェイスの env を更新すると、それらの値がソース コードに入力したものよりも優先されることを読みました。

于 2013-11-06T21:11:23.907 に答える