設定ファイル (.ebextensions) による高度な環境のカスタマイズ - AWS Elastic Beanstalk

設定ファイル (.ebextensions) による高度な環境のカスタマイズ

ウェブアプリケーションのソースコードに AWS Elastic Beanstalk 設定ファイル (.ebextensions) を追加することで、環境を設定し、環境に含まれる AWS リソースをカスタマイズできます。設定ファイルは、ファイル拡張子を .config とする YAML または JSON 形式のドキュメントです。この設定ファイルを .ebextensions というフォルダ内に配置してアプリケーションソースバンドルにデプロイします。

.ebextensions/network-load-balancer.config

この例では、簡単な設定変更を行います。環境ロードバランサーのタイプを Network Load Balancer に設定する設定オプションを変更します。

option_settings: aws:elasticbeanstalk:environment: LoadBalancerType: network

YAML 形式の設定ファイルを使用することをお勧めします。JSON よりも読みやすいためです。YAML では、コメント、複数行のコマンド、さまざまな引用符の使い方などがサポートされています。ただし、YAML を使用しても JSON を使用しても Elastic Beanstalk 設定ファイルで設定の変更を行う方法は同じです。

ヒント

新しい設定ファイルを開発またはテストする場合、デフォルトアプリケーションを実行するクリーンな環境を起動し、そこでデプロイします。設定ファイルが正しくフォーマットされていない場合、新しい環境の起動は失敗し、回復不可能になります。

設定ファイルの option_settings セクションは、設定オプションの値を定義します。設定オプションにより、Elastic Beanstalk 環境、同環境内の AWS リソース、アプリケーションを実行するソフトウェアを設定することができます。設定ファイルは、設定オプションを設定するいくつかの方法の 1 つに過ぎません。

Resources セクションでは、アプリケーションの環境内のリソースをさらにカスタマイズし、設定オプションが提供する機能では不可能な追加の AWS リソースの定義を実行できます。Elastic Beanstalk が環境の作成に使用する AWS CloudFormation によってサポートされているあらゆるリソースを追加して設定できます。

設定ファイルのその他のセクション(packagessourcesfilesusersgroupscommandscontainer_commandsservices)では、環境内で起動される EC2 インスタンスを設定できます。サーバーが環境内で起動される場合、Elastic Beanstalk は常にこれらのセクションで定義されたオペレーションを実行し、アプリケーションのためのオペレーティングシステムとストレージシステムを準備します。

一般的に使用される .ebextensions の例については、「Elastic Beanstalk Configuration Files Repository」を参照してください。

要件
  • 場所 - すべての設定ファイルを .ebextensions という 1 つのフォルダ (ソースバンドルのルート) に配置します。ドットで開始するフォルダは、ファイルブラウザで非表示になっている場合があるため、ソースバンドル作成時にフォルダが追加されていることを確認します。手順については、「アプリケーションソースバンドルを作成する」を参照してください。

  • 名前付け - 設定ファイルには、.config ファイル拡張子を加える必要があります。

  • 形式 - 設定ファイルは YAML または JSON 仕様に準拠する必要があります。

    YAML を使用する場合は、必ずスペースを使用して、異なるネストレベルごとにキーをインデントします。YAML の詳細については、YAML Ain't Markup Language (YAML™) Version 1.1 を参照してください。

  • 一意性 - 各設定ファイルで各キーを 1 回のみ使用します。

    警告

    同じ設定ファイルでキー (例: option_settings) を 2 回使用すると、いずれかのセクションは削除されます。重複セクションを 1 つのセクションにまとめるか、別々の設定ファイルに配置します。

デプロイするプロセスは、環境を管理するために使用しているクライアントによって少し異なります。詳細については、次のセクションを参照してください。