フィールドインデックスの構文とクォータ - Amazon CloudWatch Logs

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

フィールドインデックスの構文とクォータ

フィールドインデックスを作成するには、フィールドインデックスポリシーを作成します。アカウント全体に適用するアカウントレベルのインデックスポリシーを作成したり、単一のロググループのみに適用するポリシーを作成したりできます。アカウント全体のインデックスポリシーでは、アカウント内のすべてのロググループに適用されるインデックスポリシーを設定できます。また、ロググループ名のプレフィックスによって選択された、アカウントのロググループのサブセットに適用されるアカウントレベルのインデックスポリシーを作成することもできます。同じアカウントに複数のアカウントレベルのポリシーがある場合、これらのポリシーのロググループ名のプレフィックスは重複できません。

ロググループレベルのフィールドインデックスポリシーは、アカウントレベルのフィールドインデックスポリシーを上書きします。ロググループレベルのインデックスポリシーを作成すると、そのロググループはそのポリシーのみを使用し、アカウントレベルのポリシーを無視します。

ログイベントとフィールドインデックスの名前の一致では、大文字と小文字が区別されます。たとえば、 のフィールドインデックス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 ログのネストされた子フィールドまたは配列フィールドであるフィールドのインデックスを作成できます。

たとえば、このログ内の フィールド内にaccessKeyIduserIdentityフィールドのインデックスを作成できます。

{ "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"