13

私は最近、Djangoアプリケーションに取り組んでおり、AmazonElasticBeanstalkで動作させるようにしています。

私の.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')

すべての名前空間を文書化しようとしているように見えるこのページに出くわしました。PARAM1オプション名としても使ってみましたが、同様の結果になりました。

Amazon Elastic Beanstalkで環境変数を設定するにはどうすればよいですか?

編集
環境変数をエクスポートする他のすべてのコマンドの前にコマンドを追加しようとしました:

commands:
 01_env_vars:
  command: "source scripts/env_vars"

...これも失敗しました

4

6 に答える 6

19

私も同じ問題を抱えていました。

信じられないかもしれませんが、サーバー上で環境変数として表示されるようにするには、展開する前に.ebextensionsディレクトリとすべての*.configファイルをバージョン管理にコミットする必要があります。

機密情報をバージョン管理の対象から外すために、次のような構成ファイルを使用できます。

option_settings:
  - option_name: API_LOGIN
    value: placeholder
  - option_name: TRANS_KEY
    value: placeholder
  - option_name: PROVIDER_ID
    value: placeholder

次に、AWS管理パネル([Configuration]> [Software Configuration]> [Environment Properties])で設定を編集し、そこで値を更新します。

この回答も役立つ場合があります。

于 2013-04-12T01:08:31.527 に答える
5

コンテナー以外のフェーズでクラウドフォーメーションで構成する環境変数(通常のコマンドなど)も取得するために、次のことを行いました

/opt/elasticbeanstalk/bin/get-config environment | python -c "import json,sys; obj=json.load(sys.stdin); f = open('/tmp/eb_env', 'w'); f.write('\n'.join(map(lambda x: 'export ' + x[0] + '=' + x[1], obj.iteritems())))"

このコマンドを実行すると、すべての環境変数を含むファイルが/ tmp/eb_envに作成されます。環境変数を必要とするコマンドの前に、次を実行するだけです。

source /tmp/eb_env

source /tmp/eb_env && echo $MY_CUSTOM_ENV

Elastic Beanstalkの設定ファイルでは、次のようになります。

commands:
    02-make-sure-we-can-get-our-env-in-the-instance-itself:
        command: "/opt/elasticbeanstalk/bin/get-config environment | python -c 'import json,sys; obj=json.load(sys.stdin); f = open(\'/tmp/eb_env\', \'w\'); f.write(\'\n\'.join(map(lambda x: \'export \' + x[0] + \'=\' + x[1], obj.iteritems())))'"
于 2015-11-18T13:36:41.637 に答える
5

オプション1:

を使用して環境変数を設定できますeb setenv FOO=bar

を使用して環境変数を表示できますeb printenv

オプション2:

たとえば、.ebextensionsディレクトリに設定ファイルを作成できます00_environment.config。次に、次のように環境変数を追加します。

option_settings: - option_name: MY_FIRST_ENV_VAR value: abc - option_name: ANOTHER_ENV_VAR value: 123

ただし、複数の環境がある場合は、オプション#1を使用して環境変数を直接設定する方が便利であることがわかりました。

eb configまた、コマンドが役立つこともわかりました:http: //docs.aws.amazon.com/elasticbeanstalk/latest/dg/eb3-config.html

これらのコマンドを使用すると、eb環境で構成ファイルを取得、配置、一覧表示、または削除できます。

このコマンドeb config getは、環境変数を含む構成をのローカルファイルに保存し.elasticbeanstalk/saved_configsます。

于 2016-07-18T23:07:47.117 に答える
2

最新の(つまり、レガシーではない)コンテナーを使用して確認したところ、/ opt / elasticbeanstalk / deploy / configuration/containerconfigurationの下にjsonファイルとして見つかりました。

動作はプラットフォームに依存しているようです。特にPHPで覚えているのは、値を使用していくつかのシェルスクリプトも作成することです。

それにもかかわらず、/ opt / elasticbeanstalk / hooks/configdeployを調べてください。

Javaの場合も、このpythonスクリプトを実行します。これは、非常に便利に見えます。

https://gist.github.com/19c1e4b718f9a70a4ce1

于 2013-01-09T20:23:08.677 に答える
1

ローカル実行で変数を設定するには、次のようにします。

eb local setenv CONFIG=dev
eb local run

これはDockerMultiContainersでも機能しますが、そうでない場合は環境が表示されません。

于 2016-10-06T20:59:33.213 に答える
1

これは古い質問ですが、私がここで行ったのと同じ質問をまだ持っている人のために、AWSドキュメントからの解決策があります:https ://docs.aws.amazon.com/elasticbeanstalk/latest/dg/environments-cfg-softwaresettings .html

ElasticBeanstalkコンソールで環境プロパティを構成するには

  1. Elastic Beanstalkコンソールを開き、[リージョン]ドロップダウンリストでリージョンを選択します。

  2. ナビゲーションペインで、[環境]を選択し、リストから環境の名前を選択します。

  3. ナビゲーションペインで、[構成]を選択します

  4. [ソフトウェア構成]カテゴリで、[編集]を選択します。

  5. [環境のプロパティ]で、キーと値のペアを入力します。

  6. [適用]を選択します。
于 2020-04-11T11:50:16.480 に答える