

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Filtermustersyntax für Metrikfilter, Abonnementfilter, Filterprotokollereignisse und Live Tail
<a name="FilterAndPatternSyntax"></a>

**Anmerkung**  
Informationen darüber, wie Sie Ihre Protokollgruppen mit der Abfragesprache von Amazon CloudWatch Logs Insights abfragen, finden Sie unter[CloudWatch Abfragesyntax in Logs Insights](CWL_QuerySyntax.md).

Mit CloudWatch Logs können Sie [Metrikfilter](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/MonitoringLogData.html) verwenden, um Protokolldaten in aussagekräftige Metriken umzuwandeln, [Abonnementfilter](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/SubscriptionFilters.html), um Protokollereignisse an andere AWS Dienste weiterzuleiten, [Protokollereignisse filtern](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/SearchDataFilterPattern.html), um nach Protokollereignissen zu suchen, und [Live Tail](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CloudWatchLogs_LiveTail.html), um Ihre Protokolle interaktiv in Echtzeit anzuzeigen, während sie aufgenommen werden.

Filtermuster bilden die Syntax, die Metrikfilter, Abonnementfilter, Protokollereignisse und Live Tail verwenden, um Begriffe in Protokollereignissen abzugleichen. Begriffe können Wörter, exakte Phrasen oder numerische Werte sein. Reguläre Ausdrücke (Regex) können verwendet werden, um eigenständige Filtermuster zu erstellen, oder sie können in JSON- und durch Leerzeichen getrennte Filtermuster integriert werden. 

Erstellen Sie Filtermuster mit den Begriffen, die Sie abgleichen möchten. Filtermuster geben nur die Protokollereignisse zurück, die die von Ihnen definierten Begriffe enthalten. Sie können Filtermuster in der CloudWatch Konsole testen.

