

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.

# Syntaxe des règles de Contributor Insights dans CloudWatch
<a name="ContributorInsights-RuleSyntax"></a>

Cette section explique la syntaxe des règles de Contributor Insights. Utilisez cette syntaxe uniquement lorsque vous créez une règle en entrant un bloc JSON. Si vous utilisez l'Assistant pour créer une règle, vous n'avez pas besoin de connaître la syntaxe. Pour de plus amples informations sur la création de règles à l'aide de l'Assistant, veuillez consulter [Créez une règle Contributor Insights dans CloudWatch](ContributorInsights-CreateRule.md).

Toutes les correspondances entre les règles et les noms et valeurs des champs d'événements de journal sont sensibles à la casse.

L'exemple suivant illustre la syntaxe des journaux JSON.

```
{
    "Schema": {
        "Name": "CloudWatchLogRule",
        "Version": 1
    },
    "LogGroupNames": [
        "API-Gateway-Access-Logs*",
        "Log-group-name2"
    ],
    "LogFormat": "JSON",
    "Contribution": {
        "Keys": [
            "$.ip"
        ],
        "ValueOf": "$.requestBytes",
        "Filters": [
            {
                "Match": "$.httpMethod",
                "In": [
                    "PUT"
                ]
            }
        ]
    },
    "AggregateOn": "Sum"
}
```Champs dans les règles de Contributor Insights

Schema  
 La valeur de `Schema` pour une règle qui analyse les données des CloudWatch journaux doit toujours être `{"Name": "CloudWatchLogRule", "Version": 1}` 

LogGroupNames  
 Tableau de chaînes. Pour chaque élément du tableau, vous pouvez éventuellement utiliser `*` à la fin d'une chaîne pour inclure tous les groupes de journaux dont les noms commencent par ce préfixe.   
Veillez à utiliser des caractères génériques avec des noms de groupes de journaux. Vous encourez des frais pour chaque événement de journal correspondant à une règle. Si vous recherchez accidentellement plus de groupes de journaux que vous ne le souhaitez, des frais inattendus peuvent vous être facturés. Pour plus d'informations, consultez [Amazon CloudWatch Pricing](https://aws.amazon.com/cloudwatch/pricing).

LogGroupARNs  
Si vous créez cette règle dans un CloudWatch compte de surveillance d'observabilité entre comptes, vous pouvez l'utiliser `LogGroupARNs` pour spécifier des groupes de journaux dans les comptes sources liés au compte de surveillance, et pour spécifier des groupes de journaux dans le compte de surveillance lui-même. Vous devez spécifier `LogGroupNames` ou `LogGroupARNs` dans votre règle, mais pas les deux.  
 `LogGroupARNs` est un tableau de chaînes de caractères. Pour chaque élément du tableau, vous pouvez utiliser `*` comme caractère générique dans certaines situations. Par exemple, vous pouvez spécifier `arn:aws:logs:us-west-1:*:log-group/MyLogGroupName2` pour spécifier les groupes de journaux nommés `MyLogGroupName2` dans tous les comptes sources et dans le compte de surveillance, dans la région USA Ouest (Californie du Nord). Vous pouvez également spécifier `arn:aws:logs:us-west-1:111122223333:log-group/GroupNamePrefix*` pour spécifier tous les groupes de journaux dans la région USA Ouest (Californie du Nord) en 111122223333 dont le nom commence par `GroupNamePrefix`.  
Vous ne pouvez pas spécifier un identifiant de AWS compte partiel comme préfixe avec un joker.   
Faites attention lorsque vous utilisez des caractères génériques avec un groupe ARNs de journaux. Vous encourez des frais pour chaque événement de journal correspondant à une règle. Si vous recherchez accidentellement plus de groupes de journaux que vous ne le souhaitez, des frais inattendus peuvent vous être facturés. Pour plus d'informations, consultez [Amazon CloudWatch Pricing](https://aws.amazon.com/cloudwatch/pricing).

LogFormat  
 Les valeurs valides sont `JSON` et `CLF`. 

Contribution  
 Cet objet comprend un tableau `Keys` avec jusqu'à quatre membres, éventuellement un seul `ValueOf`, et éventuellement un tableau comportant jusqu'à quatre `Filters`. 

Clés  
 Tableau comportant jusqu'à quatre champs de journal utilisés comme dimensions pour classer les contributeurs. Si vous entrez plusieurs clés, chaque combinaison unique de valeurs pour les clés est comptabilisée comme un contributeur unique. Les champs doivent être spécifiés à l'aide de la notation de format de propriété JSON. 

ValueOf  
 (Facultatif) Spécifiez cette valeur uniquement lorsque vous spécifiez `Sum` comme valeur de `AggregateOn`. `ValueOf` spécifie un champ de journal avec des valeurs numériques. Dans ce type de règle, les contributeurs sont classés en fonction de leur somme de la valeur de ce champ, au lieu de leur nombre d'occurrences dans les entrées du journal. Par exemple, si vous souhaitez trier les contributeurs en fonction de leur `BytesSent` total sur une période, vous devez définir `ValueOf` sur `BytesSent` et spécifier `Sum` pour `AggregateOn`. 

