

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

# メトリクスフィルター、サブスクリプションフィルター、フィルターログイベント、およびライブテールのフィルターパターン構文
<a name="FilterAndPatternSyntax"></a>

**注記**  
Amazon CloudWatch Logs Insights のクエリ言語でロググループをクエリする方法については、[CloudWatch Logs Insights 言語のクエリ構文](CWL_QuerySyntax.md) を参照してください。

CloudWatch Logs では、[メトリクスフィルター](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/MonitoringLogData.html)を使用してログデータを実用的なメトリクスに変換し、[サブスクリプションフィルター](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/SubscriptionFilters.html)を使用してログイベントを他の AWS サービスにルーティングし、[ログイベントをフィルタリング](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/SearchDataFilterPattern.html)してログイベントを検索し、[Live Tail](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CloudWatchLogs_LiveTail.html) を使用してログを取り込み時にインタラクティブにリアルタイムで表示できます。

フィルターパターンは、メトリクスフィルター、サブスクリプションフィルター、ログイベント、Live Tail がログイベントの語句を照合するために使用する構文を構成します。語句には、単語、正確なフレーズ、または数値を指定できます。正規表現 (regex) は、スタンドアロンのフィルターパターンの作成に使用するか、JSON やスペース区切りのフィルターパターンに組み込むことができます。

照合する語句を使用してフィルターパターンを作成します。フィルターパターンは、定義する語句を含むログイベントのみを返します。CloudWatch コンソールでフィルターパターンをテストできます。

