기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
필드 인덱스 구문 및 할당량
필드 인덱스 정책을 생성하여 필드 인덱스를 생성합니다. 전체 계정에 적용되는 계정 수준 인덱스 정책을 생성할 수 있으며 단일 로그 그룹에만 적용되는 정책을 생성할 수도 있습니다. 계정 전체 인덱스 정책의 경우 계정의 모든 로그 그룹에 적용되는 정책을 보유할 수 있습니다. 로그 그룹 이름의 접두사로 선택한 계정의 로그 그룹 하위 집합에 적용되는 계정 수준 인덱스 정책을 생성할 수도 있습니다. 동일한 계정에 여러 계정 수준 정책이 있는 경우 이러한 정책의 로그 그룹 이름 접두사는 겹칠 수 없습니다.
로그 그룹 수준 필드 인덱스 정책은 계정 수준 필드 인덱스 정책을 재정의합니다. 로그 그룹 수준 인덱스 정책을 생성하면 해당 로그 그룹은 해당 정책만 사용하고 계정 수준 정책을 무시합니다.
로그 이벤트와 필드 인덱스 이름의 일치는 대/소문자를 구분합니다. 예를 들어의 필드 인덱스RequestId
는이 포함된 로그 이벤트와 일치하지 않습니다requestId
.
최대 20개의 계정 수준 인덱스 정책을 보유할 수 있습니다. 로그 그룹 이름 접두사로 필터링된 계정 수준 인덱스 정책이 여러 개 있는 경우 두 개는 동일하거나 중복되는 로그 그룹 이름 접두사를 사용할 수 없습니다. 예를 들어, 로 시작하는 로그 그룹으로 필터링된 정책이 하나 있는 경우 다른 필드 인덱스 정책을 my-logpprod
또는 로 필터링할 my-log
수 없습니다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
나타내려면 0requestParameters.instancesSet.items.0.instanceId
은 배열에서 해당 필드의 위치를 나타냅니다.
그러면이 필드에 대한 쿼리는 다음과 같을 수 있습니다.
fields @timestamp, @message | filterIndex requestParameters.instancesSet.items.0.instanceId="i-abcde123"