Processeurs de mutation JSON - Amazon CloudWatch Logs

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Processeurs de mutation JSON

Cette section contient des informations sur les processeurs de mutation JSON que vous pouvez utiliser avec un transformateur d'événements de journal.

Ajouter des clés

Utilisez le addKeys processeur pour ajouter de nouvelles paires clé-valeur à l'événement du journal.

Champ Description Obligatoire ? Par défaut Restrictions

entries

Tableau d'entrées. Chaque élément du tableau peut contenir des overwriteIfExists champs keyvalue, et.

Oui

Nombre maximum d'entrées : 5

clé

La clé de la nouvelle entrée à ajouter

Oui

Longueur maximale : 128

Profondeur maximale des touches imbriquées : 3

value

La valeur de la nouvelle entrée à ajouter

Oui

Longueur maximale : 256

overwriteIfExists

Si vous définissez ce paramètre surtrue, la valeur existante est remplacée si elle existe key déjà dans l'événement. La valeur par défaut est false. Non

false

Aucune limite

Exemple

Prenons l'exemple d'événement de journal suivant :

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

La configuration du transformateur est la suivante, addKeys en utilisant parseJSON :

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

L'événement du journal transformé serait le suivant.

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

Supprimer les clés

Utilisez le deleteKeys processeur pour supprimer des champs d'un événement du journal. Ces champs peuvent inclure des paires clé-valeur.

Champ Description Obligatoire ? Par défaut Restrictions

Avec clés

Liste des clés à supprimer.

Oui

Aucune limite

Nombre maximum d'entrées : 5

Exemple

Prenons l'exemple d'événement de journal suivant :

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

La configuration du transformateur est la suivante, deleteKeys en utilisant parseJSON :

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

L'événement du journal transformé serait le suivant.

{ "outer_key": {} }

Touches de déplacement

Utilisez le moveKeys processeur pour déplacer une touche d'un champ à l'autre.

Champ Description Obligatoire ? Par défaut Restrictions

entries

Tableau d'entrées. Chaque élément du tableau peut contenir des overwriteIfExists champs sourcetarget, et.

Oui

Nombre maximum d'entrées : 5

source

La clé pour bouger

Oui

Longueur maximale : 128

Profondeur maximale des touches imbriquées : 3

cible

La clé pour passer à

Oui

Longueur maximale : 128

Profondeur maximale des touches imbriquées : 3

overwriteIfExists

Si vous définissez ce paramètre surtrue, la valeur existante est remplacée si elle existe key déjà dans l'événement. La valeur par défaut est false. Non

false

Aucune limite

Exemple

Prenons l'exemple d'événement de journal suivant :

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

La configuration du transformateur est la suivante, moveKeys en utilisant parseJSON :

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

L'événement du journal transformé serait le suivant.

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

Renommer les clés

Utilisez le renameKeys processeur pour renommer les clés dans un événement de journal.

Champ Description Obligatoire ? Par défaut Restrictions

entries

Tableau d'entrées. Chaque élément du tableau peut contenir des overwriteIfExists champs keytarget, et.

Oui

Aucune limite

Nombre maximum d'entrées : 5

clé

La clé pour renommer

Oui

Aucune limite

Longueur maximale : 128

cible

Le nouveau nom de clé

Oui

Aucune limite

Longueur maximale : 128

Profondeur maximale des touches imbriquées : 3

overwriteIfExists

Si vous définissez ce paramètre surtrue, la valeur existante est remplacée si elle existe key déjà dans l'événement. La valeur par défaut est false. Non

false

Aucune limite

Exemple

Prenons l'exemple d'événement de journal suivant :

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

La configuration du transformateur est la suivante, renameKeys en utilisant parseJSON :

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

L'événement du journal transformé serait le suivant.

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

Copier la valeur

Utilisez le copyValue processeur pour copier des valeurs dans un journal d'événements. Vous pouvez également utiliser ce processeur pour ajouter des métadonnées aux événements du journal, en copiant les valeurs des clés de métadonnées suivantes dans le journal des événements :@logGroupName,@logGroupStream,@accountId,@regionName. Ceci est illustré dans l'exemple suivant.

Champ Description Obligatoire ? Par défaut Restrictions

entries

Tableau d'entrées. Chaque élément du tableau peut contenir des overwriteIfExists champs sourcetarget, et.

Oui

Nombre maximum d'entrées : 5

source

La clé à copier

Oui

Longueur maximale : 128

Profondeur maximale des touches imbriquées : 3

cible

La clé vers laquelle copier la valeur

Oui

Aucune limite

Longueur maximale : 128

Profondeur maximale des touches imbriquées : 3

overwriteIfExists

Si vous définissez ce paramètre surtrue, la valeur existante est remplacée si elle existe key déjà dans l'événement. La valeur par défaut est false. Non

false

Aucune limite

Exemple

Prenons l'exemple d'événement de journal suivant :

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

La configuration du transformateur est la suivante, copyValue en utilisant parseJSON :

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

L'événement du journal transformé serait le suivant.

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

Le listToMap processeur prend une liste d'objets contenant des champs clés et les convertit en une carte de clés cibles.

Champ Description Obligatoire ? Par défaut Restrictions

source

La clé ProcessingEvent avec une liste d'objets qui seront convertis en carte

Oui

Longueur maximale : 128

Profondeur maximale des touches imbriquées : 3

clé

La clé des champs à extraire sous forme de clés dans la carte générée

Oui

Longueur maximale : 128

Clé de valeur

Si cela est spécifié, les valeurs que vous spécifiez dans ce paramètre seront extraites des source objets et insérées dans les valeurs de la carte générée. Dans le cas contraire, les objets originaux de la liste source seront placés dans les valeurs de la carte générée.

Non

Longueur maximale : 128

cible

La clé du champ qui contiendra la carte générée

Non

Nœud racine

Longueur maximale : 128

Profondeur maximale des touches imbriquées : 3

flatten

Valeur booléenne indiquant si la liste sera aplatie en éléments individuels ou si les valeurs de la carte générée seront des listes.

Par défaut, les valeurs des clés correspondantes seront représentées dans un tableau. Définissez flatten cette valeur sur true pour convertir le tableau en une valeur unique basée sur la valeur deflattenedElement.

Non

false

Élément aplati

Si vous définissez flatten surtrue, flattenedElement utilisez-le pour spécifier quel élément, first oulast, à conserver.

Obligatoire lorsque flatten le paramètre est défini sur true

La valeur ne peut être que first ou last

Exemple

Prenons l'exemple d'événement de journal suivant :

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

Transformateur pour le cas d'utilisation 1 : flatten est false

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

L'événement du journal transformé serait le suivant.

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

Transformateur pour le cas d'utilisation 2 : flatten est true et flattenedElement est first

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

L'événement du journal transformé serait le suivant.

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

Transformateur pour le cas d'utilisation 3 : flatten est true et flattenedElement est last

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

L'événement du journal transformé serait le suivant.

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