쿠키 기본 설정 선택

당사는 사이트와 서비스를 제공하는 데 필요한 필수 쿠키 및 유사한 도구를 사용합니다. 고객이 사이트를 어떻게 사용하는지 파악하고 개선할 수 있도록 성능 쿠키를 사용해 익명의 통계를 수집합니다. 필수 쿠키는 비활성화할 수 없지만 '사용자 지정' 또는 ‘거부’를 클릭하여 성능 쿠키를 거부할 수 있습니다.

사용자가 동의하는 경우 AWS와 승인된 제3자도 쿠키를 사용하여 유용한 사이트 기능을 제공하고, 사용자의 기본 설정을 기억하고, 관련 광고를 비롯한 관련 콘텐츠를 표시합니다. 필수가 아닌 모든 쿠키를 수락하거나 거부하려면 ‘수락’ 또는 ‘거부’를 클릭하세요. 더 자세한 내용을 선택하려면 ‘사용자 정의’를 클릭하세요.

AWS AppSync를 사용하여 GraphQL 실행 복잡성, 쿼리 깊이 및 내부 검사 구성

포커스 모드
AWS AppSync를 사용하여 GraphQL 실행 복잡성, 쿼리 깊이 및 내부 검사 구성 - AWS AppSync GraphQL

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

AWS AppSync 를 사용하면 내부 검사 기능을 활성화 또는 비활성화하고 단일 쿼리에서 중첩 수준 및 해석기의 양으로 제한을 설정할 수 있습니다.

내부 검사 기능 사용

작은 정보

GraphQL의 내부 검사에 대한 자세한 내용은 GraphQL 재단 웹 사이트의 이 문서를 참조하십시오.

기본적으로 GraphQL에서는 내부 검사를 사용하여 스키마 자체를 쿼리하여 스키마의 유형, 필드, 쿼리, 변형, 구독 등을 검색할 수 있습니다. 이는 GraphQL 서비스가 데이터를 구성하고 처리하는 방법을 학습하는 데 중요한 기능입니다. 그러나 내부 검사 시에는 다음과 같은 고려해야 할 사항이 있습니다. 내부 검사를 비활성화하면 도움이 되는 사용 사례가 있을 수 있습니다. 예를 들어 필드 이름이 민감하거나 숨겨질 수 있는 경우 또는 전체 API 스키마를 소비자에게 문서화하지 않도록 설정하는 경우가 이에 해당합니다. 이러한 경우 내부 검사를 통해 스키마 데이터를 게시하면 프라이빗 데이터가 의도적으로 유출될 수 있습니다.

이러한 일이 발생하지 않도록 내부 검사를 비활성화할 수 있습니다. 이렇게 하면 권한이 없는 당사자가 스키마의 내부 검사 필드를 사용하는 것을 방지할 수 있습니다. 하지만 개발팀이 서비스의 데이터가 처리되는 방식을 익히는 데 내부 검사가 유용하다는 점이 중요합니다. 내부적으로는 내부 검사를 활성화한 상태로 유지하면서 프로덕션 코드에서는 추가 보안 계층으로 사용하지 않도록 설정하는 것이 유용할 수 있습니다. 이를 처리하는 또 다른 방법은에서 AWS AppSync 제공하는 권한 부여 방법을 추가하는 것입니다. 자세한 내용은 권한 부여를 참조하세요.

AWS AppSync 를 사용하면 API 수준에서 내부 검사를 활성화하거나 비활성화할 수 있습니다. 내부 검사를 활성화 또는 비활성화하려면 다음을 따르십시오.

  1. 에 로그인 AWS Management Console 하고 AppSync 콘솔을 엽니다.

  2. API 페이지에서 GraphQL API의 이름을 선택합니다.

  3. API 홈페이지의 탐색 창에서 설정 을 선택합니다.

  4. API 구성에서 편집을 선택합니다.

  5. 내부 검사 쿼리에서 다음 작업을 수행합니다.

    1. 내부 검사 쿼리 활성화를 켜거나 끕니다.

  6. 저장(Save)을 선택합니다.

내부 검사를 활성화하면(기본 동작) 내부 검사 시스템이 정상적으로 작동합니다. 예를 들어 아래 이미지는 스키마에서 사용 가능한 모든 유형을 처리하는 __schema 필드를 보여줍니다.

GraphQL schema explorer showing query structure with types and name fields.

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

GraphQL query editor showing a validation error for undefined 'types' field in '_Schema'.

쿼리 깊이 제한 구성

