

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 設定環境的增強型健康狀況規則
<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** (正常) 變更為 **Warning** (警告)、**Degraded** (降級) 或 **Severe** (嚴重)。若要正確處理如範例中所提的情況，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. 在導覽窗格中，選擇 **Configuration** (組態)。

1. 在 **Monitoring (監控)** 組態類別中，選擇 **Edit (編輯)**。

1. 在 **Health monitoring rule customization (運作狀態監控規則自訂)** 下，啟用或停用所需的 **Ignore (忽略)** 選項。  
![Elastic Beanstalk 主控台監控組態頁面上的運作狀態監控規則自訂部分](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/enhanced-health-rule-customization.png)

1. 若要儲存變更，請選擇頁面底部的**儲存變更**。

## 使用 EB CLI 設定增強型運作狀態規則
<a name="health-enhanced-rules.ebcli"></a>

您可以透過在本機儲存環境組態、新增設定增強型運作狀態規則的項目，然後將組態上傳到 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
   ...
   ```
**注意**  
您可將 `Rules` 和 `CloudWatchMetrics` 合併在相同的 `ConfigDocument` 選項設定中。`CloudWatchMetrics` 會在 [為環境發佈 Amazon CloudWatch 自訂指標](health-enhanced-cloudwatch.md) 中詳加說明。  
如果您之前已啟用 `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 會使用本機檔案。

## 使用 Config 文件設定增強型運作狀態規則
<a name="health-enhanced-rules.configdocument"></a>

適用於增強型運作狀態規則的組態 (config) 文件是 JSON 文件，其中列出要設定的規則。

以下範例顯示的 Config 文件停用應用程式 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
}
```