**Topics**
+ [サポートされている正規表現 (regex) 構文](#regex-expressions)
+ [フィルターパターンを使用した正規表現 (regex) の語句の一致](#matching-terms-regex)
+ [フィルターパターンを使用した非構造化ログイベントの語句の一致](#matching-terms-unstructured-log-events)
+ [フィルターパターンを使用した JSON ログイベントの語句の一致](#matching-terms-json-log-events)
+ [フィルターパターンを使用したスペース区切りのログイベントでの語句の一致](#matching-term-space-delimited-log-events)

## サポートされている正規表現 (regex) 構文
<a name="regex-expressions"></a>

### サポートされている regex 構文
<a name="regex-expressions-collapsible"></a>

regex を使用してログデータを検索とフィルタリングする際は、その式を `%` で囲む必要があります。

regex を使ったフィルターパターンには、次のものしか含めることができません
+ 英数字 - 英数字とは、文字 (A〜Z または a〜z) または数字 (0～9) を指します。
+ サポートされている記号文字 - これには、「`_`」、「`#`」、「`=`」、「`@`」、「`/`」、「`;`」、「`,`」、「`:`」、「`-`」が含まれます。たとえば、「`!`」はサポートされていないため、`%something!%` は拒否されます。
+ サポートされている演算子 - これには、「`^`」、「`$`」、「`?`」、「`[`」、「`]`」、「`{`」、「`}`」、「`|`」、「`\`」、「`*`」、「`+`」、「`.`」が含まれます。

`(` と `)` 演算子はサポートされていません。括弧を使用してサブパターンを定義することはできません。

マルチバイト文字はサポートされていません。

**注記**  
**クォータ**  
メトリクスフィルターまたはサブスクリプションフィルターを作成するとき、ロググループごとに regex を含むフィルターパターンが最大 5 つあります。  
メトリクスフィルターとサブスクリプションフィルターの区切りまたは JSON フィルターパターンを作成するとき、またはログイベントまたはライブテールをフィルタリングするとき、フィルターパターンごとに 2 つの regex の制限があります。

**[サポートされている演算子の使い方]**
+ `^`:文字列の先頭の一致。たとえば、`%^[hc]at%` は「hat」と「cat」を一致とみなしますが、文字列の先頭でのみ適用されます。
+ `$`: 文字列の末尾の一致。たとえば、`%[hc]at$%` は「hat」と「cat」を一致とみなしますが、文字列の末尾でのみ適用されます。
+ `?`: 前述の用語の出現を 0 回または 1 回一致させます。たとえば、`%colou?r%` は「color」と「colour」を一致とみなします。
+ `[]`: 文字クラスを定義します。括弧内の文字リストまたは文字範囲との一致。たとえば、`%[abc]%` は「a」、「b」、「c」を一致とみなします。`%[a-z]%` は「a」から「z」までのすべての小文字を一致とみなします。`%[abcx-z]%` は「a」、「b」、「c」、「x」、「y」、「z」を一致とみなします。
+ `{m, n}`: *m* 以上の前の語句と一致し、*n* 回を超えることはありません。たとえば、`%a{3,5}% ` は「aaa」、「aaaa」、「aaaaa」 のみを一致とみなします。
**注記**  
最小値または最大値を定義しない場合、*m* と *n* のいずれかを省略できます。
+ `|`: 垂直バーのどちら側の語句と一致するブール値「Or」。例えば、次のようになります。
  + `%gra|ey%` は「gray」または「grey」と一致できます
  + `%^starting|^initializing|^shutting down%` は「開始中...」、「初期化中...」、または「シャットダウン中」と一致できますが、「スキッピング初期化中...」とは一致しません。
  + `%abcc|ab[^c]$` は「abcc ...」と「aba ...」に一致できますが、「aac ...」には一致しません
+ `\`: 演算子の特殊な意味ではなく、文字通りの意味を使用できるようにするエスケープ文字。たとえば、「[a]」、「[b]」、「[7]」、「[@]」、「[]]」、「[ ]」などのように、括弧がエスケープされるため、`%\[.\]%`は「[」と「]」で囲まれたすべての 1 文字を一致とみなします。
**注記**  
` %10\.10\.0\.1%` は、IP アドレス 10.10.0.1 を一致とみなす regex を作成する正しい方法です。
+ `*`: 前の語句のインスタンスが 0 以上一致。たとえば、` %ab*c% ` は「ac」、「abc」、「abbbc」と一致できます。`%ab[0-9]*%` は「ab」、「ab0」、「ab129」を一致とみなします。
+ `+`: 前の語句のインスタンスが 1 以上一致。たとえば、`%ab+c%` は「abc」、「abbc」、「abbbc」を一致とみなしますが、「ac」を一致とみなしません。
+ `.`: すべての 1 文字と一致します。たとえば、「hat」、「cat」、「bat」、「4at」、「\$1at」、「 at」 (先頭にスペース)を含め、`%.at%` は「at」で終わるすべての 3 文字の文字列を一致とみなします。
**注記**  
 IP アドレスと一致させる regex を作成するとき、`.` 演算子からエスケープすることが重要です。たとえば、`%10.10.0.1%` は「10010,051」を一致とみなしますが、これは表現の本来の用途とは異なる場合があります。
+ `\d`、`\D` : 数字または数字以外の文字を一致とみなします。たとえば、`%\d%` は `%[0-9]%` と同等であり、`%\D%` は `%[^0-9]%` と同等です。
**注記**  
大文字の演算子は、対応する小文字の逆を表します。
+ `\s`、`\S`: 空白文字または非空白文字を一致とみなします。
**注記**  
大文字の演算子は、対応する小文字の逆を表します。空白文字にはタブ (`\t`)、スペース (` `)、改行 (`\n`)文字が含まれます。
+ `\w`、`\W`: 英数字または非英数字と一致します。たとえば、`%\w%` は `%[a-zA-Z_0-9]%` と同等であり、`%\W%` は `%[^a-zA-Z_0-9]%` と同等です。
**注記**  
大文字の演算子は、対応する小文字の逆を表します。
+ `\xhh`: 2 桁の 16 進文字の ASCII マッピングと一致します。`\x`は、次の文字が ASCII の 16 進値を表すことを示すエスケープ シーケンスです。`hh`は、ASCII 表の文字を指す 2 つの 16 進数字(0 ～ 9 と A 〜 F)を指定します。
**注記**  
`\xhh` を使用してフィルターパターンでサポートされていない記号文字を一致とみなすことができます。たとえば、`%\x3A%` は `:` を一致とみなし、`%\x28%` は `(` を一致とみなします。

## フィルターパターンを使用した正規表現 (regex) の語句の一致
<a name="matching-terms-regex"></a>

### regex を使用した語句の一致
<a name="matching-terms-regex-collapsible"></a>

`%` (regex パターン前後のパーセント記号) で囲まれた regex パターンを使用し、ログイベントの語句を一致とみなすことができます。次のコードスニペットでは、**[許可された]**キーワードで構成されているすべてのログイベントを返すフィルターパターンの例が示されています。

サポートされている正規表現のリストについては、[「サポートされている正規表現」](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/FilterAndPatternSyntax.html#regex-expressions)を参照してください。

```
  %AUTHORIZED%
```

このフィルターパターンは、次のようなログイベントメッセージを返します。
+ `[ERROR 401] UNAUTHORIZED REQUEST`
+ `[SUCCESS 200] AUTHORIZED REQUEST`

## フィルターパターンを使用した非構造化ログイベントの語句の一致
<a name="matching-terms-unstructured-log-events"></a>

### 非構造化ログイベントの語句の一致
<a name="matching-terms-unstructured-log-events-collapsible"></a>

 次の例には、フィルターパターンを使用して非構造化ログイベントで語句をマッチさせる方法について示すコードスニペットが含まれています。

**注記**  
フィルターパターンでは大文字と小文字が区別されます。英数字以外の文字を含む正確なフレーズと語句を、二重引用符 (**[""]**) で囲みます。

------
#### [ Example: Match a single term ]

次のコードスニペットは、メッセージに **[*ERROR*]** という単語が含まれるすべてのログイベントを返す単一の語句のフィルターパターンの例を示しています。

```
ERROR
```

このフィルターパターンは、次のようなログイベントメッセージを一致とみなします。
+ `[ERROR 400] BAD REQUEST`
+ `[ERROR 401] UNAUTHORIZED REQUEST`
+ `[ERROR 419] MISSING ARGUMENTS`
+ `[ERROR 420] INVALID ARGUMENTS`

------
#### [ Example: Match multiple terms ]

次のコードスニペットは、メッセージに ***ERROR*** と ***ARGUMENTS*** という単語が含まれるすべてのログイベントを返す複数の語句のフィルターパターンの例を示しています。

```
ERROR ARGUMENTS
```

フィルターは、次のようなログイベントメッセージを返します。
+ `[ERROR 419] MISSING ARGUMENTS`
+ `[ERROR 420] INVALID ARGUMENTS`

次のログイベントメッセージにはフィルターパターンで指定された語句が両方とも含まれないため、このフィルターパターンでは返されません。
+ `[ERROR 400] BAD REQUEST`
+ `[ERROR 401] UNAUTHORIZED REQUEST`

------
#### [ Example: Match optional terms ]

パターン一致を使用し、オプション語句を含むログイベントを返すフィルターパターンを作成できます。照合する語句の前に疑問符 (「?」) を配置します。次のコードスニペットは、メッセージに ***ERROR*** または ***ARGUMENTS*** という単語が含まれるすべてのログイベントを返すフィルターパターンの例を示しています。

```
?ERROR ?ARGUMENTS
```

このフィルターパターンは、次のようなログイベントメッセージを一致とみなします。
+ `[ERROR 400] BAD REQUEST`
+ `[ERROR 401] UNAUTHORIZED REQUEST`
+ `[ERROR 419] MISSING ARGUMENTS`
+ `[ERROR 420] INVALID ARGUMENTS`

**注記**  
疑問符 (「?」) を他のフィルターパターン (「含む」や「除外」の条件など) と組み合わせることはできません。「?」を他のフィルターパターンと組み合わせると、すべての疑問符は無視されます。  
例えば、次のフィルターパターンは `REQUEST` という単語を含むすべてのイベントにマッチしますが、疑問符 (「?」) は無視され、何ら影響力を持ちません。  

```
?ERROR ?ARGUMENTS REQUEST
```
ログイベントのマッチ  
`[INFO] REQUEST FAILED`
`[WARN] UNAUTHORIZED REQUEST`
`[ERROR] 400 BAD REQUEST`

------
#### [ Example: Match exact phrases ]

次のコードスニペットは、メッセージに ***INTERNAL SERVER ERROR*** という正確なフレーズが含まれるログイベントを返すフィルターパターンの例を示しています。

```
"INTERNAL SERVER ERROR"
```

このフィルターパターンは、次のログイベントメッセージを返します
+ `[ERROR 500] INTERNAL SERVER ERROR`

------
#### [ Example: Include and exclude terms ]

メッセージにいくつかの語句が含まれるログイベントを返し、他の語句が除外されるフィルターパターンを作成できます。除外する語句の前にマイナス記号 (**[「-」]**) を配置します。次のコードスニペットは、メッセージに ***ERROR*** が含まれるログイベントを返し、***ARGUMENTS*** という語句が除外されるフィルターパターンの例を示しています。

```
ERROR -ARGUMENTS
```

このフィルターパターンは、次のようなログイベントメッセージを返します。
+ `[ERROR 400] BAD REQUEST`
+ `[ERROR 401] UNAUTHORIZED REQUEST`

次のログイベントメッセージには ***[引数]*** という単語が含まれているため、このフィルターパターンでは返されません。
+ `[ERROR 419] MISSING ARGUMENTS`
+ `[ERROR 420] INVALID ARGUMENTS`

------
#### [ Example: Match everything ]

二重引用符で囲むことで、ログイベント内の完全一致を照合することができます。次のコードスニペットは、すべてのログイベントを返すフィルターパターンの例を示しています。

```
" "
```

------

## フィルターパターンを使用した JSON ログイベントの語句の一致
<a name="matching-terms-json-log-events"></a>

### JSON ログイベントのフィルターパターンの式
<a name="matching-terms-json-log-events-collapsible"></a>

次の内容では、文字列と数値を含む JSON 語句と一致するフィルターパターンの構文を式する方法について説明します。

------
#### [ Writing filter patterns that match strings ]

JSON ログイベントで文字列とマッチさせるフィルターパターンを作成できます。次のコードスニペットには、文字列ベースのフィルターパターンの構文例が示されています。

```
{ PropertySelector EqualityOperator String }
```

フィルターパターンを中括弧(「\$1\$1」)で囲みます。文字列ベースのフィルターパターンには、次の部分が含まれている必要があります。
+ **[Property selector] (プロパティセレクタ**

  ドル記号の後にピリオド (「\$1.」) が付いたプロパティセレクタをオフに設定します。プロパティセレクタは英数字の文字列であり、ハイフン (「-」) およびアンダースコア (「\$1」) をサポートします。文字列は科学表記をサポートしていません。プロパティセレクタは、JSON ログイベントの値ノードを指します。値ノードには、文字列または数値を指定できます。プロパティセレクタの後に配列を配置します。配列内の要素は 0 から始まる番号付けシステムに従います。つまり、配列の最初の要素は要素 0、2 番目の要素は要素 1 というようになります。要素を角かっこ (「[]」) で囲みます。プロパティセレクターが配列またはオブジェクトを指定している場合、フィルターパターンはログ形式を一致とみなしません。JSON プロパティにピリオド (`"."`) が含まれている場合は、そのプロパティを選択するためにブラケット表記を使用できます。
**注記**  
**[ワイルドカードセレクター]**  
JSON ワイルドカードを使用し、任意の配列要素または JSON オブジェクトフィールドを選択できます。  
**クォータ**  
プロパティセレクターでは 1 つのワイルドカードセレクターしか使用できません。
+ **等値演算子**

  等しい (「=」) または等しくない (「\$1=」） の記号のいずれかを使用して、等価演算子を区切ります。等値演算子は、ブール値 (true または false) を返します。
+ **文字列**

  文字列は、二重引用符 ("") で囲むことができます。英数字とアンダースコア記号以外の種類を含む文字列は、二重引用符で囲む必要があります。アスタリスク (「\$1」) をワイルドカードとして使用して、テキストを照合します。
**注記**  
JSON ログイベントの語句と一致するフィルターパターンを作成するとき、任意の条件付き正規表現を使用できます。サポートされている正規表現のリストについては、[「サポートされている正規表現」](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/FilterAndPatternSyntax.html#regex-expressions)を参照してください。

次のコードスニペットには、文字列を持った JSON 語句とマッチさせるためにフィルターパターンをフォーマットする方法を示すフィルターパターンの例が含まれています。

```
{ $.eventType = "UpdateTrail" }
```

------
#### [ Writing filter patterns that match numeric values ]

JSON ログイベントの数値と一致するフィルターパターンを作成できます。次のコードスニペットには、数値とマッチさせるフィルターパターンの構文例が示されています。

```
{ PropertySelector NumericOperator Number }
```

フィルターパターンを中括弧(「\$1\$1」)で囲みます。数値と一致するフィルターパターンには、次の部分が含まれている必要があります。
+ **[Property selector] (プロパティセレクタ**

  ドル記号の後にピリオド (「\$1.」) が付いたプロパティセレクタをオフに設定します。プロパティセレクタは英数字の文字列であり、ハイフン (「-」) およびアンダースコア (「\$1」) をサポートします。文字列は科学表記をサポートしていません。プロパティセレクタは、JSON ログイベントの値ノードを指します。値ノードには、文字列または数値を指定できます。プロパティセレクタの後に配列を配置します。配列内の要素は 0 から始まる番号付けシステムに従います。つまり、配列の最初の要素は要素 0、2 番目の要素は要素 1 というようになります。要素を角かっこ (「[]」) で囲みます。プロパティセレクターが配列またはオブジェクトを指定している場合、フィルターパターンはログ形式を一致とみなしません。JSON プロパティにピリオド (`"."`) が含まれている場合は、そのプロパティを選択するためにブラケット表記を使用できます。
**注記**  
**[ワイルドカードセレクター]**  
JSON ワイルドカードを使用し、任意の配列要素または JSON オブジェクトフィールドを選択できます。  
**クォータ**  
プロパティセレクターでは 1 つのワイルドカードセレクターしか使用できません。
+ **数値演算子**

  より大きい (「>」)、より小さい (「<」)、等しい (「=」)、等しくない (「\$1 =」)、以上 (「>=」)、または以下 (「<=」) のいずれかの記号を使用して、数値演算子を区切ります。
+ **数値**

  プラス (「\$1」) またはマイナス (「-」) 記号を含む整数を使用し、科学表記に従うことができます。アスタリスク (「\$1」) をワイルドカードとして使用して、数値を照合します。

次のコードス ニペットには、JSON 語句を数値をマッチさせるためにフィルターパターンをフォーマットする方法を示す例が含まれています。

```
// Filter pattern with greater than symbol       
{ $.bandwidth > 75 }      
// Filter pattern with less than symbol
{ $.latency < 50 }
// Filter pattern with greater than or equal to symbol
{ $.refreshRate >= 60 } 
// Filter pattern with less than or equal to symbol
{ $.responseTime <= 5 }
// Filter pattern with equal sign
{ $.errorCode = 400} 
// Filter pattern with not equal sign
{ $.errorCode != 500 }
// Filter pattern with scientific notation and plus symbol
{ $.number[0] = 1e+3 } 
// Filter pattern with scientific notation and minus symbol
{ $.number[0] != 1e-3 }
```

------

### 簡単な表現を使用して JSON ログイベントで語句の一致
<a name="match-items-metric-filters-collapsible"></a>

次の例には、フィルターパターンが JSON ログイベントの語句をマッチさせる方法について示すコードスニペットが含まれています。

**注記**  
例の JSON ログイベントを使用して例のフィルターパターンをテストする場合、例の JSON ログを 1 行で入力する必要があります。

**[JSON ログイベント]**

```
{
      "eventType": "UpdateTrail",
      "sourceIPAddress": "111.111.111.111",
      "arrayKey": [
            "value",
            "another value"
      ],
      "objectList": [
           {
             "name": "a",
             "id": 1
           },
           {
             "name": "b",
             "id": 2
           }
      ],
      "SomeObject": null,
      "cluster.name": "c"
}
```

------
#### [ Example: Filter pattern that matches string values ]

このフィルターパターンは、プロパティ `"eventType"` の文字列 `"UpdateTrail"` と一致します。

```
{ $.eventType = "UpdateTrail" }
```

------
#### [ Example: Filter pattern that matches string values (IP address) ]

このフィルターパターンは、プレフィックス `"123.123."` が付いた数字が含まれていないため、ワイルドカードが含んでおり、プロパティ`"sourceIPAddress"` を一致とみなします。

```
{ $.sourceIPAddress != 123.123.* }
```

------
#### [ Example: Filter pattern that matches a specific array element with a string value ]

このフィルターパターンは、配列 `"arrayKey"` の要素 `"value"` と一致します。

```
{ $.arrayKey[0] = "value" }
```

------
#### [ Example: Filter pattern that matches a string using regex ]

このフィルターパターンは、プロパティ `"eventType"` の文字列 `"Trail"` と一致します。

```
{ $.eventType = %Trail% }
```

------
#### [ Example: Filter pattern that uses a wildcard to match values of any element in the array using regex ]

フィルターパターンには、配列 `"arrayKey"` の要素 `"value"` と一致する regex が含まれています。

```
{ $.arrayKey[*] = %val.{2}% }
```

------
#### [ Example: Filter pattern that uses a wildcard to match values of any element with a specific prefix and subnet using regex (IP address) ]

このフィルターパターンには、プロパティ `"sourceIPAddress"` の要素 `"111.111.111.111"` と一致する regex が含まれています。

```
{ $.* = %111\.111\.111\.1[0-9]{1,2}% }
```

**注記**  
**クォータ**  
プロパティセレクターでは 1 つのワイルドカードセレクターしか使用できません。

------
#### [ Example: Filter pattern that matches a JSON property with a period (.) in the key ]

```
{ $.['cluster.name'] = "c" }
```

------
#### [ Example: Filter pattern that matches JSON logs using IS ]

`IS` 変数で JSON ログのフィールドと一致するフィルターパターンを作成できます。`IS` 変数は、値 `NULL`、`TRUE` または `FALSE` を含むフィールドと一致させることができます。次のフィルターパターンでは、`SomeObject` の値が `NULL` の場合、JSON ログが返されます。

```
{ $.SomeObject IS NULL }
```

------
#### [ Example: Filter pattern that matches JSON logs using NOT EXISTS ]

`NOT EXISTS` 変数を使用してフィルターパターンを作成し、ログデータに特定フィールドを含まない JSON ログを返すことができます。次のフィルターパターンでは、`NOT EXISTS` を使用してフィールド `SomeOtherObject` を含まない JSON ログを返します。

```
{ $.SomeOtherObject NOT EXISTS }
```

**注記**  
変数 `IS NOT` および `EXISTS` は現在サポートされていません。

------

### 複合式を使用した JSON オブジェクトの語句の一致
<a name="compound-conditions-collapsible"></a>

論理演算子 AND (「&&」) と OR (「\$1\$1」) をフィルターパターンで使用し、2 つ以上の条件が真であるログイベントをマッチさせる複合式を作成できます。複合式では、かっこ (「()」) の使用と、次の標準的な演算順序 (() > && > \$1\$1) がサポートされます。次の例には、JSON オブジェクトの語句とマッチさせるための複合式を持ったフィルターパターンを使用する方法について示すコードスニペットが含まれています。

**[JSON オブジェクト]**

```
{
    "user": {
        "id": 1, 
        "email": "John.Stiles@example.com"
    },
    "users": [
        {
         "id": 2,
         "email": "John.Doe@example.com"
        },
        {
         "id": 3,
         "email": "Jane.Doe@example.com"
        }
    ],
    "actions": [
        "GET",
        "PUT",
        "DELETE"
    ],
    "coordinates": [
        [0, 1, 2],
        [4, 5, 6],
        [7, 8, 9]
    ]
}
```

------
#### [ Example: Expression that matches using AND (&&) ]

このフィルターパターンには、`"user"` の `"id"` を `1` の数値とマッチし、文字列 `"John.Doe@example.com"` を使用して `"users"` 配列の最初の要素にある `"email"` とマッチする複合式が含まれています。

```
                                
{ ($.user.id = 1) && ($.users[0].email = "John.Doe@example.com") }
```

------
#### [ Example: Expression that matches using OR (\$1\$1) ]

このフィルターパターンには、`"user"` の `"email"` を文字列 `"John.Stiles@example.com"` とマッチさせる複合式が含まれています。

```
                                
{ $.user.email = "John.Stiles@example.com" || $.coordinates[0][1] = "nonmatch" && $.actions[2] = "nonmatch" }
```

------
#### [ Example: Expression that doesn't match using AND (&&) ]

このフィルターパターンには、式が `"actions"` の第 3 アクションとマッチしないため、一致が見つからない複合式が含まれています。

```
                                
{ ($.user.email = "John.Stiles@example.com" || $.coordinates[0][1] = "nonmatch") && $.actions[2] = "nonmatch" }
```

**注記**  
**クォータ**  
プロパティセレクターではワイルドカードセレクターを 1 つしか使用できません。また、複合式を含むフィルターパターンでは最大 3 つのワイルドカードセレクターを使用することができます。

------
#### [ Example: Expression that doesn't match using OR (\$1\$1) ]

このフィルターパターンには、式が `"users"` の最初のプロパティまたは`"actions"`の第 3 アクションと一致しないため、一致が見つからない複合式が含まれています。

```
{ ($.user.id = 2 && $.users[0].email = "nonmatch") || $.actions[2] = "GET" }
```

------

## フィルターパターンを使用したスペース区切りのログイベントでの語句の一致
<a name="matching-term-space-delimited-log-events"></a>

### スペース区切りのログイベントのフィルターパターン式
<a name="matching-term-space-delimited-log-eventscollapsible"></a>

フィルターパターンを作成し、スペース区切りのログイベントで語句を一致させることができます。次の内容では、スペース区切りのログイベントの例を示し、スペース区切りのログイベントで語句を一致するフィルターパターンの構文を式する方法について説明します。

**注記**  
スペース区切りのログイベントで語句を一致するフィルターパターンを作成するとき、任意の条件付正規表現を使用できます。サポートされている正規表現のリストについては、[「サポートされている正規表現」](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/FilterAndPatternSyntax.html#regex-expressions)を参照してください。

------
#### [ Example: Space-delimited log event ]

次のコードスニペットは、7 つのフィールド (`ip`、`user`、`username`、`timestamp`、`request`、`status_code`、および `bytes`) を含むスペース区切りログイベントを示しています。

```
                                    
127.0.0.1 Prod frank [10/Oct/2000:13:25:15 -0700] "GET /index.html HTTP/1.0" 404 1534
```

**注記**  
角かっこ (「[]」) と二重引用符 ("") の間の文字は、単一フィールドと見なされます。

------
#### [ Writing filter patterns that match terms in a space-delimited log event ]

スペース区切りのログイベントで語句を一致するフィルターパターンを作成するには、フィルターパターンを括弧(「[]」)で囲み、カンマ(「,」)で区切られた名前でフィールドを指定します。次のフィルターパターンは 7 つのフィールドを解析します。

```
                                    
[ip=%127\.0\.0\.[1-9]%, user, username, timestamp, request =*.html*, status_code = 4*, bytes]
```

数値演算子 (>、<、=、\$1=、>=、<=) とアスタリスク (\$1) をワイルド カードまたは regex として使用し、フィルターパターン条件を指定できます。フィルターパターンの例では、`ip` は 127.0.0.1～127.0.0.9 の IP アドレス範囲に一致する regex を使用し、`request` は `.html` の値を抽出する必要があることを示すワイルドカードが含まれ、`status_code` は `4` で始まる値を抽出する必要があることを示すワイルドカードが含まれています。

スペース区切りログイベントで解析するフィールドの数がわからない場合は、省略記号 (...) を使用して名前のないフィールドを参照できます。省略記号を使用すると、必要な数のフィールドを参照できます。次の例には、前のフィルターパターンの例で示された最初の 4 つの無名フィールドを表す省略記号を使用するフィルターパターンが示されています。

```
[..., request =*.html*, status_code = 4*, bytes]
```

論理演算子 AND (&&) と OR (\$1\$1) を使用して複合式を作成することもできます。次のフィルターパターンには、`status_code` の値が `404` または `410` である必要があることを示す複合式が含まれています。

```
[ip, user, username, timestamp, request =*.html*, status_code = 404 || status_code = 410, bytes]
```

------

### パターン マッチングを使用したスペース区切りのログイベントの語句との一致
<a name="pattern-matching-space-delimited-collapsible"></a>

パターンマッチングを使用し、特定の順序で語句を一致するスペース区切りのフィルターパターンを作成できます。インジケーターを使用して語句の順序を指定します。**[w1]** を使用して最初の語句を表し、次に **[w2]** などを使用して、その後の語句の順序を表します。語句の間にカンマ (「,」) を入力します。次の例には、スペース区切りのフィルターパターンでパターンマッチングを使用する方法について示すコードスニペットが含まれています。

**注記**  
スペース区切りのログイベントで語句を一致するフィルターパターンを作成するとき、任意の条件付正規表現を使用できます。サポートされている正規表現のリストについては、[「サポートされている正規表現」](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/FilterAndPatternSyntax.html#regex-expressions)を参照してください。

**[スペース区切りのログイベント]**

```
INFO 09/25/2014 12:00:00 GET /service/resource/67 1200
INFO 09/25/2014 12:00:01 POST /service/resource/67/part/111 1310
WARNING 09/25/2014 12:00:02 Invalid user request
ERROR 09/25/2014 12:00:02 Failed to process request
```

------
#### [ Example: Match terms in order ]

次のスペース区切りのフィルターパターンは、ログイベントの最初の単語が***[エラー]*** であるログイベントを返します。

```
[w1=ERROR, w2]
```

**注記**  
 パターンマッチングを使用するスペース区切りのフィルターパターンを作成するとき、語句の順序を指定した後に空白のインジケーターを含める必要があります。例えば、最初の単語が ***[エラー]*** であるログイベントを返すフィルターパターンを作成する場合、**[w1]** 語句の後に空白の **[w2]** インジケーターを含めます。

------
#### [ Example: Match terms with AND (&&) and OR (\$1\$1) ]

論理演算子 AND (「&&」) と OR (「\$1\$1」) を使用し、条件を含むスペース区切りのフィルターパターンを作成できます。次のフィルターパターンは、イベントの最初の単語が***[エラー]*** または ***[警告]*** であるログイベントを返します。

```
[w1=ERROR || w1=WARNING, w2]
```

------
#### [ Example: Exclude terms from matches ]

1 つ以上の語句を除外するログイベントを返すスペース区切りのフィルターパターンを作成できます。除外する語句の前に等しくないの記号 (「\$1=」) を配置します。次のコードスニペットは、最初の単語が ***[エラー]*** と ***[警告]*** ではないログイベントを返すフィルターパターンの例を示しています。

```
[w1!=ERROR && w1!=WARNING, w2]
```

------
#### [ Example: Match the top level item in a resource URI ]

次のコードスニペットは、regex を使用してリソース URI の最上位の項目を一致するフィルターパターンの例を示しています。

```
                                    
[logLevel, date, time, method, url=%/service/resource/[0-9]+$%, response_time]
```

------
#### [ Example: Match the child level item in a resource URI ]

次のコードスニペットは、regex を使用してリソース URI の子レベルの項目を一致するフィルターパターンの例を示しています。

```
                                    
[logLevel, date, time, method, url=%/service/resource/[0-9]+/part/[0-9]+$%, response_time]
```

------