

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

# 環境の拡張ヘルスルールの設定
<a name="health-enhanced-rules"></a>

AWS Elastic Beanstalk 拡張ヘルスレポートは、環境のヘルスを判断するために一連のルールに依存します。これらのルールの一部は、特定のアプリケーションに適していない場合があります。一般的な例をいくつか以下に示します。
+ クライアント側のテストツールを使用する。この場合、HTTP クライアント (4xx) エラーが頻発することが予想されます。
+ [AWS WAF](https://docs.aws.amazon.com/waf/latest/developerguide/) を環境の Application Load Balancer と併用して不要な着信トラフィックをブロックします。この場合、Application Load Balancer は着信メッセージを拒否するたびに HTTP 403 を返します。

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

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

## Elastic Beanstalk コンソールを使用した拡張ヘルスレポートの設定
<a name="health-enhanced-rules.console"></a>

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

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

1. [Elastic Beanstalk コンソール](https://console.aws.amazon.com/elasticbeanstalk)を開き、**リージョン**リストで を選択します AWS リージョン。

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

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

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

1. [**Health monitoring rule customization**] で、該当する [**Ignore**] オプションを有効または無効にします。  
![\[Elastic Beanstalk コンソールのモニタリング設定ページのヘルスモニタリングルールのカスタマイズセクション\]](http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/images/enhanced-health-rule-customization.png)

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

## EB CLI を使用して拡張ヘルスルールを設定する
<a name="health-enhanced-rules.ebcli"></a>

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

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

1. [**eb init**](eb-cli3-configuration.md) でプロジェクトフォルダを初期化します。

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

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

   ```
   $ eb config save --cfg 01-base-state
   Configuration saved at: ~/project/.elasticbeanstalk/saved_configs/01-base-state.cfg.yml
   ```

1. 保存した設定ファイルをテキストエディタで開きます。

1. `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` オプション設定で、`Rules` と `CloudWatchMetrics` を組み合わせることができます。`CloudWatchMetrics` については、「[環境の Amazon CloudWatch カスタムメトリクスの発行](health-enhanced-cloudwatch.md)」で説明しています。  
以前に `CloudWatchMetrics` を有効にしている場合、**eb config save** コマンドを使用して取得した設定ファイルには、すでに `ConfigDocument` キーが `CloudWatchMetrics` セクションにあります。*削除しないでください*。同じ `ConfigDocument` オプション値に `Rules` セクションを追加します。

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

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

   ```
   $ eb config put 02-cloudwatch-enabled
   ```

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

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

   ```
   $ eb config --cfg 02-cloudwatch-enabled
   ```

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

## 設定ドキュメントを使用して拡張ヘルスルールを設定する
<a name="health-enhanced-rules.configdocument"></a>

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

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

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

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

```
$ 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
}
```