기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
하위 쿼리
하위 쿼리는 다른 쿼리에 대한 입력으로 사용할 수 있는 중첩된 Logs Insights 쿼리입니다. 하위 쿼리를 사용하여 중간 결과 세트를 도출한 다음 후속 명령에서 사용할 수 있습니다.
구문
필터의 하위 쿼리
filter <field> in ( <subquery> )
파라미터
-
<subquery>- 결과 집합을 반환하는 유효한 Logs Insights 쿼리입니다. 하위 쿼리는 외부 쿼리에서 참조하는 필드를 생성해야 합니다.
예제
예예제 1: 다운스트림 서비스에서 오류가 발생한 요청 찾기
이 예제에서는 하위 쿼리를 사용하여 기본 서비스에서 다운스트림 서비스에서 오류가 발생한 요청을 식별하는 방법을 보여줍니다. 이는 분산 시스템의 계단식 장애 문제를 해결하는 데 유용합니다.
filter requestId in ( SOURCE '/aws/lambda/database-service' | filter errorType = "DatabaseConnectionTimeout" | fields requestId ) | fields @timestamp, requestId, endpoint, userId, responseTime | sort @timestamp desc
이 쿼리는 다음과 같습니다.
-
하위 쿼리는 데이터베이스 서비스에서 연결 제한 시간이 발생한 모든
requestId값을 찾습니다. -
외부 쿼리는 기본 서비스의 로그를 필터링하여 오류가 발생하기 쉬운 요청 IDs
-
결과에는 영향을 받은 엔드포인트 및 사용자를 포함하여 다운스트림에서 실패한 요청의 전체 컨텍스트가 표시됩니다.
이 패턴은 다운스트림 장애의 업스트림 영향을 이해하는 데 도움이 됩니다.
예예제 2: 대상 조사에 대한 자주 실패하는 요청 식별
이 예제에서는 집계와 함께 하위 쿼리를 사용하여 반복적으로 실패하는 요청을 찾는 방법을 보여줍니다. 이는 일시적인 오류가 아닌 체계적인 문제를 나타내는 경우가 많습니다.
filter requestId in ( SOURCE '/aws/lambda/payment-processor' | filter status = "FAILED" | stats count(*) as failureCount by requestId | filter failureCount > 3 | fields requestId ) | fields @timestamp, requestId, customerId, amount, failureReason | sort @timestamp asc
이 쿼리는 다음과 같습니다.
-
하위 쿼리는 실패한 결제 시도를 집계하고 3회 이상 실패한 요청 IDs 식별합니다.
-
외부 쿼리는 문제가 있는 요청 IDs
-
재시도 진행 상황을 보여주기 위해 결과가 시간순으로 정렬됩니다.
이를 통해 일시적인 장애(단일 발생)와 심층 조사가 필요한 지속적인 문제(다중 장애)를 구별할 수 있습니다.
동작
-
하위 쿼리는 외부 쿼리와 독립적으로 실행됩니다.
-
외부 쿼리에서 사용하기 전에 결과가 구체화됩니다.
-
외부 쿼리에는 하위 쿼리에서 명시적으로 선택한 필드만 사용할 수 있습니다.
참고 및 제한 사항
-
하위 쿼리는 외부 쿼리에서 참조하는 필드를 반환해야 합니다.
-
중첩 하위 쿼리는 지원되지 않습니다.
-
하위 쿼리는 쿼리 실행 시간과 비용을 증가시킬 수 있습니다.
-
상관 관계가 있는 하위 쿼리는 지원되지 않습니다.
-
내부 쿼리 실행은 30초로 제한됩니다.