翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
フィールドインデックスの構文とクォータ
フィールドインデックスを作成するには、フィールドインデックスポリシーを作成します。アカウント全体に適用されるアカウントレベルのインデックスポリシーを作成したり、単一のロググループのみに適用されるポリシーを作成したりできます。アカウント全体のインデックスポリシーでは、アカウント内のすべてのロググループに適用されるインデックスポリシーを設定できます。ロググループ名のプレフィックスによって選択された、アカウントのロググループのサブセットに適用されるアカウントレベルのインデックスポリシーを作成することもできます。同じアカウントに複数のアカウントレベルのポリシーがある場合、これらのポリシーのロググループ名のプレフィックスは重複できません。
ロググループレベルのフィールドインデックスポリシーは、アカウントレベルのフィールドインデックスポリシーを上書きします。ロググループレベルのインデックスポリシーを作成すると、そのロググループはそのポリシーのみを使用し、アカウントレベルのポリシーを無視します。
ログイベントとフィールドインデックスの名前の一致では、大文字と小文字が区別されます。たとえば、 のフィールドインデックスRequestId
は、 を含むログイベントと一致しませんrequestId
。
最大 20 個のアカウントレベルのインデックスポリシーを持つことができます。グループ名のプレフィックスをログに記録するようにフィルタリングされた複数のアカウントレベルのインデックスポリシーがある場合、同じまたは重複するロググループ名のプレフィックスを 2 つ使用することはできません。たとえば、 で始まるロググループにフィルタリングされたポリシーがある場合my-log
、別のフィールドインデックスポリシーを my-logpprod
または にフィルタリングすることはできませんmy-logging
。
名前プレフィックスがなく、すべてのロググループに適用されるアカウントレベルのインデックスポリシーがある場合、他のアカウントレベルのインデックスポリシーを作成することはできません。
各インデックスポリシーには、次のクォータと制限があります。
-
最大 20 個のフィールドをポリシーに含めることができます。
-
各フィールド名には最大 100 文字を含めることができます。
-
で始まるロググループにカスタムフィールドのインデックスを作成するには
@
、フィールド名の先頭@
に を追加してフィールドを指定する必要があります。たとえば、ログイベントに という名前のフィールドが含まれている場合@userId
、このフィールドのインデックス@@userId
を作成するには を指定する必要があります。
生成されたフィールドと予約されたフィールド
CloudWatch Logs Insights は、各ログイベントにシステムフィールドを自動的に生成します。これらの生成されたフィールドのプレフィックスは です@
。生成されたフィールドの詳細については、「」を参照してくださいサポートされるログと検出されるフィールド。
これらの生成されたフィールドのうち、フィールドインデックスとして使用するために以下がサポートされています。
-
@logStream
-
@ingestionTime
-
@requestId
-
@type
-
@initDuration
-
@duration
-
@billedDuration
-
@memorySize
-
@maxMemoryUsed
-
@xrayTraceId
-
@xraySetmentId
これらの生成されたフィールドのインデックスを作成するには、 で始まるカスタムフィールドに対して行う必要があるため、それらを指定する@
ときに を追加する必要はありません@
。たとえば、 のフィールドインデックスを作成するには@logStream
、 をフィールドインデックス@logStream
として指定します。
JSON ログの子フィールドと配列フィールド
JSON ログのネストされた子フィールドまたは配列フィールドであるフィールドのインデックスを作成できます。
たとえば、このログ内の フィールド内にaccessKeyId
子userIdentity
フィールドのインデックスを作成できます。
{ "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" } }] } } }
このフィールドを作成するには、フィールドインデックスを作成するときとクエリで指定するときに、ドット表記 (userIdentity.accessKeyId
) を使用して参照します。クエリは次のようになります。
fields @timestamp, @message | filterIndex userIdentity.accessKeyId = "11112222"
前の例のイベントでは、 instanceId
フィールドは 内の配列にありますrequestParameters.instancesSet.items
。フィールドインデックスの作成時とクエリ時の両方でこのフィールドを表すには、0 requestParameters.instancesSet.items.0.instanceId
は配列内のそのフィールドの場所を参照するため、参照してください。
次に、このフィールドのクエリは次のようになります。
fields @timestamp, @message | filterIndex requestParameters.instancesSet.items.0.instanceId="i-abcde123"