

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

# 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 | 
| key | 追加する新しいエントリのキー | はい |  | 最大長: 128<br />ネストされたキーの最大深度: 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 | 
| ソース | 移動するキー | はい |  | 最大長: 128<br />ネストされたキーの最大深度: 3 | 
| target | 移動先のキー | はい |  | 最大長: 128<br />ネストされたキーの最大深度: 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 | 
| key | 名前を変更するキー | はい | 無制限 | 最大長: 128 | 
| target | 新しいキー名 | はい | 無制限 | 最大長: 128<br />ネストされたキーの最大深度: 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 | 
| ソース | コピーするキー | はい |  | 最大長: 128<br />ネストされたキーの最大深度: 3 | 
| target | 値をコピーするキー | はい | 無制限 | 最大長: 128<br />ネストされたキーの最大深度: 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` プロセッサは、キーフィールドを含むオブジェクトのリストを取得し、ターゲットキーのマップに変換します。


| フィールド | 説明 | 必須? | デフォルト | 制限 | 
| --- | --- | --- | --- | --- | 
| ソース | マップに変換されるオブジェクトのリストを含む ProcessingEvent のキー | はい |  | 最大長: 128<br />ネストされたキーの最大深度: 3 | 
| key | 生成されたマップでキーとして抽出されるフィールドのキー | はい |  | 最大長: 128 | 
| valueKey | これを指定すると、このパラメータで指定した値が source オブジェクトから抽出され、生成されたマップの値に配置されます。それ以外の場合、ソースリスト内の元のオブジェクトは、生成されたマップの値に配置されます。 | いいえ |  | 最大長: 128 | 
| target | 生成されたマップを保持するフィールドのキー  | いいえ | ルートノード | 最大長: 128<br />ネストされたキーの最大深度: 3 | 
| flatten | リストを単一の項目にフラット化するか、生成されたマップの値をリストにするかを示すブール値。<br />デフォルトでは、一致するキーの値は配列で表されます。`flatten` を `true` に設定すると、配列は `flattenedElement` の値に基づいて 1 つの値に変換されます。 | いいえ | 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"
}
```