環境プロパティとその他のソフトウェアの設定 - AWS Elastic Beanstalk

環境プロパティとその他のソフトウェアの設定

[Modify software configuration (ソフトウェア設定の変更)] ページでは、アプリケーションを実行する Amazon Elastic Compute Cloud (Amazon EC2) インスタンスでソフトウェアを設定できます。環境プロパティ、AWS X-Ray デバッグ、インスタンスログの保存とストリーミング、およびプラットフォーム固有の設定を構成できます。


      ソフトウェア設定の変更ページ

プラットフォーム固有の設定を構成する

すべての環境で利用できる標準のオプションセットに加え、ほとんどの Elastic Beanstalk プラットフォームでは、言語固有またはフレームワーク固有の指定を行うことができます。これらは、[Modify Software (ソフトウェアの変更)] ページの [Platform options (プラットフォームのオプション)] セクションに表示され、次の形式を取ることができます。

  • プリセットの環境プロパティ – Ruby プラットフォームでは、RACK_ENV および BUNDLE_WITHOUT のようなフレームワーク設定の環境プロパティを使用します。

  • プレースホルダーの環境プロパティ – Tomcat プラットフォームでは、いかなる値にも設定されない JDBC_CONNECTION_STRING という名前の環境プロパティを定義します。この設定タイプは、旧式のプラットフォームバージョンで一般的でした。

  • 設定オプション – ほとんどのプラットフォームでは、aws:elasticbeanstalk:xrayaws:elasticbeanstalk:container:python などのプラットフォーム固有または共有の名前空間で設定オプションを定義します。

Elastic Beanstalk コンソールでプラットフォーム固有の設定を構成するには

  1. Elastic Beanstalk コンソールを開き、[リージョン] のリストで AWS リージョンを選択します。

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

    注記

    環境が多数ある場合は、検索バーを使用して環境リストをフィルタリングします。

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

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

  5. [Platform options (プラットフォームのオプション)] で、必要なオプション設定を変更します。

  6. [Apply] を選択します。

プラットフォーム固有のオプションと、コードで環境プロパティ値を取得する方法の詳細については、該当する言語やフレームワークのプラットフォームトピックを参照してください。

環境プロパティを設定する

[environment properties] を使用して、シークレット、エンドポイント、デバッグ設定などの情報をアプリケーションに渡すことができます。環境プロパティは、開発、テスト、ステージング、本稼働などのさまざまな目的で、複数の環境のアプリケーションを実行するのに役立ちます。

さらに、データベースを環境に追加すると、Elastic Beanstalk は、アプリケーションコードで読み込むことができる RDS_HOSTNAME などの環境プロパティを設定して、接続オブジェクトまたは文字列を作成します。

環境変数

ほとんどの場合、環境プロパティは、環境変数としてアプリケーションに渡されますが、その動作はプラットフォームによって異なります。たとえば、Java SE プラットフォームでは、System.getenv を使用して取得する環境変数を設定するのに対し、Tomcat プラットフォームでは、System.getProperty を使用して取得する Java システムプロパティを設定します。一般的に、インスタンスに接続して env を実行する場合、プロパティは表示されません

Elastic Beanstalk コンソールで環境プロパティを設定するには

  1. Elastic Beanstalk コンソールを開き、[リージョン] のリストで AWS リージョンを選択します。

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

    注記

    環境が多数ある場合は、検索バーを使用して環境リストをフィルタリングします。

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

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

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

    
        [ソフトウェア設定の変更] ページの [環境プロパティ] セクション
  6. [Apply] を選択します。

環境プロパティの制限

  • キーには、英数字および記号 _ . : / + \ - @ を含めることができます。

    上記の記号は、環境プロパティーキーには使用できますが、環境のプラットフォームの環境変数名には使用できない場合があります。すべてのプラットフォームとの互換性を考慮して、環境プロパティには次のパターン ([A-Z_][A-Z0-9_]*) のみ使用してください。

  • には、英数字、空白、および記号 _ . : / = + \ - @ ' " を含めることができます。

    注記

    一重引用符および二重引用符で囲う値はエスケープする必要があります。

  • キーの長さは最大 128 文字です。の長さは最大 256 文字です。

  • キーは大文字と小文字が区別されます。

  • key=value の形式の文字列として保存されている場合は、すべての環境プロパティの合計サイズが 4,096 バイトを超えることはできません。

