기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
AWS AppSync 를 사용하면 내부 검사 기능을 활성화 또는 비활성화하고 단일 쿼리에서 중첩 수준 및 해석기의 양으로 제한을 설정할 수 있습니다.
내부 검사 기능 사용
작은 정보
GraphQL의 내부 검사에 대한 자세한 내용은 GraphQL 재단 웹 사이트
기본적으로 GraphQL에서는 내부 검사를 사용하여 스키마 자체를 쿼리하여 스키마의 유형, 필드, 쿼리, 변형, 구독 등을 검색할 수 있습니다. 이는 GraphQL 서비스가 데이터를 구성하고 처리하는 방법을 학습하는 데 중요한 기능입니다. 그러나 내부 검사 시에는 다음과 같은 고려해야 할 사항이 있습니다. 내부 검사를 비활성화하면 도움이 되는 사용 사례가 있을 수 있습니다. 예를 들어 필드 이름이 민감하거나 숨겨질 수 있는 경우 또는 전체 API 스키마를 소비자에게 문서화하지 않도록 설정하는 경우가 이에 해당합니다. 이러한 경우 내부 검사를 통해 스키마 데이터를 게시하면 프라이빗 데이터가 의도적으로 유출될 수 있습니다.
이러한 일이 발생하지 않도록 내부 검사를 비활성화할 수 있습니다. 이렇게 하면 권한이 없는 당사자가 스키마의 내부 검사 필드를 사용하는 것을 방지할 수 있습니다. 하지만 개발팀이 서비스의 데이터가 처리되는 방식을 익히는 데 내부 검사가 유용하다는 점이 중요합니다. 내부적으로는 내부 검사를 활성화한 상태로 유지하면서 프로덕션 코드에서는 추가 보안 계층으로 사용하지 않도록 설정하는 것이 유용할 수 있습니다. 이를 처리하는 또 다른 방법은에서 AWS AppSync 제공하는 권한 부여 방법을 추가하는 것입니다. 자세한 내용은 권한 부여를 참조하세요.
AWS AppSync 를 사용하면 API 수준에서 내부 검사를 활성화하거나 비활성화할 수 있습니다. 내부 검사를 활성화 또는 비활성화하려면 다음을 따르십시오.
-
에 로그인 AWS Management Console 하고 AppSync 콘솔
을 엽니다. -
API 페이지에서 GraphQL API의 이름을 선택합니다.
-
API 홈페이지의 탐색 창에서 설정 을 선택합니다.
-
API 구성에서 편집을 선택합니다.
-
내부 검사 쿼리에서 다음 작업을 수행합니다.
-
내부 검사 쿼리 활성화를 켜거나 끕니다.
-
-
저장(Save)을 선택합니다.
내부 검사를 활성화하면(기본 동작) 내부 검사 시스템이 정상적으로 작동합니다. 예를 들어 아래 이미지는 스키마에서 사용 가능한 모든 유형을 처리하는 __schema
필드를 보여줍니다.

이 기능을 비활성화하면 응답에 검증 오류가 대신 표시됩니다.

쿼리 깊이 제한 구성
작업 중에 API가 작동하는 방식을 더 세밀하게 제어해야 하는 경우가 있을 수 있습니다. 이러한 제어 중 하나는 쿼리가 처리할 수 있는 중첩 수준의 양에 제한을 추가하는 것입니다. 기본적으로 쿼리는 중첩 수준을 무제한으로 처리할 수 있습니다. 쿼리를 지정된 양의 중첩 수준으로 제한하면 프로젝트의 성능과 유연성에 영향을 미칠 수 있습니다. 다음 쿼리를 실행합니다.
query MyQuery {
L1: nextLayer {
L2: nextLayer {
L3: nextLayer {
L4: value
}
}
}
}
프로젝트에서 L1
또는 L2
에 대한 쿼리를 특정 목적으로 제한하도록 요청할 수도 있습니다. 기본적으로 L1
부터 L4
까지의 전체 쿼리는 이를 제어할 수 있는 방법 없이 처리됩니다. 제한을 설정하면 쿼리가 지정된 수준 이상의 항목에 액세스하는 것을 방지할 수 있습니다.
쿼리 깊이 제한을 추가하려면 다음 작업을 수행합니다.
-
에 로그인 AWS Management Console 하고 AppSync 콘솔
을 엽니다. -
API 페이지에서 GraphQL API의 이름을 선택합니다.
-
API 홈페이지의 탐색 창에서 설정 을 선택합니다.
-
API 구성에서 편집을 선택합니다.
-
쿼리 깊이에서 다음 작업을 수행합니다.
-
쿼리 깊이 활성화를 켜거나 끕니다.
-
최대 깊이에서 깊이 제한을 설정합니다. 이 값은
1
부터75
사이일 수 있습니다.
-
-
저장(Save)을 선택합니다.
제한이 설정된 경우 상한을 넘으면 QueryDepthLimitReached
오류가 발생합니다. 예를 들어 아래 이미지는 2
의 깊이 제한이 적용된 쿼리가 세 번째(L3
) 및 네 번째(L4
) 수준의 제한을 초과하는 모습을 보여줍니다.

참고로 스키마에서 필드를 여전히 Null 허용 또는 Null 허용 불가로 표시할 수 있습니다. Null 허용 불가 필드에 QueryDepthLimitReached
오류가 발생하면 해당 오류는 Null 허용 첫 번째 상위 필드에 발생합니다.
해석기 수 제한 구성
각 쿼리가 처리할 수 있는 해석기 수도 제어할 수 있습니다. 쿼리 깊이와 마찬가지로 이 양에도 제한을 설정할 수 있습니다. 세 개의 해석기가 포함된 다음 쿼리를 예로 들어 보겠습니다.
query MyQuery {
resolver1: resolver
resolver2: resolver
resolver3: resolver
}
기본적으로 각 쿼리는 최대 10,000개의 해석기를 처리할 수 있습니다. 위 예시에서는 resolver1
, resolver2
, resolver3
이 처리됩니다. 하지만 프로젝트에서는 각 쿼리를 총 하나 또는 두 개의 해석기를 처리하도록 제한을 요청할 수도 있습니다. 제한을 설정하면 첫 번째(resolver1
) 또는 두 번째(resolver2
) 해석기처럼 특정 수를 초과하는 해석기를 처리하지 않도록 쿼리에 지시할 수 있습니다.
해석기 수 제한을 추가하려면 다음 작업을 수행합니다.
-
에 로그인 AWS Management Console 하고 AppSync 콘솔
을 엽니다. -
API 페이지에서 GraphQL API의 이름을 선택합니다.
-
API 홈페이지의 탐색 창에서 설정 을 선택합니다.
-
API 구성에서 편집을 선택합니다.
-
해석기 수 제한에서 다음 작업을 수행합니다.
-
해석기 수 활성화를 켭니다.
-
최대 해석기 수에서 개수 제한을 설정합니다. 이 값은
1
부터10000
사이일 수 있습니다.
-
-
저장(Save)을 선택합니다.
쿼리 깊이 제한과 마찬가지로 구성된 해석기 제한을 초과하면 추가 해석기에서 ResolverExecutionLimitReached
오류가 발생하여 쿼리가 종료됩니다. 아래 이미지에서 해석기 수 제한이 2인 쿼리가 세 개의 해석기를 처리하려고 합니다. 제한 때문에 세 번째 해석기에서 오류가 발생하고 실행되지 않습니다.
