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 et quotas d'index de champs
Vous créez des index de champs en créant des politiques d'index de champs. Vous pouvez créer des politiques d'index au niveau du compte qui s'appliquent à l'ensemble de votre compte, et vous pouvez également créer des politiques qui ne s'appliquent qu'à un seul groupe de journaux. Pour les politiques d'indexation applicables à l'ensemble du compte, vous pouvez en définir une qui s'applique à tous les groupes de journaux du compte. Vous pouvez également créer des politiques d'index au niveau du compte qui s'appliquent à un sous-ensemble de groupes de journaux du compte, sélectionnés par les préfixes de leurs noms de groupes de journaux. Si vous avez plusieurs politiques au niveau du compte dans le même compte, les préfixes des noms de groupes de journaux associés à ces politiques ne peuvent pas se chevaucher.
Les politiques d'index des champs au niveau du groupe de journaux remplacent les politiques d'index des champs au niveau du compte : si vous créez une politique d'index au niveau du groupe de journaux, ce groupe de journaux utilise uniquement cette politique et ignore les politiques au niveau du compte.
Les correspondances entre les événements du journal et les noms des index de champs distinguent les majuscules et minuscules. Par exemple, un index de champ de RequestId
ne correspondra pas à un événement de journal contenantrequestId
.
Vous pouvez avoir jusqu'à 20 politiques d'indexation au niveau du compte. Si plusieurs politiques d'index au niveau du compte sont filtrées en fonction des préfixes de nom de groupe de journaux, aucune d'entre elles ne peut utiliser les mêmes préfixes de nom de groupe de journaux ou des préfixes qui se chevauchent. Par exemple, si vous avez une politique filtrée pour enregistrer les groupes commençant parmy-log
, vous ne pouvez pas filtrer une autre politique d'index de champs sur my-logpprod
oumy-logging
.
Si vous disposez d'une politique d'index au niveau du compte qui ne comporte aucun préfixe de nom et s'applique à tous les groupes de journaux, aucune autre politique d'index au niveau du compte ne peut être créée.
Chaque politique d'indice comporte les quotas et restrictions suivants :
Jusqu'à 20 champs peuvent être inclus dans la politique.
Chaque nom de champ peut comporter jusqu'à 100 caractères.
Pour créer un index d'un champ personnalisé dans vos groupes de journaux commençant par
@
, vous devez spécifier le champ avec un extra@
au début du nom du champ. Par exemple, si les événements de votre journal incluent un champ nommé@userId
, vous@@userId
devez spécifier de créer un index pour ce champ.
Champs générés et champs réservés
CloudWatch Logs Insights génère automatiquement des champs système pour chaque événement de journal. Ces champs générés sont préfixés par. @
Pour plus d'informations sur les champs générés, consultezJournaux pris en charge et champs découverts.
Parmi ces champs générés, les suivants sont pris en charge pour être utilisés comme index de champs :
@logStream
@ingestionTime
@requestId
@type
@initDuration
@duration
@billedDuration
@memorySize
@maxMemoryUsed
@xrayTraceId
@xraySetmentId
Pour indexer ces champs générés, il n'est pas nécessaire d'en ajouter un @
autre lorsque vous les spécifiez, comme vous devez le faire pour les champs personnalisés commençant par@
. Par exemple, pour créer un index de champ pour@logStream
, il suffit de le spécifier @logStream
comme index de champ.
Champs enfants et champs de tableau dans les journaux JSON
Vous pouvez indexer des champs qui sont des champs enfants ou des champs matriciels imbriqués dans les journaux JSON.
Par exemple, vous pouvez créer un index du champ accessKeyId
enfant dans le userIdentity
champ de ce journal :
{ "eventVersion": "1.0", "userIdentity": { "type": "IAMUser", "principalId": "EXAMPLE_PRINCIPAL_ID", "arn": "arn: aws: iam: : 123456789012: user/Alice", "accessKeyId": "11112222", "accountId": "123456789012", "userName": "Alice" }, "eventTime": "2014-03-06T21: 22: 54Z", "eventSource": "ec2.amazonaws.com", "eventName": "StartInstances", "awsRegion": "us-east-2", "sourceIPAddress": "192.0.2.255", "userAgent": "ec2-api-tools1.6.12.2", "requestParameters": { "instancesSet": { "items": [{ "instanceId": "i-abcde123", "currentState": { "code": 0, "name": "pending" }, "previousState": { "code": 80, "name": "stopped" } }] } } }
Pour créer ce champ, vous devez y faire référence à l'aide de la notation par points (userIdentity.accessKeyId
) à la fois lors de la création de l'index du champ et lors de sa spécification dans une requête. La requête pourrait ressembler à ceci :
fields @timestamp, @message | filterIndex userIdentity.accessKeyId = "11112222"
Dans l'exemple précédent, le instanceId
champ se trouve dans un tableau dans requestParameters.instancesSet.items
Pour représenter ce champ à la fois lors de la création de l'index du champ et lors de l'interrogation, appelez-le car requestParameters.instancesSet.items.0.instanceId
le 0 fait référence à la place de ce champ dans le tableau.
Une requête pour ce champ peut alors être la suivante :
fields @timestamp, @message | filterIndex requestParameters.instancesSet.items.0.instanceId="i-abcde123"