

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
<a name="CloudWatch-Logs-Transformation-JSONMutate"></a>

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

**Contents**
+ [Ajouter des clés](#CloudWatch-Logs-Transformation-addKeys)
+ [Supprimer les clés](#CloudWatch-Logs-Transformation-deleteKeys)
+ [Touches de déplacement](#CloudWatch-Logs-Transformation-moveKeys)
+ [Renommer les clés](#CloudWatch-Logs-Transformation-renameKeys)
+ [Copier la valeur](#CloudWatch-Logs-Transformation-copyValue)
+ [listToMap](#CloudWatch-Logs-Transformation-listToMap)

## Ajouter des clés
<a name="CloudWatch-Logs-Transformation-addKeys"></a>

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<br />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": [
                {
                    "key": "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
<a name="CloudWatch-Logs-Transformation-deleteKeys"></a>

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
<a name="CloudWatch-Logs-Transformation-moveKeys"></a>

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<br />Profondeur maximale des touches imbriquées : 3 | 
| cible | La clé pour passer à | Oui |  | Longueur maximale : 128<br />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
<a name="CloudWatch-Logs-Transformation-renameKeys"></a>

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<br />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
<a name="CloudWatch-Logs-Transformation-copyValue"></a>

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<br />Profondeur maximale des touches imbriquées : 3 | 
| cible | La clé vers laquelle copier la valeur | Oui | Aucune limite | Longueur maximale : 128<br />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": [
                {
                    "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"
                }
            ]
        }
    }
]
```

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
<a name="CloudWatch-Logs-Transformation-listToMap"></a>

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<br />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<br />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.<br />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 de`flattenedElement`. | 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"
}
```