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

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

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

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

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

すべての環境で利用できる標準のオプションセットに加え、ほとんどの Elastic Beanstalk プラットフォームでは、言語固有またはフレームワーク固有の指定を行うことができます。これらは、[更新、モニタリング、およびロギングの設定] ページの [プラットフォームソフトウェア] セクションに表示され、次の形式を取ることができます。

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

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

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

Elastic Beanstalk コンソールでプラットフォーム固有の設定を指定するには
  1. Elastic Beanstalk コンソールを開き、[Regions] (リージョン) リストで AWS リージョンを選択します。

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

    注記

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

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

  4. [更新、モニタリング、ログ] の設定カテゴリで、[編集] を選択します。

  5. [プラットフォームソフトウェア] で、必要なオプション設定を変更します。

  6. ページの最下部で [適用] を選択し変更を保存します。

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

環境プロパティ (環境変数) の設定

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

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

環境変数

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

Elastic Beanstalk コンソールで環境プロパティを設定するには
  1. Elastic Beanstalk コンソールを開き、[Regions] (リージョン) リストで AWS リージョンを選択します。

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

    注記

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

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

  4. [更新、モニタリング、ログ] の設定カテゴリで、[編集] を選択します。

  5. [環境プロパティ] まで下にスクロールします。

  6. [環境プロパティの追加] を選択します。

  7. プロパティの [名前] と [値] のペアを入力します。

  8. さらに変数を追加する必要がある場合は、ステップ 6 および ステップ 7 を繰り返します。

  9. ページの最下部で [適用] を選択し変更を保存します。

環境プロパティの制限
  • キーには、英数字および記号 _ . : / + \ - @ を含めることができます。

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

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

    注記

    環境プロパティ値の一部の文字で囲う値はエスケープする必要があります。バックスラッシュ文字 (\) を使用して、いくつかの特殊文字と制御文字を表します。次のリストには、エスケープする必要があるいくつかの文字を表す例が含まれています。

    • バックスラッシュ (\) — \\ の使用を表す

    • 一重引用符 (') — \' の使用を表す

    • 二重引用符 (") — \" の使用を表す

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

  • 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");
  • .NET Core on LinuxEnvironment.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 リポジトリを参照してください。