ソフトウェア設定の名前空間

設定ファイルを使用して、設定オプションを設定し、デプロイの間、他のインスタンス設定タスクを実行できます。設定オプションは、Elastic Beanstalk サービスまたは使用できるプラットフォームで定義し、名前空間に整理できます。

環境プロパティと設定オプションをソースコードで設定するには、Elastic Beanstalk の設定ファイルを使用できます。aws:elasticbeanstalk:application:environment名前空間を使用して、環境プロパティを定義します。

例 .ebextensions/options.config

option_settings: aws:elasticbeanstalk:application:environment: API_ENDPOINT: www.example.com/api

設定ファイルまたは AWS CloudFormation のテンプレートを使用してカスタムリソースを作成する場合は、AWS CloudFormation 関数を使用してリソースに関する情報を取得し、デプロイ時に環境プロパティに動的に割り当てることができます。以下、GitHub リポジトリの elastic-beanstalk-samples の例では、Ref 関数を使用して、作成される Amazon SNS トピックの ARN を取得し、NOTIFICATION_TOPIC という名前の環境プロパティに割り当てています。

コメント
  • AWS CloudFormation 関数を使用して環境プロパティを定義する場合、関数が評価される前に、Elastic Beanstalk コンソールにプロパティの値が表示されます。get-config プラットフォームスクリプトを使用して、アプリケーションで使用できる環境プロパティの値を確認できます。

  • 複数コンテナ Docker プラットフォームでは、コンテナリソースを作成するために AWS CloudFormation を使用しません。そのため、このプラットフォームでは AWS CloudFormation 関数を使用して環境プロパティを定義することができません。

例 .Ebextensions/sns-topic.config

Resources: NotificationTopic: Type: AWS::SNS::Topic option_settings: aws:elasticbeanstalk:application:environment: NOTIFICATION_TOPIC: '`{"Ref" : "NotificationTopic"}`'

また、この機能を使用して、AWS CloudFormation 疑似パラメータの情報を反映させることもできます。この例では、現在のリージョンを取得して、AWS_REGION という名前のプロパティに割り当てています。

例 .Ebextensions/env-regionname.config

option_settings: aws:elasticbeanstalk:application:environment: AWS_REGION: '`{"Ref" : "AWS::Region"}`'

ほとんどの Elastic Beanstalk プラットフォームでは、アプリケーションにリクエストを中継するリバースプロキシなど、インスタンス上で実行されるソフトウェア設定するオプションを指定して、その他の名前空間を定義します。プラットフォームで利用できる名前空間に関する詳細については、以下のいずれかのセクションを参照してください。

Elastic Beanstalk には、環境をカスタマイズするための多数の設定オプションが用意されています。設定ファイルに加えて、コンソール、保存された設定、EB CLI、または AWS CLI を使用して、設定オプションを指定することもできます。詳細については、「設定オプション」を参照してください。

環境プロパティへのアクセス

ほとんどの場合、アクセスするアプリケーションコードの環境プロパティは、環境変数に似ています。ただし、環境プロパティは、通常アプリケーションにのみ渡されるため、環境内のインスタンスに接続し、env を実行して表示することはできません。

  • Goos.Getenv

    endpoint := os.Getenv("API_ENDPOINT")
  • Java SESystem.getenv

    String endpoint = System.getenv("API_ENDPOINT");
  • TomcatSystem.getProperty

    String endpoint = System.getProperty("API_ENDPOINT");
  • Linux 上の .NET コアEnvironment.GetEnvironmentVariable

    string endpoint = Environment.GetEnvironmentVariable("API_ENDPOINT");
  • .NETappConfig

    NameValueCollection appConfig = ConfigurationManager.AppSettings; string endpoint = appConfig["API_ENDPOINT"];
  • Node.jsprocess.env

    var endpoint = process.env.API_ENDPOINT
  • PHP$_SERVER

    $endpoint = $_SERVER['API_ENDPOINT'];
  • Pythonos.environ

    import os endpoint = os.environ['API_ENDPOINT']
  • RubyENV

    endpoint = ENV['API_ENDPOINT']

デプロイ時に実行するスクリプトなど、アプリケーションコードを使用せずに環境プロパティにアクセスするには、get-configプラットフォームスクリプトを使用します。get-config を使用する設定の例については、GitHub の elastic-beanstalk-samples リポジトリを参照してください。