Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Syntax und Kontingente für Feldindexe
Sie erstellen Feldindizes, indem Sie Feldindexrichtlinien erstellen. Sie können Indexrichtlinien auf Kontoebene erstellen, die für Ihr gesamtes Konto gelten, und Sie können auch Richtlinien erstellen, die nur für eine einzelne Protokollgruppe gelten. Für kontoweite Indexrichtlinien können Sie eine festlegen, die für alle Protokollgruppen im Konto gilt. Sie können auch Indexrichtlinien auf Kontoebene erstellen, die für eine Teilmenge von Protokollgruppen im Konto gelten, die anhand der Präfixe ihrer Protokollgruppennamen ausgewählt werden. Wenn Sie mehrere Richtlinien auf Kontoebene in demselben Konto haben, dürfen sich die Präfixe der Protokollgruppennamen für diese Richtlinien nicht überschneiden.
Feldindexrichtlinien auf Protokollgruppenebene haben Vorrang vor Feldindexrichtlinien auf Kontoebene: Wenn Sie eine Indexrichtlinie auf Protokollgruppenebene erstellen, verwendet diese Protokollgruppe nur diese Richtlinie und ignoriert die Richtlinien auf Kontoebene.
Bei der Zuordnung von Protokollereignissen zu den Namen von Feldindizes wird zwischen Groß- und Kleinschreibung unterschieden. Beispielsweise entspricht ein Feldindex von RequestId
nicht einem Protokollereignis, das Folgendes enthält: requestId
Sie können bis zu 20 Indexrichtlinien auf Kontoebene haben. Wenn Sie mehrere Indexrichtlinien auf Kontoebene nach Präfixen für Protokollgruppennamen gefiltert haben, können keine zwei von ihnen dieselben oder sich überschneidende Präfixe für Protokollgruppennamen verwenden. Wenn Sie beispielsweise eine Richtlinie so gefiltert haben, dass Gruppen protokolliert werden, die mit beginnenmy-log
, können Sie keine andere Feldindexrichtlinie nach oder filtern lassen. my-logpprod
my-logging
Wenn Sie über eine Indexrichtlinie auf Kontoebene verfügen, die keine Namenspräfixe hat und für alle Protokollgruppen gilt, kann keine andere Indexrichtlinie auf Kontoebene erstellt werden.
Jede Indexrichtlinie hat die folgenden Kontingente und Einschränkungen:
Bis zu 20 Felder können in die Richtlinie aufgenommen werden.
Jeder Feldname kann bis zu 100 Zeichen enthalten.
Um einen Index für ein benutzerdefiniertes Feld in Ihren Protokollgruppen zu erstellen
@
, das mit beginnt, müssen Sie das Feld mit einem zusätzlichen@
Wert am Anfang des Feldnamens angeben. Wenn Ihre Protokollereignisse beispielsweise ein Feld mit dem Namen enthalten@userId
, müssen Sie angeben,@@userId
dass ein Index für dieses Feld erstellt werden soll.
Generierte Felder und reservierte Felder
CloudWatch Logs Insights generiert bei jedem Protokollereignis automatisch Systemfelder. Diesen generierten Feldern wird das Präfix vorangestellt. @
Weitere Informationen zu generierten Feldern finden Sie unterUnterstützte Protokolle und erkannte Felder.
Von diesen generierten Feldern werden die folgenden für die Verwendung als Feldindizes unterstützt:
@logStream
@ingestionTime
@requestId
@type
@initDuration
@duration
@billedDuration
@memorySize
@maxMemoryUsed
@xrayTraceId
@xraySetmentId
Um diese generierten Felder zu indizieren, müssen Sie @
bei der Angabe keine zusätzlichen Felder hinzufügen, wie dies bei benutzerdefinierten Feldern der Fall ist, die mit @
beginnen. Um beispielsweise einen Feldindex für zu erstellen@logStream
, geben Sie einfach @logStream
als Feldindex an.
Untergeordnete Felder und Array-Felder in JSON Protokollen
Sie können Felder indizieren, bei denen es sich um verschachtelte untergeordnete Felder oder Array-Felder in JSON Protokollen handelt.
Sie können beispielsweise einen Index des accessKeyId
untergeordneten Felds innerhalb des userIdentity
Felds in diesem Protokoll erstellen:
{ "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" } }] } }
Um dieses Feld zu erstellen, verweisen Sie sowohl bei der Erstellung des Feldindex als auch bei der Angabe in einer Abfrage mithilfe der Punktnotation (userIdentity.accessKeyId
) darauf. Die Abfrage könnte wie folgt aussehen:
fields @timestamp, @message | filterIndex userIdentity.accessKeyId = "11112222"
Im vorherigen Beispielereignis befindet sich das instanceId
Feld in einem Array innerhalb von requestParameters.instancesSet.items
Um dieses Feld sowohl bei der Erstellung des Feldindex als auch bei der Abfrage darzustellen, bezeichnen Sie es als requestParameters.instancesSet.items.0.instanceId
Die 0 bezieht sich auf die Position dieses Felds im Array.
Dann könnte eine Abfrage für dieses Feld wie folgt aussehen:
fields @timestamp, @message | filterIndex requestParameters.instancesSet.items.0.instanceId="i-abcde123"