環境の拡張ヘルスルールの設定 - 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 コンソールを開き、リージョンのドロップダウンリストでリージョンを選択します。

  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 }