

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

# リスナールールの条件の種類
<a name="rule-condition-types"></a>

条件は、リスナールールを有効にするために受信リクエストが満たす必要がある基準を定義します。リクエストがルールの条件に一致する場合、リクエストはルールのアクションで指定されたとおりに処理されます。ルールのアクションごとにタイプと設定情報があります。Application Load Balancer は、リスナールールに対して次の条件タイプをサポートしています。条件の種類

`host-header`  
各リクエストのホスト名に基づいたルーティング。詳細については、「[ホストの条件](#host-conditions)」を参照してください。

`http-header`  
各リクエストの HTTP ヘッダーに基づいたルーティング。詳細については、「[HTTP ヘッダー条件](#http-header-conditions)」を参照してください。

`http-request-method`  
各リクエストの HTTP リクエストメソッドに基づいたルーティング。詳細については、「[HTTP リクエストメソッド条件](#http-request-method-conditions)」を参照してください。

`path-pattern`  
リクエスト URL のパスパターンに基づいたルーティング。詳細については、「[パスの条件](#path-conditions)」を参照してください。

`query-string`  
キーと値のペアまたはクエリストリングの値に基づいたルーティング。詳細については、「[クエリ文字列の条件](#query-string-conditions)」を参照してください。

`source-ip`  
各リクエストの送信元 IP アドレスに基づいたルーティング。詳細については、「[送信元 IP アドレス条件](#source-ip-conditions)」を参照してください。

**条件の基本**
+ 各ルールには、オプションで `host-header`、`http-request-method`、`path-pattern`、および `source-ip` の各条件を 0 または 1 つ含めることができます。各ルールには、`http-header` および `query-string` の各条件を 0 以上含めることもできます。
+ `host-header`、`http-header`、および `path-pattern` 条件では、値マッチングまたは正規表現 (正規表現) マッチングのいずれかを使用できます。
+ 1 つの条件につき最大 3 つの一致評価を指定できます。たとえば、各 `http-header` 条件に対して、リクエスト内の HTTP ヘッダーの値と比較する最大 3 つの文字列を指定できます。いずれかのストリングが HTTP ヘッダーの値と一致すれば、条件は満たされます。すべての文字列が一致することを要求するには、一致評価ごとに 1 つの条件を作成します。
+ 1 つのルールにつき最大 5 つの一致評価を指定できます。すべての文字列が一致であることを要求するには、一致評価ごとに1つの条件を作成します。
+ `http-header`、`host-header`、`path-pattern`、`query-string` 条件に対する一致評価にワイルドカード文字を含めることができます。1 ルールあたりのワイルドカード文字は 5 つまでです。
+ ルールは表示可能な ASCII 文字にのみ適用されます。制御文字 (0x00 ～ 0x1f および 0x7f) は除外されます。
+ ルール条件で使用される正規表現は、ルックアヘッド、ルックビハインド、バックリファレンス、アトミックグループ、所有する定量化子、サブルーチン、再帰、Unicode 文字クラス ( など) の機能をサポートしていません`\p{L}`。

**デモ**  
デモについては、「[Advanced Request Routing](https://exampleloadbalancer.com/advanced_request_routing_demo.html)」を参照してください。

## ホストの条件
<a name="host-conditions"></a>

ホストの条件を使用して、ホストヘッダーのホスト名に基づいてリクエストをルーティングする (*ホストベースのルーティング*とも呼ばれます) ルールを定義できます。これにより、1 つのロードバランサーを使用して複数のサブドメインおよび異なるトップレベルドメインをサポートできます。

ホスト名では大文字と小文字が区別されず、最大 128 文字までの次の文字を含めることができます。
+ A～Z、a～z、0～9
+ - .
+ \$1 (0 個以上の文字と一致します)
+ ? (厳密に 1 個の文字と一致します)

少なくとも 1 つの「.」文字を含める必要があります。最後の「.」の文字の後はアルファベット文字のみ含めることができます。

**ホスト名の例**
+ example.com
+ test.example.com
+ \$1.example.com

ルール \$1.example.com は、test.example.com には一致しますが、example.com には一致しません。

**Example ホストヘッダー条件の例**  
ルールの作成時、または変更時に条件を指定できます。詳細については、[create-rule](https://docs.aws.amazon.com/cli/latest/reference/elbv2/create-rule.html) および [modify-rule](https://docs.aws.amazon.com/cli/latest/reference/elbv2/modify-rule.html) コマンドを参照してください。  

```
[
  {
      "Field": "host-header",
      "HostHeaderConfig": {
          "Values": ["*.example.com"]
      }
  }
]
```

```
[
  {
      "Field": "host-header",
      "HostHeaderConfig": {
          "RegexValues": ["^(.*)\\.example\\.com$"]
      }
  }
]
```

## HTTP ヘッダー条件
<a name="http-header-conditions"></a>

HTTP ヘッダー条件を使用して、リクエストの HTTP ヘッダーに基づいてリクエストをルーティングするルールを設定できます。標準またはカスタムの HTTP ヘッダーフィールドの名前を指定できます。ヘッダー名と一致評価では大文字と小文字は区別されません。次のワイルドカード文字は比較文字列でサポートされています。\$1 (0 個以上の文字と一致) および ? (厳密に 1 文字と一致） ワイルドカード文字はヘッダー名ではサポートされていません。

Application Load Balancer 属性 `routing.http.drop_invalid_header_fields` を有効にすると、正規表現 (`A-Z,a-z,0-9`) に準拠しないヘッダー名が削除されます。正規表現に準拠しないヘッダー名を追加することもできます。

**Example HTTP ヘッダー条件の例**  
ルールの作成時、または変更時に条件を指定できます。詳細については、[create-rule](https://docs.aws.amazon.com/cli/latest/reference/elbv2/create-rule.html) および [modify-rule](https://docs.aws.amazon.com/cli/latest/reference/elbv2/modify-rule.html) コマンドを参照してください。以下の条件は、指定された文字列の 1 つに一致するユーザーエージェントヘッダーを使用するリクエストによって満たされます。  

```
[
  {
      "Field": "http-header",
      "HttpHeaderConfig": {
          "HttpHeaderName": "User-Agent",
          "Values": ["*Chrome*", "*Safari*"]
      }
  }
]
```

```
[
  {
      "Field": "http-header",
      "HttpHeaderConfig": {
          "HttpHeaderName": "User-Agent",
          "RegexValues": [".+"]
      }
  }
]
```

## HTTP リクエストメソッド条件
<a name="http-request-method-conditions"></a>

HTTP リクエストメソッド条件を使用して、リクエストの HTTP リクエストメソッドに基づいてリクエストをルーティングするルールを設定できます。標準またはカスタムの HTTP メソッドを指定できます。一致評価は大文字と小文字を区別します。ワイルドカード文字はサポートされていません。したがって、メソッド名は厳密な一致である必要があります。

HEAD リクエストに対する応答はキャッシュされる可能性があるため、GET リクエストと HEAD リクエストを同じ方法でルーティングすることをお勧めします。

**Example HTTP メソッド条件の例**  
ルールの作成時、または変更時に条件を指定できます。詳細については、[create-rule](https://docs.aws.amazon.com/cli/latest/reference/elbv2/create-rule.html) および [modify-rule](https://docs.aws.amazon.com/cli/latest/reference/elbv2/modify-rule.html) コマンドを参照してください。以下の条件は、指定されたメソッドを使用するリクエストによって満たされます。  

```
[
  {
      "Field": "http-request-method",
      "HttpRequestMethodConfig": {
          "Values": ["CUSTOM-METHOD"]
      }
  }
]
```

## パスの条件
<a name="path-conditions"></a>

パスの条件を使用して、リクエスト内の URL に基づいてリクエストをルーティングするルールを定義できます (*パスベースのルーティング*とも呼ばれます)。

パスパターンは URL のパスにのみ適用され、クエリパラメータには適用されません。表示可能な ASCII 文字にのみ適用されます。制御文字 (0x00 ～ 0x1f および 0x7f) は除外されます。

このルール評価は URI 正規化が発生した後にのみ実行されます。

パスパターンでは大文字と小文字が区別され、最大 128 文字までの次の文字を含めることができます。
+ A～Z、a～z、0～9
+ \$1 - . \$1 / \$1 " ' @ : \$1
+ & (&amp; を使用)
+ \$1 (0 個以上の文字と一致します)
+ ? (厳密に 1 個の文字と一致します)

プロトコルバージョンが grPC の場合は、パッケージ、サービス、またはメソッドに固有の条件を指定できます。

**HTTP パスパターンの例**
+ `/img/*`
+ `/img/*/pics`

**grPC パスパターンの例**
+ /package
+ /package.service
+ /package.service/method

パスパターンはリクエストのルーティングに使用されますが、変更はしません。例えば、ルールにパスパターン `/img/*` がある場合、ルールは `/img/picture.jpg` のリクエストを `/img/picture.jpg` のリクエストとして、指定されたターゲットグループに転送します。

**Example パスパターン条件の例**  
ルールの作成時、または変更時に条件を指定できます。詳細については、[create-rule](https://docs.aws.amazon.com/cli/latest/reference/elbv2/create-rule.html) および [modify-rule](https://docs.aws.amazon.com/cli/latest/reference/elbv2/modify-rule.html) コマンドを参照してください。以下の条件は、指定された文字列を含む URL を使用するリクエストによって満たされます。  

```
[
  {
      "Field": "path-pattern",
      "PathPatternConfig": {
          "Values": ["/img/*"]
      }
  }
]
```

```
[
  {
      "Field": "path-pattern",
      "PathPatternConfig": {
          "RegexValues": ["^\\/api\\/(.*)$"]
      }
  }
]
```

## クエリ文字列の条件
<a name="query-string-conditions"></a>

クエリ文字列の条件を使用して、キー/値のペアまたはクエリ文字列内の値に基づいてリクエストをルーティングするルールを設定できます。一致評価では大文字と小文字は区別されません。次のワイルドカード文字はサポートされています。\$1 (0 個以上の文字と一致) および ? (厳密に 1 文字と一致)

**Example クエリ文字列の条件の例**  
ルールの作成時、または変更時に条件を指定できます。詳細については、[create-rule](https://docs.aws.amazon.com/cli/latest/reference/elbv2/create-rule.html) および [modify-rule](https://docs.aws.amazon.com/cli/latest/reference/elbv2/modify-rule.html) コマンドを参照してください。次の条件は、「version = v1」のキー/値ペア、または「example」に設定されたキーのいずれかを含むクエリ文字列を使用するリクエストによって満たされます。  

```
[
  {
      "Field": "query-string",
      "QueryStringConfig": {
          "Values": [
            {
                "Key": "version", 
                "Value": "v1"
            },
            {
                "Value": "*example*"
            }
          ]
      }
  }
]
```

## 送信元 IP アドレス条件
<a name="source-ip-conditions"></a>

送信元 IP アドレス条件を使用して、リクエストの送信元 IP アドレスに基づいてリクエストをルーティングするルールを設定できます。IP アドレスは CIDR 形式で指定する必要があります。IPv4 と IPv6 の両方のアドレスを使用できます。ワイルドカード文字はサポートされていません。送信元 IP ルール条件に `255.255.255.255/32` CIDR を指定することはできません。

クライアントがプロキシの背後にある場合、これはクライアントの IP アドレスではなくプロキシの IP アドレスです。

この条件は、X-Forwarded-For ヘッダーのアドレスでは満たされません。X-Forwarded-For ヘッダー内のアドレスを検索するに`http-header` 条件を使用します。

**Example 送信元 IP 条件の例**  
ルールの作成時、または変更時に条件を指定できます。詳細については、[create-rule](https://docs.aws.amazon.com/cli/latest/reference/elbv2/create-rule.html) および [modify-rule](https://docs.aws.amazon.com/cli/latest/reference/elbv2/modify-rule.html) コマンドを参照してください。次の条件は、指定された CIDR ブロックの 1 つの送信元 IP アドレスを使用するリクエストによって満たされます。  

```
[
  {
      "Field": "source-ip",
      "SourceIpConfig": {
          "Values": ["192.0.2.0/24", "198.51.100.10/32"]
      }
  }
]
```