環境の拡張ヘルスルールの設定 - AWS Elastic Beanstalk

環境の拡張ヘルスルールの設定

AWS Elastic Beanstalk 拡張ヘルスレポートは、環境のヘルスを判断するための一連のルールに依存しています。これらのルールの一部は、特定のアプリケーションに適していない場合があります。一般的な例をいくつか以下に示します。

  • クライアント側のテストツールを使用する。この場合、HTTP クライアント (4xx) エラーが頻発することが予想されます。

  • AWS WAF を環境の Application Load Balancer と併用して不要な着信トラフィックをブロックする。この場合、Application Load Balancer は着信メッセージを拒否するたびに HTTP 403 を返します。

デフォルトでは、Elastic Beanstalk はアプリケーションのすべての HTTP 4xx エラーを反映して環境のヘルスを判断します。これにより、環境のヘルスステータスが [OK] から [Warning]、[Degraded]、または [Severe] へと、エラー率に応じて変更されます。上のような例に正しく対処するために、Elastic Beanstalk ではいくつかの拡張ヘルスルールを設定できます。環境のインスタンスでアプリケーションの HTTP 4xx エラーを無視するか、環境のロードバランサーから返された HTTP 4xx エラーを無視するかを選択できます。このトピックでは、これらの設定変更を行う方法について説明します。

注記

現在利用できる拡張ヘルスルールのカスタマイズは以上のみです。4xx 以外の HTTP エラーを無視するように拡張ヘルスを設定することはできません。

Elastic Beanstalk コンソールを使用して拡張ヘルスルールを設定する

Elastic Beanstalk コンソールを使用して環境で拡張ヘルスルールを設定できます。

Elastic Beanstalk コンソールを使用して HTTP 4xx ステータスコードのチェックを設定するには

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

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

    注記

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

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

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

  5. [Health monitoring rule customization] で、該当する [Ignore] オプションを有効または無効にします。

    
            Elastic Beanstalk コンソールのモニタリング設定ページのヘルスモニタリングルールのカスタマイズセクション
  6. [Apply] を選択します。

EB CLI を使用して拡張ヘルスルールを設定する

EB CLI を使用すると、環境の設定をローカルに保存し、拡張ヘルスルールを設定するエントリを追加してから、その設定を Elastic Beanstalk にアップロードすることによって、拡張ヘルスルールを設定できます。保存した設定は、環境を作成する前または作成した後に環境に適用できます。

EB CLI および保存済みの設定を使用して HTTP 4xx ステータスコードのチェックを設定するには

  1. eb init でプロジェクトフォルダを初期化します。

  2. eb create コマンドを実行して、環境を作成します。

  3. eb config save コマンドを実行して、設定テンプレートをローカルに保存します。次の例では、--cfg オプションを使用して、設定の名前が指定されています。

    $ eb config save --cfg 01-base-state Configuration saved at: ~/project/.elasticbeanstalk/saved_configs/01-base-state.cfg.yml
  4. 保存した設定ファイルをテキストエディタで開きます。

  5. OptionSettings > aws:elasticbeanstalk:healthreporting:system: で、設定する各拡張ヘルスルールを一覧表示する ConfigDocument キーを追加します。次の ConfigDocument では、ロードバランサーの HTTP 4xx コードのチェックを有効にしたままで、アプリケーションの HTTP 4xx ステータスコードのチェックを無効にします。

    OptionSettings: ... aws:elasticbeanstalk:healthreporting:system: ConfigDocument: Rules: Environment: Application: ApplicationRequests4xx: Enabled: false ELB: ELBRequests4xx: Enabled: true Version: 1 SystemType: enhanced ...
    注記

    同じ ConfigDocument オプション設定で、RulesCloudWatchMetrics を組み合わせることができます。CloudWatchMetrics については、環境の Amazon CloudWatch カスタムメトリクスのパブリッシュ で説明しています。

    以前に CloudWatchMetrics を有効にしている場合、eb config save コマンドを使用して取得した設定ファイルには、すでに ConfigDocument キーが CloudWatchMetrics セクションにあります。削除しないでください。同じ ConfigDocument オプション値に Rules セクションを追加します。

  6. 設定ファイルを保存し、テキストエディタを閉じます。この例では、更新した設定ファイルは、ダウンロードした設定ファイルとは異なる名前 (02-cloudwatch-enabled.cfg.yml) で保存されています。このファイルがアップロードされると、別の保存済み設定が作成されます。ダウンロードしたファイル同じ名前を使用すると、新しいキーペアを作成せずに既存の設定を上書きできます。

  7. eb config put コマンドを使用して、更新した設定ファイルを Elastic Beanstalk にアップロードします。

    $ eb config put 02-cloudwatch-enabled

    保存した設定に対して eb config get コマンドと put コマンドを使用するときは、ファイル名の拡張子を含めないでください。

  8. 実行中の環境に、保存済みの設定を適用します。

    $ eb config --cfg 02-cloudwatch-enabled

    --cfg オプションは、環境に適用される名前付き設定ファイルを指定します。設定ファイルはローカルまたは Elastic Beanstalk に保存できます。指定した名前を持つ設定ファイルが両方の場所に存在する場合、EB CLI はローカルファイルを使用します。

設定ドキュメントを使用して拡張ヘルスルールを設定する

拡張ヘルスルールの設定 (config) ドキュメントは、設定するルールを一覧表示した JSON ドキュメントです。

次の例に示す設定ドキュメントでは、アプリケーションの HTTP 4xx ステータスコードのチェックを無効にし、ロードバランサーの HTTP 4xx ステータスコードのチェックを有効にします。

{ "Rules": { "Environment": { "Application": { "ApplicationRequests4xx": { "Enabled": false } }, "ELB": { "ELBRequests4xx": { "Enabled": true } } } }, "Version": 1 }

AWS CLI では、JSON オブジェクトであるオプション設定引数の Value キーの値としてドキュメントを渡します。この場合、埋め込まれているドキュメントの引用符はエスケープする必要があります。次のコマンドは、設定が有効であるかどうかを確認します。

$ aws elasticbeanstalk validate-configuration-settings --application-name my-app --environment-name my-env --option-settings '[ { "Namespace": "aws:elasticbeanstalk:healthreporting:system", "OptionName": "ConfigDocument", "Value": "{\"Rules\": { \"Environment\": { \"Application\": { \"ApplicationRequests4xx\": { \"Enabled\": false } }, \"ELB\": { \"ELBRequests4xx\": {\"Enabled\": true } } } }, \"Version\": 1 }" } ]'

YAML の .ebextensions 設定ファイルの場合は、JSON ドキュメントをそのまま提供できます。

option_settings: - namespace: aws:elasticbeanstalk:healthreporting:system option_name: ConfigDocument value: { "Rules": { "Environment": { "Application": { "ApplicationRequests4xx": { "Enabled": false } }, "ELB": { "ELBRequests4xx": { "Enabled": true } } } }, "Version": 1 }