

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 지표 필터, 구독 필터, 필터 로그 이벤트 및 Live Tail에 대한 필터 패턴 구문
<a name="FilterAndPatternSyntax"></a>

**참고**  
Amazon CloudWatch 로그 인사이트에서 쿼리 언어를 사용하여 로그 그룹을 쿼리하는 방법에 대한 자세한 내용은 [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을 사용하여 로그 이벤트에서 일치하는 용어를 검색하는 구문을 구성합니다. 용어는 단어, 정확한 문구 또는 숫자 값일 수 있습니다. 정규식을 사용하여 독립 실행형 필터 패턴을 생성하거나 JSON 및 공백으로 구분된 필터 패턴에 정규식을 통합할 수 있습니다.

일치시키려는 용어를 사용하여 필터 패턴을 생성합니다. 필터 패턴은 정의한 용어가 포함된 로그 이벤트만 반환합니다. CloudWatch 콘솔에서 필터 패턴을 테스트할 수 있습니다.

**Topics**
+ [지원되는 정규식 구문](#regex-expressions)
+ [필터 패턴을 사용하여 정규식과 일치하는 용어 검색](#matching-terms-regex)
+ [필터 패턴을 사용하여 비정형 로그 이벤트에서 일치하는 용어 검색](#matching-terms-unstructured-log-events)
+ [필터 패턴을 사용하여 JSON 로그 이벤트에서 일치하는 용어 검색](#matching-terms-json-log-events)
+ [필터 패턴을 사용하여 공백으로 구분된 로그 이벤트에서 일치하는 용어 검색](#matching-term-space-delimited-log-events)

## 지원되는 정규식 구문
<a name="regex-expressions"></a>

### 지원되는 정규식 구문
<a name="regex-expressions-collapsible"></a>

정규식을 사용하여 로그 데이터를 검색하고 필터링하는 경우 표현식을 `%`로 묶어야 합니다.

정규식을 포함하는 필터 패턴에는 다음만 포함할 수 있습니다.
+ 영숫자 - 영숫자는 문자(A\$1Z 또는 a\$1z) 또는 숫자(0\$19)에 해당하는 문자입니다.
+ 지원되는 기호 문자 – 여기에는 '`:`', '`_`', '`#`', '`=`', '`@`','`/`', '`;`', '`,`' 및 '`-`'이 포함됩니다. 예를 들어, `%something!%`은 '`!`'이 지원되지 않으므로 거부됩니다.
+ 지원되는 연산자 - 여기에는 '`^`', '`$`', '`?`', '`[`', '`]`', '`{`', '`}`', '`|`', '`\`', '`*`', '`+`' 및 '`.`'가 포함됩니다.

`(` 및 `)` 연산자는 지원되지 않습니다. 하위 패턴을 정의할 때 괄호를 사용할 수 없습니다.

멀티바이트 문자는 지원되지 않습니다.

**참고**  
**할당량**  
지표 필터 또는 구독 필터를 생성하는 경우 각 로그 그룹에 대한 정규식이 포함된 최대 5개의 필터 패턴이 있습니다.  
지표 필터 및 구독 필터에 대해 구분된 필터 패턴 또는 JSON 필터 패턴을 생성하거나 로그 이벤트 또는 Live Tail을 필터링하는 경우 각 필터 패턴에 대해 2개의 정규식으로 제한됩니다.

**지원되는 연산자 사용**
+ `^`: 문자열의 시작 위치로 일치 항목을 고정합니다. 예를 들어, `%^[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*\$1*n*번만큼 일치합니다. 예를 들어, `%a{3,5}% `는 'aaa', 'aaaa' 및 'aaaaa'와만 일치합니다.
**참고**  
최솟값 또는 최댓값을 정의하지 않으려는 경우 *m* 또는 *n*을 생략할 수 있습니다.
+ `|`: 부울 'Or' 연산자로, 세로 막대의 양쪽에 있는 용어 중 하나와 일치합니다. 예제:
  + `%gra|ey%`는 'gray' 또는 'grey'와 일치할 수 있습니다.
  + `%^starting|^initializing|^shutting down%`은 'starting ...' 또는 'initializing ...' 또는 'shutting down'과 일치할 수 있지만 'skipping initializing ...'과는 일치하지 않습니다.
  + `%abcc|ab[^c]$`는 'abcc ...' 및 'aba ...'와 일치할 수 있지만 'aac ...'와 일치하지 않습니다.
+ `\`: 이스케이프 문자로, 이 문자를 사용하면 연산자의 특수한 의미 대신, 문자 그대로의 의미를 사용할 수 있습니다. 예를 들어, `%\[.\]%`는 대괄호가 이스케이프 처리되었으므로 '[a]', '[b]', '[7]', '[@]', '[]]' 및 '[ ]'와 같이 '[' 및 ']'로 묶인 모든 단일 문자와 일치합니다.
**참고**  
` %10\.10\.0\.1%`는 IP 주소 10.10.0.1과 일치하는 정규식을 생성하는 올바른 방법입니다.
+ `*`: 앞에 오는 용어의 0개 이상의 인스턴스와 일치합니다. 예를 들어, ` %ab*c% `는 'ac', 'abc' 및 'abbbc'와 일치할 수 있으며, `%ab[0-9]*%`는 'ab', 'ab0' 및 'ab129'와 일치할 수 있습니다.
+ `+`: 앞에 오는 용어의 1개 이상의 인스턴스와 일치합니다. 예를 들어, `%ab+c%`는 'abc', 'abbc' 및 'abbbc'와 일치할 수 있지만, 'ac'와는 일치하지 않습니다.
+ `.`: 모든 문자와 일치합니다. 예를 들어, `%.at%`는 'hat', 'cat', 'bat', '4at', '\$1at' 및 ' at'(공백으로 시작)을 포함하여 'at'으로 끝나는 3자리 문자열과 일치합니다.
**참고**  
 IP 주소와 일치하는 정규식을 생성하는 경우 `.` 연산자를 이스케이프 처리하지 않아야 합니다. 예를 들어, `%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\$19 및 A\$1F)를 지정합니다.
**참고**  
`\xhh`를 사용하여 필터 패턴에서 지원하지 않는 기호 문자를 일치시킬 수 있습니다. 예를 들어, `%\x3A%`는 `:`과 일치하며, `%\x28%`는 `(`와 일치합니다.

## 필터 패턴을 사용하여 정규식과 일치하는 용어 검색
<a name="matching-terms-regex"></a>

### 정규식을 사용하여 일치하는 용어 검색
<a name="matching-terms-regex-collapsible"></a>

`%`(정규식 패턴 앞뒤의 백분율 기호)로 묶인 정규식 패턴을 사용하여 로그 이벤트에서 일치하는 용어를 검색할 수 있습니다. 다음 코드 조각은 **AUTHORIZED** 키워드로 구성된 모든 로그 이벤트를 반환하는 필터 패턴의 예시를 보여줍니다.

지원되는 정규식 목록은 [지원되는 정규식](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`

이 필터 패턴은 단어 ***ARGUMENTS***를 포함하므로 다음 로그 이벤트 메시지를 반환하지 않습니다.
+ `[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')로 묶습니다. 문자열 기반 필터 패턴은 다음 부분을 포함해야 합니다.
+ **속성 선택기**

  뒤에 마침표가 있는 달러 기호('\$1.')로 속성 선택기를 설정합니다. 속성 선택기는 하이픈('-') 및 밑줄('\$1') 문자도 지원하는 영숫자 문자열입니다. 문자열은 과학적 표기법을 지원하지 않습니다. 속성 선택기는 JSON 로그 이벤트의 값 노드를 가리킵니다. 값 노드는 문자열이나 숫자일 수 있습니다. 속성 선택기 뒤에 배열을 배치합니다. 배열의 요소는 0부터 시작하는 번호 매기기 체계를 따릅니다. 즉, 배열의 첫 번째 요소는 요소 0이고, 두 번째 요소는 요소 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')로 묶습니다. 숫자 값과 일치하는 필터 패턴은 다음 부분을 포함해야 합니다.
+ **속성 선택기**

  뒤에 마침표가 있는 달러 기호('\$1.')로 속성 선택기를 설정합니다. 속성 선택기는 하이픈('-') 및 밑줄('\$1') 문자도 지원하는 영숫자 문자열입니다. 문자열은 과학적 표기법을 지원하지 않습니다. 속성 선택기는 JSON 로그 이벤트의 값 노드를 가리킵니다. 값 노드는 문자열이나 숫자일 수 있습니다. 속성 선택기 뒤에 배열을 배치합니다. 배열의 요소는 0부터 시작하는 번호 매기기 체계를 따릅니다. 즉, 배열의 첫 번째 요소는 요소 0이고, 두 번째 요소는 요소 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 로그 예제를 한 줄에 입력해야 합니다.

**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"` 요소와 일치하는 정규식이 포함되어 있습니다.

```
{ $.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"` 요소와 일치하는 정규식이 포함되어 있습니다.

```
{ $.* = %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\$1exists ]

로그 데이터에서 특정 필드를 포함하지 않는 JSON 로그를 반환하는 `NOT EXISTS` 변수를 사용하여 필터 패턴을 생성할 수 있습니다. 다음 필터 패턴은 `SomeOtherObject` 필드를 포함하지 않는 JSON 로그를 반환하는 `NOT EXISTS`를 사용합니다.

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

**참고**  
변수 `IS NOT` 및 `EXISTS`은 현재 지원되지 않습니다.

------

### 복합 표현식을 사용하여 JSON 객체에서 일치하는 용어 검색
<a name="compound-conditions-collapsible"></a>

필터 패턴에서 논리 연산자 AND('&&') 및 OR('\$1\$1')을 사용하여 둘 이상의 조건이 참인 로그 이벤트와 일치하는 복합 표현식을 생성할 수 있습니다. 복합 표현식은 괄호('()') 사용과 () > && > \$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 (&&) ]

이 필터 패턴에는 숫자 값이 `1`인 `"user"`의 `"id"`와 일치하고 문자열이 `"John.Doe@example.com"`인 `"users"` 배열 첫 번째 요소의 `"email"`과 일치하는 복합 표현식이 포함되어 있습니다.

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

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

이 필터 패턴에는 문자열이 `"John.Stiles@example.com"`인 `"user"`의 `"email"`과 일치하는 복합 표현식이 포함되어 있습니다.

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

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

이 필터 패턴에는 표현식이 `"actions"`의 세 번째 작업과 일치하지 않아서 일치 항목을 찾지 못하는 복합 표현식이 포함되어 있습니다.

```
                                
{ ($.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"`의 세 번째 작업과 일치하지 않아서 일치 항목을 찾지 못하는 복합 표현식이 포함되어 있습니다.

```
{ ($.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)를 와일드카드 또는 정규식으로 사용하여 필터 패턴에 조건을 제공할 수 있습니다. 필터 패턴 예제에서 `ip`는 IP 주소 범위 127.0.0.1\$1127.0.0.9와 일치하는 정규식을 사용하고, `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 ]

다음과 같은 공백으로 구분된 필터 패턴은 로그 이벤트의 첫 번째 단어가 ***ERROR***인 로그 이벤트를 반환합니다.

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

**참고**  
 패턴 일치를 사용하는 공백으로 구분된 지표 필터를 생성하는 경우 용어 순서를 지정한 후 빈 표시기를 포함해야 합니다. 예를 들어, 첫 번째 단어가 ***ERROR***인 로그 이벤트를 반환하는 필터 패턴을 생성하는 경우 **w1** 용어 뒤에 빈 **w2** 표시기를 포함합니다.

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

논리 연산자 AND('&&') 및 OR('\$1\$1')을 사용하여 조건을 포함하는 공백으로 구분된 필터 패턴을 생성할 수 있습니다. 다음 필터 패턴은 이벤트의 첫 번째 단어가 ***ERROR*** 또는 ***WARNING***인 로그 이벤트를 반환합니다.

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

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

하나 이상의 용어를 제외한 로그 이벤트를 반환하는 공백으로 구분된 필터 패턴을 생성할 수 있습니다. 제외하려는 용어 앞에 같지 않음 기호('\$1=')를 입력합니다. 다음 코드 조각은 첫 번째 단어가 ***ERROR*** 및 ***WARNING***이 아닌 로그 이벤트를 반환하는 필터 패턴 예제를 보여줍니다.

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

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

다음 코드 조각은 정규식을 사용하여 리소스 URI의 상위 항목과 일치하는 필터 패턴 예제를 보여줍니다.

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

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

다음 코드 조각은 정규식을 사용하여 리소스 URI의 하위 항목과 일치하는 필터 패턴 예제를 보여줍니다.

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

------