

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 为环境配置增强型运行状况规则
<a name="health-enhanced-rules"></a>

Amazon Elastic Beanstalk 增强型运行状况报告依赖于一组规则来确定环境的运行状况。其中一些规则可能不适合您的特定应用程序。以下是一些常见的示例：
+ 您使用客户端测试工具。在这种情况下，预计会频繁出现 HTTP 客户端 (4xx) 错误。
+ 您将 [Amazon WAF](https://docs.amazonaws.cn/waf/latest/developerguide/) 与环境的 Application Load Balancer 结合使用来阻止不需要的传入流量。在这种情况下，Application Load Balancer 为每条被拒绝的传入消息返回 HTTP 403。

默认情况下，Elastic Beanstalk 在确定环境的运行状况时会将所有应用程序 HTTP 4xx 错误纳入考虑。它会根据错误率将环境运行状况从**良好**更改为**警告**、**降级**或**严重**。您可以通过 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.amazonaws.cn/elasticbeanstalk) 控制台，然后**在 “区域” 列表中，选择您**的。 Amazon Web Services 区域

1. 在导航窗格中，选择 **Environments**（环境），然后从列表中选择环境的名称。

1. 在导航窗格中，选择 **Configuration**（配置）。

1. 在 **Monitoring (监控)** 配置类别中，选择 **Edit (编辑)**。

1. 在 **Health monitoring rule customization (运行状况监控规则自定义)** 下，启用或禁用所需的 **Ignore (忽略)** 选项。  
![\[Elastic Beanstalk 控制台的“监控配置”页面上的“运行状况监控规则自定义”部分\]](http://docs.amazonaws.cn/elasticbeanstalk/latest/dg/images/enhanced-health-rule-customization.png)

1. 要保存更改，请选择页面底部的 **Apply**（应用）。

## 使用 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`。[为环境发布 Amazon CloudWatch 自定义指标](health-enhanced-cloudwatch.md)中介绍了 `CloudWatchMetrics`。  
如果您之前启用了 `CloudWatchMetrics`，则您使用 **eb config save** 命令检索的配置文件在 `ConfigDocument` 部分中已经具有 `CloudWatchMetrics` 键。*请勿删除它* - 将 `Rules` 部分添加到相同的 `ConfigDocument` 选项值中。

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

对于 Amazon 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
}
```