

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

# JSON 변형 프로세서
<a name="CloudWatch-Logs-Transformation-JSONMutate"></a>

이 섹션에는 로그 이벤트 변환기와 함께 사용할 수 있는 JSON 변형 프로세서에 대한 정보가 포함되어 있습니다.

**Contents**
+ [addKeys](#CloudWatch-Logs-Transformation-addKeys)
+ [deleteKeys](#CloudWatch-Logs-Transformation-deleteKeys)
+ [moveKeys](#CloudWatch-Logs-Transformation-moveKeys)
+ [renameKeys](#CloudWatch-Logs-Transformation-renameKeys)
+ [copyValue](#CloudWatch-Logs-Transformation-copyValue)
+ [listToMap](#CloudWatch-Logs-Transformation-listToMap)

## addKeys
<a name="CloudWatch-Logs-Transformation-addKeys"></a>

`addKeys` 프로세서를 사용하여 로그 이벤트에 새 키-값 쌍을 추가합니다.


| 필드 | 설명 | 필수 | 기본값 | 제한 사항 | 
| --- | --- | --- | --- | --- | 
|  항목 | 항목의 배열. 배열의 각 항목에는 key, value 및 overwriteIfExists 필드가 포함될 수 있습니다. |  예 |  |  최대 항목: 5 | 
|  키 | 추가할 새 항목의 키 |  예 |  |  최대 길이: 128 최대 중첩 키 깊이: 3 | 
|  값 | 추가할 새 항목의 값 |  예 |  |  최대 길이: 256 | 
|  overwriteIfExists | 이 값을 true로 설정하면 이벤트에 key가 이미 있는 경우 기존 값을 덮어씁니다. 기본값은 false입니다. | 아니요 |  false | 제한 없음 | 

**예제**

다음 예제 로그 이벤트를 살펴봅니다.

```
{
    "outer_key": {
        "inner_key": "inner_value"
    }
}
```

트랜스포머 구성은 `addKeys`를 `parseJSON`과 사용하는 경우 다음과 같습니다.

```
[
    {
        "parseJSON": {}
    },
    {
        "addKeys": {
            "entries": [
                {
                    "key": "outer_key.new_key",
                    "value": "new_value"
                }
            ]
        }
    }
]
```

변환된 로그 이벤트는 다음과 같습니다.

```
{
  "outer_key": {
    "inner_key": "inner_value",
    "new_key": "new_value"
  }
}
```

## deleteKeys
<a name="CloudWatch-Logs-Transformation-deleteKeys"></a>

`deleteKeys` 프로세서를 사용하여 로그 이벤트에서 필드를 삭제합니다. 이러한 필드에는 키-값 쌍이 포함될 수 있습니다.


| 필드 | 설명 | 필수 | 기본값 | 제한 사항 | 
| --- | --- | --- | --- | --- | 
|  withKeys | 삭제할 키의 목록. |  예 | 제한 없음 |  최대 항목: 5 | 

**예제**

다음 예제 로그 이벤트를 살펴봅니다.

```
{
    "outer_key": {
        "inner_key": "inner_value"
    }
}
```

트랜스포머 구성은 `deleteKeys`를 `parseJSON`과 사용하는 경우 다음과 같습니다.

```
[
    {
        "parseJSON": {}
    },
    {
        "deleteKeys": {
            "withKeys":["outer_key.inner_key"]
        }
    }
]
```

변환된 로그 이벤트는 다음과 같습니다.

```
{
  "outer_key": {}
}
```

## moveKeys
<a name="CloudWatch-Logs-Transformation-moveKeys"></a>

`moveKeys` 프로세서를 사용하여 한 필드에서 다른 필드로 키를 이동합니다.


| 필드 | 설명 | 필수 | 기본값 | 제한 사항 | 
| --- | --- | --- | --- | --- | 
|  항목 | 항목의 배열. 배열의 각 항목에는 source, target 및 overwriteIfExists 필드가 포함될 수 있습니다. |  예 |  |  최대 항목: 5 | 
|  source | 이동할 키 |  예 |  |  최대 길이: 128 최대 중첩 키 깊이: 3 | 
|  대상 | 이동할 키 |  예 |  |  최대 길이: 128 최대 중첩 키 깊이: 3 | 
|  overwriteIfExists | 이 값을 true로 설정하면 이벤트에 key가 이미 있는 경우 기존 값을 덮어씁니다. 기본값은 false입니다. | 아니요 |  false | 제한 없음 | 

**예제**

다음 예제 로그 이벤트를 살펴봅니다.

```
{
    "outer_key1": {
        "inner_key1": "inner_value1"
    },
    "outer_key2": {
        "inner_key2": "inner_value2"
    }
}
```

트랜스포머 구성은 `moveKeys`를 `parseJSON`과 사용하는 경우 다음과 같습니다.

```
[
    {
        "parseJSON": {}
    },
    {
        "moveKeys": {
            "entries": [
                {
                    "source": "outer_key1.inner_key1",
                    "target": "outer_key2"
                }
            ]
        }
    }
]
```

변환된 로그 이벤트는 다음과 같습니다.

```
{
  "outer_key1": {},
  "outer_key2": {
    "inner_key2": "inner_value2",
    "inner_key1": "inner_value1"
  }
}
```

## renameKeys
<a name="CloudWatch-Logs-Transformation-renameKeys"></a>

`renameKeys` 프로세서를 사용하여 로그 이벤트에서 키의 이름을 바꿉니다.


| 필드 | 설명 | 필수 | 기본값 | 제한 사항 | 
| --- | --- | --- | --- | --- | 
|  항목 | 항목의 배열. 배열의 각 항목에는 key, target 및 overwriteIfExists 필드가 포함될 수 있습니다. |  예 | 제한 없음 |  최대 항목: 5 | 
|  키 | 이름을 바꿀 키 |  예 | 제한 없음 |  최대 길이: 128  | 
|  대상 | 새 키 이름 |  예 | 제한 없음 |  최대 길이: 128 최대 중첩 키 깊이: 3 | 
|  overwriteIfExists | 이 값을 true로 설정하면 이벤트에 key가 이미 있는 경우 기존 값을 덮어씁니다. 기본값은 false입니다. | 아니요 |  false | 제한 없음 | 

**예제**

다음 예제 로그 이벤트를 살펴봅니다.

```
{
    "outer_key": {
        "inner_key": "inner_value"
    }
}
```

트랜스포머 구성은 `renameKeys`를 `parseJSON`과 사용하는 경우 다음과 같습니다.

```
[
    {
        "parseJSON": {}
    },
    {
        "renameKeys": {
            "entries": [
                {
                    "key": "outer_key",
                    "target": "new_key"
                }
            ]
        }
    }
]
```

변환된 로그 이벤트는 다음과 같습니다.

```
{
  "new_key": {
    "inner_key": "inner_value"
  }
}
```

## copyValue
<a name="CloudWatch-Logs-Transformation-copyValue"></a>

`copyValue` 프로세서를 사용하여 로그 이벤트 내에서 값을 복사합니다. 또한 이 프로세서를 사용하여 `@logGroupName`, `@logGroupStream`, `@accountId`, `@regionName` 등 메타데이터 키 값을 로그 이벤트에 복사하여 로그 이벤트에 메타데이터를 추가할 수 있습니다. 다음 예제에 설명되어 있습니다.


| 필드 | 설명 | 필수 | 기본값 | 제한 사항 | 
| --- | --- | --- | --- | --- | 
|  항목 | 항목의 배열. 배열의 각 항목에는 source, target 및 overwriteIfExists 필드가 포함될 수 있습니다. |  예 |  |  최대 항목: 5 | 
|  source | 복사할 키 |  예 |  |  최대 길이: 128 최대 중첩 키 깊이: 3 | 
|  대상 | 값을 복사할 키 |  예 | 제한 없음 |  최대 길이: 128 최대 중첩 키 깊이: 3 | 
|  overwriteIfExists | 이 값을 true로 설정하면 이벤트에 key가 이미 있는 경우 기존 값을 덮어씁니다. 기본값은 false입니다. | 아니요 |  false | 제한 없음 | 

**예제**

다음 예제 로그 이벤트를 살펴봅니다.

```
{
    "outer_key": {
        "inner_key": "inner_value"
    }
}
```

트랜스포머 구성은 `copyValue`를 `parseJSON`과 사용하는 경우 다음과 같습니다.

```
[
    {
        "parseJSON": {}
    },
    {
        "copyValue": {
            "entries": [
                {
                    "key": "outer_key.new_key",
                    "target": "new_key"
                },
                {
                    "source": "@logGroupName",
                    "target": "log_group_name"
                },
                {
                    "source": "@logGroupStream",
                    "target": "log_group_stream"
                },
                {
                    "source": "@accountId",
                    "target": "account_id"
                },
                {
                    "source": "@regionName",
                    "target": "region_name"
                }
            ]
        }
    }
]
```

변환된 로그 이벤트는 다음과 같습니다.

```
{
  "outer_key": {
    "inner_key": "inner_value"
  },
  "new_key": "inner_value",
  "log_group_name": "myLogGroupName",
  "log_group_stream": "myLogStreamName",
  "account_id": "012345678912",
  "region_name": "us-east-1"
}
```

## listToMap
<a name="CloudWatch-Logs-Transformation-listToMap"></a>

`listToMap` 프로세서는 키 필드가 포함된 객체 목록을 가져와 대상 키 맵으로 변환합니다.


| 필드 | 설명 | 필수 | 기본값 | 제한 사항 | 
| --- | --- | --- | --- | --- | 
|  source | 맵으로 변환될 객체 목록이 있는 ProcessingEvent의 키 |  예 |  |  최대 길이: 128 최대 중첩 키 깊이: 3 | 
|  키 | 생성된 맵에서 키로 추출할 필드의 키 |  예 |  |  최대 길이: 128  | 
|  valueKey | 이렇게 지정하면 이 파라미터에서 지정하는 값이 source 객체에서 추출되어 생성된 맵의 값에 추가됩니다. 그렇지 않으면 소스 목록의 원본 객체가 생성된 맵의 값에 추가됩니다. |  아니요 |  |  최대 길이: 128  | 
|  대상 | 생성된 맵을 보관할 필드의 키. |  아니요 |  루트 노드 |  최대 길이: 128 최대 중첩 키 깊이: 3 | 
|  평면화 | 목록을 단일 항목으로 평탄화할지 아니면 생성된 맵의 값을 목록으로 만들지 나타내는 부울 값입니다. 기본적으로 매칭 키의 값은 배열로 표시됩니다. `flatten`을 `true`로 설정하여 배열을 `flattenedElement`의 값을 기반으로 하는 단일 값으로 변환합니다. |  아니요 |  false |  | 
|  flattenedElement | flatten을 true로 설정한 경우 flattenedElement를 사용하여 유지할 요소 first 또는 last를 지정합니다. |  `flatten`이 `true`로 설정된 경우 필요합니다. |  |  값은 first 또는 last만 될 수 있습니다. | 

**예제**

다음 예제 로그 이벤트를 살펴봅니다.

```
{
    "outer_key": [
        {
            "inner_key": "a",
            "inner_value": "val-a"
        },
        {
            "inner_key": "b",
            "inner_value": "val-b1"
        },
        {
            "inner_key": "b",
            "inner_value": "val-b2"
        },
        {
            "inner_key": "c",
            "inner_value": "val-c"
        }
    ]
}
```

**사용 사례 1의 트랜스포머:** `flatten`은 `false`입니다

```
[
    {
        "parseJSON": {}
    },
    {
        "listToMap": {
            "source": "outer_key"
            "key": "inner_key",
            "valueKey": "inner_value",
            "flatten": false
        }
    }
]
```

변환된 로그 이벤트는 다음과 같습니다.

```
{
    "outer_key": [
        {
            "inner_key": "a",
            "inner_value": "val-a"
        },
        {
            "inner_key": "b",
            "inner_value": "val-b1"
        },
        {
            "inner_key": "b",
            "inner_value": "val-b2"
        },
        {
            "inner_key": "c",
            "inner_value": "val-c"
        }
    ],
    "a": [
        "val-a"
    ],
    "b": [
        "val-b1",
        "val-b2"
    ],
    "c": [
        "val-c"
    ]
}
```

**사용 사례 2의 트랜스포머:** `flatten`은 `true`이고, `flattenedElement`는 `first`입니다

```
[
    {
        "parseJSON": {}
    },
    {
        "listToMap": {
            "source": "outer_key"
            "key": "inner_key",
            "valueKey": "inner_value",
            "flatten": true,
            "flattenedElement": "first"
        }
    }
]
```

변환된 로그 이벤트는 다음과 같습니다.

```
{
    "outer_key": [
        {
            "inner_key": "a",
            "inner_value": "val-a"
        },
        {
            "inner_key": "b",
            "inner_value": "val-b1"
        },
        {
            "inner_key": "b",
            "inner_value": "val-b2"
        },
        {
            "inner_key": "c",
            "inner_value": "val-c"
        }
    ],
    "a": "val-a",
    "b": "val-b1",
    "c": "val-c"
}
```

**사용 사례 3의 트랜스포머:** `flatten`은 `true`이고, `flattenedElement`는 `last`입니다

```
[
    {
        "parseJSON": {}
    },
    {
        "listToMap": {
            "source": "outer_key"
            "key": "inner_key",
            "valueKey": "inner_value",
            "flatten": true,
            "flattenedElement": "last"
        }
    }
]
```

변환된 로그 이벤트는 다음과 같습니다.

```
{
    "outer_key": [
        {
            "inner_key": "a",
            "inner_value": "val-a"
        },
        {
            "inner_key": "b",
            "inner_value": "val-b1"
        },
        {
            "inner_key": "b",
            "inner_value": "val-b2"
        },
        {
            "inner_key": "c",
            "inner_value": "val-c"
        }
    ],
    "a": "val-a",
    "b": "val-b2",
    "c": "val-c"
}
```