Filtres  
 Spécifie un ensemble de quatre filtres maximum pour restreindre les événements du journal inclus dans le rapport. Si vous spécifiez plusieurs filtres, Contributor Insights les évalue avec un opérateur AND logique. Vous pouvez utiliser cela pour filtrer les événements de journal non pertinents dans votre recherche ou vous pouvez l'utiliser pour sélectionner un seul contributeur afin d'analyser son comportement.  
Chaque membre du tableau doit inclure un champ `Match` et un champ indiquant le type d'opérateur correspondant à utiliser.  
Le champ `Match` spécifie un champ journal à évaluer dans le filtre. Le champ journal est spécifié à l'aide de la notation de format de propriété JSON.  
Le champ opérateur correspondant doit être l'un des éléments suivants : `In`, `NotIn`, `StartsWith`, `GreaterThan`, `LessThan`, `EqualTo`, `NotEqualTo` ou `IsPresent`. Si le champ opérateur est `In`, `NotIn`, ou `StartsWith`, il est suivi d'un tableau de valeurs de chaîne à vérifier. Contributor Insights évalue le tableau de valeurs de chaîne avec un opérateur OR. Le tableau peut inclure jusqu'à 10 valeurs de chaîne.  
Si le champ opérateur est `GreaterThan`, `LessThan`, `EqualTo` ou `NotEqualTo`, il est suivi d'une seule valeur numérique à comparer.  
Si le champ opérateur est `IsPresent`, il est suivi de `true` ou de `false`. Cet opérateur met en correspondance les événements de journal selon que le champ de journal spécifié est présent ou non dans l'événement de journal. Le `isPresent` fonctionne uniquement avec des valeurs dans le nœud feuille des propriétés JSON. Par exemple, un filtre qui recherche des correspondances de `c-count` n'évalue pas un événement de journal avec une valeur de `details.c-count.c1`.  
Consultez les quatre exemples de filtres suivants :  

```
{"Match": "$.httpMethod", "In": [ "PUT", ] }
{"Match": "$.StatusCode", "EqualTo": 200 }
{"Match": "$.BytesReceived", "GreaterThan": 10000}
{"Match": "$.eventSource", "StartsWith": [ "ec2", "ecs" ] }
```

AggregateOn  
 Les valeurs valides sont `Count` et `Sum`. Spécifie si le rapport doit être agrégé en fonction d'un nombre d'occurrences ou d'une somme des valeurs du champ spécifié dans le champ `ValueOf`. 

**Notation de format de propriété JSON**

Les champs `Keys`, `ValueOf` et `Match` suivent le format de propriété JSON avec notation point, où `$` représente la racine de l'objet JSON. Ceci est suivi d'un point, puis d'une chaîne alphanumérique avec le nom de la sous-propriété. Plusieurs niveaux de propriétés sont pris en charge.

Le premier caractère de la chaîne doit être une lettre majuscule ou minuscule. Les caractères suivants de la chaîne peuvent être des lettres majuscules, minuscules ou des chiffres de 0 à 9.

La liste suivante illustre des exemples valides de format de propriété JSON :

```
$.userAgent
$.endpoints[0]
$.users[1].name
$.requestParameters.instanceId
```

**Champ supplémentaire dans les règles des journaux CLF**

Les événements du journal Common Log Format (CLF) n'ont pas de noms pour les champs comme le fait JSON. Pour fournir les champs à utiliser pour les règles Contributor Insights, un événement de journal CLF peut être traité comme un tableau avec un index commençant à partir de `1`. Vous pouvez spécifier le premier champ comme **"1"**, le second champ comme **"2"**, etc.

Pour faciliter la lecture d'une règle pour un journal CLF, vous pouvez utiliser `Fields`. Cela vous permet de fournir un alias de dénomination pour les emplacements de champ CLF. Par exemple, vous pouvez spécifier que l'emplacement « 4 » est une adresse IP. Une fois spécifié, `IpAddress` peut être utilisé comme propriété dans `Keys`, `ValueOf` et `Filters` dans la règle.

Voici un exemple de règle pour un journal CLF qui utilise le champ `Fields`.

```
{
    "Schema": {
        "Name": "CloudWatchLogRule",
        "Version": 1
    },
    "LogGroupNames": [
        "API-Gateway-Access-Logs*"
    ],
    "LogFormat": "CLF",
    "Fields": {
        "4": "IpAddress",
        "7": "StatusCode"
    },
    "Contribution": {
        "Keys": [
            "IpAddress"
        ],
        "Filters": [
            {
                "Match": "StatusCode",
                "EqualTo": 200
            }
        ]
    },
    "AggregateOn": "Count"
}
```