작업 중에 API가 작동하는 방식을 더 세밀하게 제어해야 하는 경우가 있을 수 있습니다. 이러한 제어 중 하나는 쿼리가 처리할 수 있는 중첩 수준의 양에 제한을 추가하는 것입니다. 기본적으로 쿼리는 중첩 수준을 무제한으로 처리할 수 있습니다. 쿼리를 지정된 양의 중첩 수준으로 제한하면 프로젝트의 성능과 유연성에 영향을 미칠 수 있습니다. 다음 쿼리를 실행합니다.

query MyQuery { L1: nextLayer { L2: nextLayer { L3: nextLayer { L4: value } } } }

프로젝트에서 L1 또는 L2에 대한 쿼리를 특정 목적으로 제한하도록 요청할 수도 있습니다. 기본적으로 L1부터 L4까지의 전체 쿼리는 이를 제어할 수 있는 방법 없이 처리됩니다. 제한을 설정하면 쿼리가 지정된 수준 이상의 항목에 액세스하는 것을 방지할 수 있습니다.

쿼리 깊이 제한을 추가하려면 다음 작업을 수행합니다.

  1. 에 로그인 AWS Management Console 하고 AppSync 콘솔을 엽니다.

  2. API 페이지에서 GraphQL API의 이름을 선택합니다.

  3. API 홈페이지의 탐색 창에서 설정 을 선택합니다.

  4. API 구성에서 편집을 선택합니다.

  5. 쿼리 깊이에서 다음 작업을 수행합니다.

    1. 쿼리 깊이 활성화를 켜거나 끕니다.

    2. 최대 깊이에서 깊이 제한을 설정합니다. 이 값은 1부터 75 사이일 수 있습니다.

  6. 저장(Save)을 선택합니다.

제한이 설정된 경우 상한을 넘으면 QueryDepthLimitReached 오류가 발생합니다. 예를 들어 아래 이미지는 2의 깊이 제한이 적용된 쿼리가 세 번째(L3) 및 네 번째(L4) 수준의 제한을 초과하는 모습을 보여줍니다.

Query structure with nested layers L1, L2, L3, and L4, showing depth limit exceeded.

참고로 스키마에서 필드를 여전히 Null 허용 또는 Null 허용 불가로 표시할 수 있습니다. Null 허용 불가 필드에 QueryDepthLimitReached 오류가 발생하면 해당 오류는 Null 허용 첫 번째 상위 필드에 발생합니다.

해석기 수 제한 구성

각 쿼리가 처리할 수 있는 해석기 수도 제어할 수 있습니다. 쿼리 깊이와 마찬가지로 이 양에도 제한을 설정할 수 있습니다. 세 개의 해석기가 포함된 다음 쿼리를 예로 들어 보겠습니다.

query MyQuery { resolver1: resolver resolver2: resolver resolver3: resolver }

기본적으로 각 쿼리는 최대 10,000개의 해석기를 처리할 수 있습니다. 위 예시에서는 resolver1, resolver2, resolver3이 처리됩니다. 하지만 프로젝트에서는 각 쿼리를 총 하나 또는 두 개의 해석기를 처리하도록 제한을 요청할 수도 있습니다. 제한을 설정하면 첫 번째(resolver1) 또는 두 번째(resolver2) 해석기처럼 특정 수를 초과하는 해석기를 처리하지 않도록 쿼리에 지시할 수 있습니다.

해석기 수 제한을 추가하려면 다음 작업을 수행합니다.

  1. 에 로그인 AWS Management Console 하고 AppSync 콘솔을 엽니다.

  2. API 페이지에서 GraphQL API의 이름을 선택합니다.

  3. API 홈페이지의 탐색 창에서 설정 을 선택합니다.

  4. API 구성에서 편집을 선택합니다.

  5. 해석기 수 제한에서 다음 작업을 수행합니다.

    1. 해석기 수 활성화를 켭니다.

    2. 최대 해석기 수에서 개수 제한을 설정합니다. 이 값은 1부터 10000 사이일 수 있습니다.

  6. 저장(Save)을 선택합니다.

쿼리 깊이 제한과 마찬가지로 구성된 해석기 제한을 초과하면 추가 해석기에서 ResolverExecutionLimitReached 오류가 발생하여 쿼리가 종료됩니다. 아래 이미지에서 해석기 수 제한이 2인 쿼리가 세 개의 해석기를 처리하려고 합니다. 제한 때문에 세 번째 해석기에서 오류가 발생하고 실행되지 않습니다.

Query with three resolvers, showing error on third resolver due to execution limit reached.

이 페이지에서

프라이버시사이트 이용 약관쿠키 기본 설정
© 2025, Amazon Web Services, Inc. 또는 계열사. All rights reserved.