JSON ミューテーションプロセッサ - Amazon CloudWatch Logs

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

JSON ミューテーションプロセッサ

このセクションでは、ログイベントトランスフォーマーで使用できる JSON ミューテーションプロセッサについて説明します。

addKeys

addKeys プロセッサを使用して、ログイベントに新しいキーと値のペアを追加します。

フィールド 説明 必須? デフォルト 制限

エントリ

エントリの配列。配列内の各項目には、keyvalueoverwriteIfExists フィールドを含めることができます。

はい

最大エントリ: 5

key

追加する新しいエントリのキー

はい

最大長: 128

ネストされたキーの最大深度: 3

追加する新しいエントリの値

はい

最大長: 256

overwriteIfExists

これを true に設定すると、key が既にイベントに存在する場合、既存の値は上書きされます。デフォルト値は false です。 いいえ

false

無制限

ログイベントの例を以下に示します。

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

トランスフォーマーの設定は次のようになります。addKeysparseJSON を併用します。

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

変換されたログイベントは次のとおりです。

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

DeleteKeys

deleteKeys プロセッサを使用して、ログイベントからフィールドを削除します。これらのフィールドには、キーと値のペアを含めることができます。

フィールド 説明 必須? デフォルト 制限

withKeys

削除するキーのリスト。

はい

無制限

最大エントリ: 5

ログイベントの例を以下に示します。

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

トランスフォーマーの設定は次のようになります。deleteKeysparseJSON を併用します。

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

変換されたログイベントは次のとおりです。

{ "outer_key": {} }

moveKeys

moveKeys プロセッサを使用して、あるフィールドから別のフィールドにキーを移動します。

フィールド 説明 必須? デフォルト 制限

エントリ

エントリの配列。配列内の各項目には、sourcetargetoverwriteIfExists フィールドを含めることができます。

はい

最大エントリ: 5

ソース

移動するキー

はい

最大長: 128

ネストされたキーの最大深度: 3

target

移動先のキー

はい

最大長: 128

ネストされたキーの最大深度: 3

overwriteIfExists

これを true に設定すると、key が既にイベントに存在する場合、既存の値は上書きされます。デフォルト値は false です。 いいえ

false

無制限

ログイベントの例を以下に示します。

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

トランスフォーマーの設定は次のようになります。moveKeysparseJSON を併用します。

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

変換されたログイベントは次のとおりです。

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

renameKeys

renameKeys プロセッサを使用して、ログイベントのキーの名前を変更します。

フィールド 説明 必須? デフォルト 制限

エントリ

エントリの配列。配列内の各項目には、keytargetoverwriteIfExists フィールドを含めることができます。

はい

無制限

最大エントリ: 5

key

名前を変更するキー

はい

無制限

最大長: 128

target

新しいキー名

はい

無制限

最大長: 128

ネストされたキーの最大深度: 3

overwriteIfExists

これを true に設定すると、key が既にイベントに存在する場合、既存の値は上書きされます。デフォルト値は false です。 いいえ

false

無制限

ログイベントの例を以下に示します。

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

トランスフォーマーの設定は次のようになります。renameKeysparseJSON を併用します。

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

変換されたログイベントは次のとおりです。

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

copyValue

copyValue プロセッサを使用して、ログイベント内の値をコピーします。このプロセッサを使用して、以下のメタデータキーの値をログイベントにコピーすることでメタデータをログイベントに追加することもできます。@logGroupName@logGroupStream@accountId@regionName。これについて、次の例で説明します。

フィールド 説明 必須? デフォルト 制限

エントリ

エントリの配列。配列内の各項目には、sourcetargetoverwriteIfExists フィールドを含めることができます。

はい

最大エントリ: 5

ソース

コピーするキー

はい

最大長: 128

ネストされたキーの最大深度: 3

target

値をコピーするキー

はい

無制限

最大長: 128

ネストされたキーの最大深度: 3

overwriteIfExists

これを true に設定すると、key が既にイベントに存在する場合、既存の値は上書きされます。デフォルト値は false です。 いいえ

false

無制限

ログイベントの例を以下に示します。

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

トランスフォーマーの設定は次のようになります。copyValueparseJSON を併用します。

[ { "parseJSON": {} }, { "copyValue": { "entries": [ { "source": "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

listToMap プロセッサは、キーフィールドを含むオブジェクトのリストを取得し、ターゲットキーのマップに変換します。

フィールド 説明 必須? デフォルト 制限

ソース

マップに変換されるオブジェクトのリストを含む ProcessingEvent のキー

はい

最大長: 128

ネストされたキーの最大深度: 3

key

生成されたマップでキーとして抽出されるフィールドのキー

はい

最大長: 128

valueKey

これを指定すると、このパラメータで指定した値が source オブジェクトから抽出され、生成されたマップの値に配置されます。それ以外の場合、ソースリスト内の元のオブジェクトは、生成されたマップの値に配置されます。

いいえ

最大長: 128

target

生成されたマップを保持するフィールドのキー

いいえ

ルートノード

最大長: 128

ネストされたキーの最大深度: 3

flatten

リストを単一の項目にフラット化するか、生成されたマップの値をリストにするかを示すブール値。

デフォルトでは、一致するキーの値は配列で表されます。flattentrue に設定すると、配列は flattenedElement の値に基づいて 1 つの値に変換されます。

いいえ

false

flattenedElement

flattentrue に設定する場合は、flattenedElement を使用して、first または last のどちらの要素を保持するかを指定します。

flattentrue に設定されている場合は必須です。

値は 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 で、flattenedElementfirst です

[ { "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 で、flattenedElementlast です

[ { "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" }