**Topics**
+ [

## Unterstützte Syntax für reguläre Ausdrücke (Regex)
](#regex-expressions)
+ [

## Verwenden von Filtermustern zum Abgleichen von Begriffen mit einem regulären Ausdruck (Regex)
](#matching-terms-regex)
+ [

## Verwenden von Filtermustern zum Abgleichen von Begriffen in unstrukturierten Protokollereignissen
](#matching-terms-unstructured-log-events)
+ [

## Verwenden von Filtermustern zum Abgleichen von Begriffen in JSON-Protokollereignissen
](#matching-terms-json-log-events)
+ [

## Verwenden von Filtermustern, um Begriffe in Leerzeichen-getrennten Protokollereignissen abzugleichen
](#matching-term-space-delimited-log-events)

## Unterstützte Syntax für reguläre Ausdrücke (Regex)
<a name="regex-expressions"></a>

### Unterstützte Regex-Syntax
<a name="regex-expressions-collapsible"></a>

Wenn Sie Regex zum Suchen und Filtern von Protokolldaten verwenden, müssen Sie Ihre Ausdrücke mit `%` umgeben.

Filtermuster mit Regex können nur Folgendes enthalten:
+ Alphanumerische Zeichen – Ein alphanumerisches Zeichen ist ein Zeichen, das entweder ein Buchstabe (von A bis Z oder A bis Z) oder eine Ziffer (von 0 bis 9) ist.
+ Unterstützte Symbolzeichen — Dazu gehören: '`:`', '`_`', '`#`', '`=`', '`@`', '`/`', '`;`', '`,`', '' und `-` '' `%something!%` würde beispielsweise abgelehnt werden, da '`!`' nicht unterstützt wird.
+ Unterstützte Operatoren – Dazu gehören: '`^`', '`$`', '`?`', '`[`', '`]`', '`{`', '`}`', '`|`', '`\`', '`*`', '`+`' und '`.`'.

Die Operatoren `(` und `)` werden nicht unterstützt. Sie dürfen keine Klammern verwenden, um ein Untermuster zu definieren.

Multi-Byte-Zeichen werden nicht unterstützt.

**Anmerkung**  
**Kontingente**  
Bei der Erstellung von metrischen Filtern oder Abonnementfiltern können Sie für jede Protokollgruppe maximal 5 Filtermuster mit Regex verwenden.  
Es gibt ein Limit von 2 Regex für jedes Filtermuster, wenn Sie ein abgegrenztes oder JSON-Filtermuster für metrische Filter und Abonnementfilter erstellen oder wenn Sie Protokollereignisse oder Live Tail filtern.

**Verwendung unterstützter Operatoren**
+ `^`: Verankert die Übereinstimmung am Anfang einer Zeichenfolge. Beispielsweise stimmt `%^[hc]at%` mit „hat“ und „cat“ überein, aber nur am Anfang einer Zeichenfolge.
+ `$`: Verankert die Übereinstimmung am Ende einer Zeichenfolge. Beispielsweise stimmt `%[hc]at$%` mit „hat“ und „cat“ überein, aber nur am Ende einer Zeichenfolge.
+ `?`: Entspricht null oder einem Vorkommen des vorhergehenden Begriffs. So kann `%colou?r%` sowohl mit „color“ als auch „colour“ übereinstimmen.
+ `[]`: Definiert eine Zeichenklasse. Gleicht die Zeichenliste oder den Zeichenbereich innerhalb der Klammern ab. Zum Beispiel stimmt `%[abc]%` mit „a“, „b“ oder „c“ überein; `%[a-z]%` stimmt mit jedem Kleinbuchstaben von „a“ bis „z“ überein; und `%[abcx-z]%` stimmt mit „a“, „b“, „c“, „x“, „y“ oder „z“ überein.
+ `{m, n}`: Gleicht den vorhergehenden Begriff mindestens mit *m*-mal ab, aber nicht öfter als *n*-mal. `%a{3,5}% ` stimmt beispielsweise nur mit „aaa“, „aaaa“ und „aaaaa“ überein.
**Anmerkung**  
Entweder *m* oder *n* können weggelassen werden, wenn Sie kein Minimum oder Maximum definieren möchten.
+ `|`: Boolesches „Oder“, das den Begriff auf beiden Seiten des senkrechten Balkens abgleicht. Beispiel:
  + `%gra|ey%`kann „grau“ oder „grau“ entsprechen
  + `%^starting|^initializing|^shutting down%`kann mit „Start...“ übereinstimmen „oder „wird initialisiert... „oder „Herunterfahren“, passt aber nicht zu „Initialisierung überspringen...“
  + `%abcc|ab[^c]$`kann mit „abcc...“ und „aba...“ übereinstimmen, aber nicht mit „aac...“
+ `\`: Escape-Zeichen, mit dem Sie die wörtliche Bedeutung eines Operators anstelle seiner speziellen Bedeutung verwenden können. Zum Beispiel stimmt `%\[.\]%` mit jedem einzelnen Zeichen überein, das von [ und ] umgeben ist, da die Klammern ausgestellt sind, wie [a], [b], [7], [@], []] und [ ].
**Anmerkung**  
` %10\.10\.0\.1%` ist die richtige Methode, um eine Regex zu erstellen, die der IP-Adresse 10.10.0.1 entspricht.
+ `*`: Entspricht null oder mehr Instanzen des vorhergehenden Begriffs. So kann ` %ab*c% ` beispielsweise mit „ac“, „abc“ und „abbbc“ übereinstimmen; `%ab[0-9]*%` kann mit „ab“, „ab0“ und „ab129“ übereinstimmen.
+ `+`: Entspricht einer oder mehreren Instanzen des vorhergehenden Begriffs. `%ab+c%` kann beispielsweise mit „abc“, „abbc“ und „abbbc“ übereinstimmen, aber nicht mit „ac“. 
+ `.`: Stimmt mit einem beliebigen Einzelzeichen überein. Zum Beispiel stimmt `%.at%` mit jeder Zeichenfolge mit drei Zeichen überein, die mit „at“ endet, einschließlich „hat“, „cat“, „bat“, „4at“, „\$1at“ und „ at“ (beginnend mit einem Leerzeichen).
**Anmerkung**  
 Wenn Sie eine Regex erstellen, die IP-Adressen abgleicht, ist es wichtig, den Operator `.` auszustellen. Beispielsweise kann `%10.10.0.1%` mit „10010,051“ übereinstimmen, was möglicherweise nicht der eigentliche Verwendungszweck des Ausdrucks ist.
+ `\d`, `\D`: Stimmt mit einer Ziffer bzw. einem Zeichen überein, das keine Ziffer ist. Beispielsweise stimmt `%\d%` mit `%[0-9]%` überein und `%\D%` mit `%[^0-9]%`.
**Anmerkung**  
Der Operator in Großbuchstaben bezeichnet die Umkehrung seines Gegenstücks in Kleinbuchstaben.
+ `\s`, `\S`: Stimmt mit einem Leerraumzeichen/einem Nicht-Leerraumzeichen überein.
**Anmerkung**  
Der Operator in Großbuchstaben bezeichnet die Umkehrung seines Gegenstücks in Kleinbuchstaben. Zu den Leerraumzeichen gehören Tabulatorzeichen (`\t`), Leerzeichen (` `) und Zeilenumbruch (`\n`).
+ `\w`, `\W`: Stimmt mit einem alphanumerischen Zeichen/einem nicht-alphanumerischen Zeichen überein. Beispielsweise stimmt `%\w%` mit `%[a-zA-Z_0-9]%` überein und `%\W%` mit `%[^a-zA-Z_0-9]%`.
**Anmerkung**  
Der Operator in Großbuchstaben bezeichnet die Umkehrung seines Gegenstücks in Kleinbuchstaben.
+ `\xhh`: Stimmt mit der ASCII-Zuordnung für ein zweistelliges hexadezimales Zeichen überein. `\x` ist die Escape-Sequenz, die angibt, dass die folgenden Zeichen den hexadezimalen Wert für ASCII darstellen. `hh` gibt die beiden hexadezimalen Ziffern (0–9 und A–F) an, die auf ein Zeichen in der ASCII-Tabelle zeigen.
**Anmerkung**  
Sie können `\xhh` verwenden, um nach Symbolzeichen zu suchen, die vom Filtermuster nicht unterstützt werden. Beispielsweise stimmt `%\x3A%` mit `:` überein und `%\x28%` mit `(`.

## Verwenden von Filtermustern zum Abgleichen von Begriffen mit einem regulären Ausdruck (Regex)
<a name="matching-terms-regex"></a>

### Begriffe mithilfe von Regex abgleichen
<a name="matching-terms-regex-collapsible"></a>

Sie können Begriffe in Ihren Protokollereignissen mit einem Regex-Muster abgleichen, das von `%` (Prozentzeichen vor und nach dem Regex-Muster) umgeben ist. Der folgende Codeauszug zeigt ein Beispiel für ein Filtermuster, das alle Protokollereignisse mit dem Schlüsselwort **AUTHORIZED** zurückgibt.

Eine Liste der unterstützten regulären Ausdrücke finden Sie unter [Unterstützte reguläre Ausdrücke](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/FilterAndPatternSyntax.html#regex-expressions).

```
  %AUTHORIZED%
```

Dieses Filtermuster gibt Protokollereignismeldungen wie die folgenden zurück:
+ `[ERROR 401] UNAUTHORIZED REQUEST`
+ `[SUCCESS 200] AUTHORIZED REQUEST`

## Verwenden von Filtermustern zum Abgleichen von Begriffen in unstrukturierten Protokollereignissen
<a name="matching-terms-unstructured-log-events"></a>

### Begriffe in unstrukturierten Protokollereignissen abgleichen
<a name="matching-terms-unstructured-log-events-collapsible"></a>

 Die folgenden Beispiele enthalten Codeauszüge, die zeigen, wie Sie Filtermuster verwenden können, um Begriffe in Ihren unstrukturierten Protokollereignissen abzugleichen.

**Anmerkung**  
Filtermuster beachten die Groß-/Kleinschreibung. Schließen Sie exakte Phrasen und Begriffe, die nicht alphanumerische Zeichen enthalten, in doppelte Anführungszeichen (**""**) ein.

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

Das folgende Code-Snippet zeigt ein Beispiel für ein begriffsspezifisches Filtermuster, das alle Protokollereignisse zurückgibt, deren Meldungen das Wort ***ERROR*** (FEHLER) enthalten.

```
ERROR
```

Das Filtermuster gleicht Protokollereignismeldungen ab, z. B. die folgende:
+ `[ERROR 400] BAD REQUEST`
+ `[ERROR 401] UNAUTHORIZED REQUEST`
+ `[ERROR 419] MISSING ARGUMENTS`
+ `[ERROR 420] INVALID ARGUMENTS`

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

Das folgende Code-Snippet zeigt ein Beispiel für ein Filtermuster für mehrere Begriffe, das alle Protokollereignisse zurückgibt, deren Meldungen die Wörter ***ERROR*** (FEHLER) und ***ARGUMENTS*** (ARGUMENTE) enthalten.

```
ERROR ARGUMENTS
```

Der Filter gibt Protokollereignismeldungen zurück, wie z. B. die folgende:
+ `[ERROR 419] MISSING ARGUMENTS`
+ `[ERROR 420] INVALID ARGUMENTS`

Dieses Filtermuster gibt die folgenden Protokollereignismeldungen nicht zurück, da sie nicht beide im Filtermuster angegebenen Begriffe enthalten.
+ `[ERROR 400] BAD REQUEST`
+ `[ERROR 401] UNAUTHORIZED REQUEST`

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

Mithilfe des Musterabgleichs können Sie Filtermuster erstellen, die Protokollereignisse mit optionalen Begriffen zurückgeben. Setzen Sie ein Fragezeichen („?“) vor die Begriffe, die Sie abgleichen möchten. Das folgende Code-Snippet zeigt ein Beispiel für ein Filtermuster, das alle Protokollereignisse zurückgibt, deren Meldungen das Wort ***ERROR*** oder das Wort ***ARGUMENTS***. enthalten.

```
?ERROR ?ARGUMENTS
```

Das Filtermuster gleicht Protokollereignismeldungen ab, z. B. die folgende:
+ `[ERROR 400] BAD REQUEST`
+ `[ERROR 401] UNAUTHORIZED REQUEST`
+ `[ERROR 419] MISSING ARGUMENTS`
+ `[ERROR 420] INVALID ARGUMENTS`

**Anmerkung**  
Sie können das Fragezeichen („?“) nicht kombinieren mit anderen Filtermustern, z. B. Begriffe einschließen und ausschließen. Wenn Sie „?“ kombinieren Bei anderen Filtermustern werden alle Begriffe mit Fragezeichen ignoriert.  
Das folgende Filtermuster entspricht beispielsweise allen Ereignissen, die das Wort`REQUEST`, aber das Fragezeichen („?“) enthalten Filterbegriffe werden ignoriert und haben keine Wirkung.  

```
?ERROR ?ARGUMENTS REQUEST
```
Übereinstimmungen von Protokollereignissen  
`[INFO] REQUEST FAILED`
`[WARN] UNAUTHORIZED REQUEST`
`[ERROR] 400 BAD REQUEST`

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

Das folgende Code-Snippet zeigt ein Beispiel für ein Filtermuster, das Protokollereignisse zurückgibt, deren Meldungen genau den Ausdruck ***INTERNAL SERVER ERROR*** (INTERNER SERVERFEHLER) enthalten.

```
"INTERNAL SERVER ERROR"
```

Dieses Filtermuster gibt die folgende Ereignisprotokollmeldung zurück:
+ `[ERROR 500] INTERNAL SERVER ERROR`

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

Sie können Filtermuster erstellen, die Protokollereignisse zurückgeben, bei denen Meldungen bestimmte Begriffe enthalten und andere ausschließen. Setzen Sie ein Minuszeichen (**„-“**) vor die Begriffe, die Sie ausschließen möchten. Das folgende Code-Snippet zeigt ein Beispiel für ein Filtermuster, das Protokollereignisse zurückgibt, deren Meldungen den Begriff ***ERROR*** (FEHLER) enthalten, nicht aber den Begriff ***ARGUMENTS*** (ARGUMENTE).

```
ERROR -ARGUMENTS
```

Dieses Filtermuster gibt Protokollereignismeldungen wie die folgenden zurück:
+ `[ERROR 400] BAD REQUEST`
+ `[ERROR 401] UNAUTHORIZED REQUEST`

Dieses Filtermuster gibt die folgenden Protokollereignismeldungen nicht zurück, da sie den Begriff ***ARGUMENTS*** (ARGUMENTE) enthalten.
+ `[ERROR 419] MISSING ARGUMENTS`
+ `[ERROR 420] INVALID ARGUMENTS`

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

Mit doppelten Anführungszeichen können Sie alles in Ihren Protokollereignissen finden. Das folgende Code-Snippet zeigt ein Beispiel für ein Filtermuster, das alle Protokollereignisse zurückgibt.

```
" "
```

------

## Verwenden von Filtermustern zum Abgleichen von Begriffen in JSON-Protokollereignissen
<a name="matching-terms-json-log-events"></a>

### Schreiben von Filtermustern für JSON-Protokollereignisse
<a name="matching-terms-json-log-events-collapsible"></a>

Im Folgenden wird beschrieben, wie Sie die Syntax für Filtermuster schreiben, die mit JSON-Begriffen übereinstimmen, die Zeichenfolgen und numerische Werte enthalten.

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

Sie können Filtermuster erstellen, um Zeichenfolgen in JSON-Protokollereignissen abzugleichen. Der folgende Codeauszug zeigt ein Syntaxbeispiel für zeichenfolgenbasierte Filtermuster.

```
{ PropertySelector EqualityOperator String }
```

Schließen Sie Filtermuster in geschweifte Klammern („\$1\$1“) ein. Zeichenfolgenbasierte Filtermuster müssen die folgenden Elemente enthalten:
+ **Eigenschaftsselektor**

  Kennzeichnen Sie Eigenschaftsselektoren mit einem Dollarzeichen gefolgt von einem Punkt („\$1.“). Eigenschaftsselektoren sind alphanumerische Zeichenfolgen, die Bindestriche („-“) und Unterstriche („\$1“) unterstützen. Zeichenketten unterstützen keine wissenschaftliche Notation. Eigenschaftsselektoren verweisen auf Werteknoten in JSON-Protokollereignissen. Werteknoten können Zeichenketten oder Zahlen sein. Platzieren Sie Arrays nach Eigenschaftsselektoren. Für die Elemente in Arrays wird ein nullbasiertes Nummerierungssystem verwendet. Somit ist das erste Element im Array das Element 0, das zweite Element ist das Element 1 und so weiter. Schließen Sie Elemente in Klammern ein („[]“). Wenn ein Eigenschaftsselektor auf ein Array oder Objekt verweist, stimmt das Filtermuster nicht mit dem Protokollformat überein. Wenn die JSON-Eigenschaft einen Punkt (`"."`) enthält, kann die Klammernotation verwendet werden, um diese Eigenschaft auszuwählen.
**Anmerkung**  
**Platzhalter-Selektor**  
Sie können den JSON-Platzhalter verwenden, um ein beliebiges Array-Element oder ein beliebiges JSON-Objektfeld auszuwählen.  
**Kontingente**  
Sie können in einem Eigenschaftenselektor nur bis zu einen Platzhalter-Selektor verwenden.
+ **Equality operator** (Gleichheitsoperator)

  Kennzeichnen Sie Gleichheitsoperatoren mit einem der folgenden Symbole: gleich („=“) oder ungleich („\$1=“). Gleichheitsoperatoren geben einen booleschen Wert zurück („true“ oder „false“).
+ **Zeichenfolge **

  Sie können Zeichenketten in doppelte Anführungszeichen („“) einschließen. Zeichenketten, die andere Typen als alphanumerische Zeichen und das Unterstrichsymbol enthalten, müssen in doppelte Anführungszeichen gesetzt werden. Verwenden Sie das Sternchen („\$1“) als Platzhalter, um Text abzugleichen.
**Anmerkung**  
Sie können jeden bedingten regulären Ausdruck verwenden, wenn Sie Filtermuster erstellen, um Begriffe in JSON-Protokollereignissen abzugleichen. Eine Liste der unterstützten regulären Ausdrücke finden Sie unter [Unterstützte reguläre Ausdrücke](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/FilterAndPatternSyntax.html#regex-expressions).

Der folgende Codeauszug enthält ein Beispiel für ein Filtermuster. Es zeigt, wie Sie ein Filtermuster so formatieren können, dass es einen JSON-Begriff mit einer Zeichenfolge abgleicht.

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

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

Sie können Filtermuster erstellen, um numerische Werte in JSON-Protokollereignissen abzugleichen. Der folgende Codeauszug zeigt ein Beispiel für die Syntax von Filtermustern, die numerische Werte abgleichen.

```
{ PropertySelector NumericOperator Number }
```

Schließen Sie Filtermuster in geschweifte Klammern („\$1\$1“) ein. Filtermuster, die numerische Werten abgleichen, müssen die folgenden Elemente enthalten:
+ **Eigenschaftsselektor**

  Kennzeichnen Sie Eigenschaftsselektoren mit einem Dollarzeichen gefolgt von einem Punkt („\$1.“). Eigenschaftsselektoren sind alphanumerische Zeichenfolgen, die Bindestriche („-“) und Unterstriche („\$1“) unterstützen. Zeichenketten unterstützen keine wissenschaftliche Notation. Eigenschaftsselektoren verweisen auf Werteknoten in JSON-Protokollereignissen. Werteknoten können Zeichenketten oder Zahlen sein. Platzieren Sie Arrays nach Eigenschaftsselektoren. Für die Elemente in Arrays wird ein nullbasiertes Nummerierungssystem verwendet. Somit ist das erste Element im Array das Element 0, das zweite Element ist das Element 1 und so weiter. Schließen Sie Elemente in Klammern ein („[]“). Wenn ein Eigenschaftsselektor auf ein Array oder Objekt verweist, stimmt das Filtermuster nicht mit dem Protokollformat überein. Wenn die JSON-Eigenschaft einen Punkt (`"."`) enthält, kann die Klammernotation verwendet werden, um diese Eigenschaft auszuwählen.
**Anmerkung**  
**Platzhalter-Selektor**  
Sie können den JSON-Platzhalter verwenden, um ein beliebiges Array-Element oder ein beliebiges JSON-Objektfeld auszuwählen.  
**Kontingente**  
Sie können in einem Eigenschaftenselektor nur bis zu einen Platzhalter-Selektor verwenden.
+ **Numerischer Operator**

  Kennzeichnen Sie numerische Operatoren mit einem der folgenden Symbole: größer als („>“), kleiner als („<“), gleich („=“), ungleich („\$1=“), größer als oder gleich („>=“) oder kleiner als oder gleich („<=“).
+ **Zahl**

  Sie können Ganzzahlen verwenden, die Plus- („\$1“) oder Minuszeichen („-“) enthalten und der wissenschaftlichen Notation folgen. Verwenden Sie das Sternchen („\$1“) als Platzhalter, um Zahlen abzugleichen.

Der folgende Codeauszug enthält Beispiele dafür, wie Sie Formatfiltermuster so formatieren können, dass sie JSON-Begriffe mit numerischen Werten abgleichen.

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

------

### Begriffe in JSON-Protokollereignissen mit einfachen Ausdrücken abgleichen
<a name="match-items-metric-filters-collapsible"></a>

Die folgenden Beispiele enthalten Codeauszüge, die zeigen, wie Filtermuster Begriffe in einem JSON-Protokollereignis abgleichen können.

**Anmerkung**  
Wenn Sie die Beispielfiltermuster mit dem Beispiel-JSON-Protokollereignis testen, müssen Sie das Beispiel-JSON-Protokoll in einer einzigen Zeile eingeben.

**JSON-Protokollereignis**

```
{
      "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 ]

Dieses Filtermuster stimmt mit der Zeichenfolge `"UpdateTrail"` in der Eigenschaft `"eventType"` überein.

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

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

Dieses Filtermuster enthält einen Platzhalter und stimmt mit der Eigenschaft `"sourceIPAddress"` überein, da sie keine Zahl mit dem Präfix `"123.123."` enthält.

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

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

Dieses Filtermuster stimmt mit dem Element `"value"` im Array `"arrayKey"` überein.

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

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

Dieses Filtermuster stimmt mit der Zeichenfolge `"Trail"` in der Eigenschaft `"eventType"` überein.

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

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

Das Filtermuster enthält Regex, der mit dem Element `"value"` im Array `"arrayKey"` übereinstimmt.

```
{ $.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) ]

Dieses Filtermuster enthält Regex, der mit dem Element `"111.111.111.111"` in der Eigenschaft `"sourceIPAddress"` übereinstimmt.

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

**Anmerkung**  
**Kontingente**  
Sie können in einem Eigenschaftenselektor nur bis zu einen Platzhalter-Selektor verwenden.

------
#### [ 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 ]

Sie können Filtermuster erstellen, die Felder in JSON-Protokollen mit der Variable `IS` abgleichen. Die Variable `IS` kann Felder abgleichen, die die Werte `NULL`, `TRUE` oder `FALSE` enthalten. Das folgende Filtermuster gibt JSON-Protokolle zurück, bei denen der Wert von `SomeObject` `NULL` ist.

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

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

Sie können mit der `NOT EXISTS` Variablen Filtermuster erstellen, um JSON-Logs zurückzugeben, die keine bestimmten Felder in den Protokolldaten enthalten. Das folgende Filtermuster verwendet `NOT EXISTS`, um JSON-Protokolle zurückzugeben, die das Feld `SomeOtherObject` nicht enthalten.

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

**Anmerkung**  
Die Variablen `IS NOT` und `EXISTS` werden derzeit nicht unterstützt.

------

### Begriffe in JSON-Objekten mit zusammengesetzten Ausdrücken abgleichen
<a name="compound-conditions-collapsible"></a>

Sie können die logischen Operatoren AND („&&“) und OR („\$1\$1“) in Filtermustern verwenden, um zusammengesetzte Ausdrücke zu erstellen, die Protokollereignisse abgleichen, bei denen zwei oder mehr Bedingungen erfüllt sind. Zusammengesetzte Ausdrücke unterstützen die Verwendung von Klammern („()“) und die folgende Standardreihenfolge von Operationen: () > && > \$1\$1. Die folgenden Beispiele enthalten Codeauszüge, die zeigen, wie Sie Filtermuster mit zusammengesetzten Ausdrücken verwenden können, um Begriffe in einem JSON-Objekt abzugleichen.

**JSON-Objekt**

```
{
    "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 (&&) ]

Das Filtermuster enthält einen zusammengesetzten Ausdruck, der `"id"` in `"user"` mit einem numerischen Wert von `1` und `"email"` im ersten Element des Arrays `"users"` mit der Zeichenfolge `"John.Doe@example.com"` abgleicht.

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

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

Dieses Filtermuster enthält einen zusammengesetzten Ausdruck, der `"email"` in `"user"` mit der Zeichenfolge `"John.Stiles@example.com"` abgleicht.

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

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

Dieses Filtermuster enthält einen zusammengesetzten Ausdruck, der keine Übereinstimmung findet, weil der Ausdruck nicht mit der dritten Aktion in `"actions"` übereinstimmt.

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

**Anmerkung**  
**Kontingente**  
Sie können in einer Eigenschaftenauswahl nur bis zu einen Platzhalter-Selektor und bis zu drei Platzhalter-Selektoren in einem Filtermuster mit zusammengesetzten Ausdrücken verwenden.

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

Dieses Filtermuster enthält einen zusammengesetzten Ausdruck, der keine Übereinstimmung findet, weil der Ausdruck nicht mit der ersten Eigenschaft in `"users"` oder der dritten Aktion in `"actions"` übereinstimmt.

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

------

## Verwenden von Filtermustern, um Begriffe in Leerzeichen-getrennten Protokollereignissen abzugleichen
<a name="matching-term-space-delimited-log-events"></a>

### Schreiben von Filtermustern für Leerzeichen-getrennte Protokollereignisse
<a name="matching-term-space-delimited-log-eventscollapsible"></a>

Sie können Filtermuster verwenden, um Begriffe in Leerzeichen-getrennten Protokollereignissen abzugleichen. Im Folgenden finden Sie ein Beispiel für ein durch Leerzeichen getrenntes Protokollereignis und es wird beschrieben, wie die Syntax für Filtermuster geschrieben wird, die Begriffe im Leerzeichen-getrennten Protokollereignis abgleichen.

**Anmerkung**  
Sie können jeden bedingten regulären Ausdruck verwenden, wenn Sie Filtermuster erstellen, um Begriffe in Leerzeichen-getrennten Protokollereignissen abzugleichen. Eine Liste der unterstützten regulären Ausdrücke finden Sie unter [Unterstützte reguläre Ausdrücke](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/FilterAndPatternSyntax.html#regex-expressions).

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

Das folgende Code-Snippet zeigt ein Leerzeichen-getrenntes Protokollereignis, das sieben Felder enthält: `ip`, `user`, `username`, `timestamp`, `request`, `status_code` und `bytes`.

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

**Anmerkung**  
Zeichen zwischen Klammern („[]“) und doppelten Anführungszeichen („“) gelten als einzelne Felder.

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

Um ein Filtermuster zu erstellen, das mit Begriffen in einem durch Leerzeichen getrennten Protokollereignis übereinstimmt, schließen Sie das Filtermuster in eckige Klammern („[]“) ein und geben Felder mit Namen an, die durch Kommas („,“) getrennt sind. Das folgende Filtermuster analysiert sieben Felder. 

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

Sie können numerische Operatoren (>, <, =,\$1 =, >>= oder < =) sowie das Sternchen (\$1) als Platzhalter oder Regex verwenden, um die Filtermusterbedingungen anzugeben. Im Beispielfiltermuster verwendet `ip` einen Regex, der auf den IP-Adressbereich 127.0.0.1–127.0.0.9 abgleicht, `request` enthält einen Platzhalter, der besagt, dass ein Wert mit `.html` extrahiert werden muss, und `status_code` enthält einen Platzhalter, der besagt, dass ein Wert mit `4` beginnen muss.

Wenn Sie die Anzahl der Felder, die Sie in einem Leerzeichen-getrennten Protokollereignis analysieren, nicht kennen, können Sie mit Ellipsen (...) auf jedes unbenannte Feld verweisen. Mit Ellipsen können Sie auf so viele Felder wie nötig verweisen. Das folgende Beispiel zeigt ein Filtermuster mit Ellipsen, die die ersten vier unbenannten Felder aus dem vorherigen Beispielfiltermuster darstellen.

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

Sie können auch die logischen Operatoren AND (&&) und OR (\$1\$1) verwenden, um zusammengesetzte Ausdrücke zu erstellen. Das folgende Filtermuster enthält einen zusammengesetzten Ausdruck, der besagt, dass der Wert von `status_code` entweder `404` oder `410` sein muss.

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

------

### Begriffe in Leerzeichen-getrennten Protokollereignissen mit Musterabgleich abgleichen
<a name="pattern-matching-space-delimited-collapsible"></a>

Sie können den Musterabgleich verwenden, um Leerzeichen-getrennte Filtermuster zu erstellen, die Begriffe in einer bestimmten Reihenfolge abgleichen. Geben Sie die Reihenfolge Ihrer Begriffe mit Indikatoren an. Verwenden Sie **w1** für den ersten Begriff, **w2** für den zweiten und so weiter, um die Reihenfolge der Begriffe abzubilden. Platzieren Sie Kommas („,“) zwischen Ihren Begriffen. Die folgenden Beispiele enthalten Codeauszüge, die zeigen, wie Sie den Musterabgleich mit Leerzeichen-getrennten Filtermustern verwenden können.

**Anmerkung**  
Sie können jeden bedingten regulären Ausdruck verwenden, wenn Sie Filtermuster erstellen, um Begriffe in Leerzeichen-getrennten Protokollereignissen abzugleichen. Eine Liste der unterstützten regulären Ausdrücke finden Sie unter [Unterstützte reguläre Ausdrücke](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/FilterAndPatternSyntax.html#regex-expressions).

**Beispiel: Leerzeichen-getrenntes Protokollereignis**

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

Das folgende Leerzeichen-getrennte Filtermuster gibt Protokollereignisse zurück, bei denen das erste Wort in den Protokollereignissen ***ERROR*** (FEHLER) lautet.

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

**Anmerkung**  
 Wenn Sie Leerzeichen-getrennte Filtermuster erstellen, die Musterabgleiche verwenden, müssen Sie nach der Angabe der Reihenfolge der Begriffe einen leeren Indikator einfügen. Wenn Sie beispielsweise ein Filtermuster erstellen, der Protokollereignisse zurückgibt, deren erstes Wort ***ERROR*** (FEHLER) lautet, fügen Sie einen leeren **w2**-Indikator nach dem **w1**-Begriff ein. 

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

Sie können die logischen Operatoren AND („&&“) und OR („\$1\$1“) verwenden, um Leerzeichen-getrennte Filtermuster zu erstellen, die Bedingungen enthalten. Das folgende Filtermuster gibt Protokollereignisse zurück, bei denen der erste Begriff in den Ereignissen ***ERROR*** (FEHLER) oder ***WARNING*** (WARNUNG) lautet.

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

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

Sie können Leerzeichen-getrennte Filtermuster erstellen, die Protokollereignisse zurückgeben, die einen oder mehrere Begriffe ausschließen. Setzen Sie ein Ungleichheitszeichen („\$1=“) vor den Begriff oder die Begriffe, die Sie ausschließen möchten. Der folgende Codeauszug zeigt ein Beispiel für ein Filtermuster, das Protokollereignisse zurückgibt, deren erste Begriffe nicht ***ERROR*** (FEHLER) und ***WARNING*** (WARNUNG) lauten.

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

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

Der folgende Codeauszug zeigt ein Beispiel für ein Filtermuster, das das Element der obersten Ebene in einer Ressourcen-URI mit Regex abgleicht.

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

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

Der folgende Codeauszug zeigt ein Beispiel für ein Filtermuster, das das Element der untergeordneten Ebene in einer Ressourcen-URI mit Regex abgleicht.

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

------