Seleccione sus preferencias de cookies

Usamos cookies esenciales y herramientas similares que son necesarias para proporcionar nuestro sitio y nuestros servicios. Usamos cookies de rendimiento para recopilar estadísticas anónimas para que podamos entender cómo los clientes usan nuestro sitio y hacer mejoras. Las cookies esenciales no se pueden desactivar, pero puede hacer clic en “Personalizar” o “Rechazar” para rechazar las cookies de rendimiento.

Si está de acuerdo, AWS y los terceros aprobados también utilizarán cookies para proporcionar características útiles del sitio, recordar sus preferencias y mostrar contenido relevante, incluida publicidad relevante. Para aceptar o rechazar todas las cookies no esenciales, haga clic en “Aceptar” o “Rechazar”. Para elegir opciones más detalladas, haga clic en “Personalizar”.

Configurar la complejidad de ejecución, la profundidad de las consultas y la introspección de GraphQL con AWS AppSync

Modo de enfoque
Configurar la complejidad de ejecución, la profundidad de las consultas y la introspección de GraphQL con AWS AppSync - AWS AppSync GraphQL

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

AWS AppSync permite activar o desactivar las funciones de introspección y establecer límites a la cantidad de niveles anidados y resolutores en una sola consulta.

Uso de la característica de introspección

sugerencia

Para obtener más información sobre la introspección en GraphQL, consulte este artículo en el sitio web de la base de GraphQL.

De forma predeterminada, GraphQL le permite usar la introspección para consultar el propio esquema y descubrir sus tipos, campos, consultas, mutaciones, suscripciones, etc. Se trata de una característica importante para aprender cómo el servicio GraphQL moldea y procesa los datos. No obstante, hay algunos aspectos que se deben considerar en lo que respecta a la introspección. Es posible que tenga un caso de uso que se beneficie de la introspección desactivada, como un caso en el que los nombres de los campos sean confidenciales o estén ocultos, o que el esquema completo de la API se pretenda dejar sin documentar para los consumidores. En estos casos, la publicación de los datos de esquema mediante introspección podría provocar la filtración intencionada de datos privados.

Para evitar que esto suceda, puede desactivar la introspección. Esto evitará que partes no autorizadas utilicen campos de introspección en su esquema. Sin embargo, es importante tener en cuenta que la introspección resulta útil para que los equipos de desarrollo aprendan cómo se procesan los datos de su servicio. Internamente, podría resultar útil mantener la introspección activada y, al mismo tiempo, desactivarla en el código de producción como una capa adicional de seguridad. Otra forma de solucionar este problema consiste en añadir un método de autorización, que también proporciona. AWS AppSync Para obtener más información, consulte Autorización .

AWS AppSync permite activar o desactivar la introspección a nivel de la API. Para activa o desactivar la introspección, haga lo siguiente:

  1. Inicie sesión en la consola AWS Management Console y ábrala. AppSync

  2. En la APIspágina, elige el nombre de una API de GraphQL.

  3. En el panel de navegación de la página de inicio de la API de, elija Ajustes.

  4. En Configuraciones de la API, elija Editar.

  5. En Configuración general, haga lo siguiente:

    1. Active o desactive Habilitar consultas de introspección.

  6. Seleccione Guardar.

Cuando la introspección está activada (el comportamiento predeterminado), el uso del sistema de introspección funcionará como de costumbre. Por ejemplo, en la imagen siguiente se muestra un campo __schema que procesa todos los tipos disponibles en el esquema:

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

Al desactivar esta característica, en su lugar aparecerá un error de validación en la respuesta:

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

Configuración de los límites de profundidad de las consultas

Hay ocasiones en las que es posible que desee tener un control más detallado sobre el funcionamiento de la API durante una operación. Uno de estos controles consiste en añadir un límite a la cantidad de niveles anidados que puede procesar una consulta. De forma predeterminada, las consultas pueden procesar una cantidad ilimitada de niveles anidados. Limitar las consultas a una cantidad específica de niveles anidados tiene posibles implicaciones para el rendimiento y la flexibilidad del proyecto. Tomemos como ejemplo la siguiente consulta:

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

Es posible que su proyecto requiera limitar las consultas a L1 o L2 con algún propósito. De forma predeterminada, toda la consulta desde L1 hasta L4 se procesará sin forma de controlarla. Si establece un límite, puede impedir que las consultas accedan a datos que superen el nivel especificado.

Para añadir un límite de profundidad de las consultas, haga lo siguiente:

  1. Inicia sesión en la AppSyncconsola AWS Management Console y ábrela.

  2. En la APIspágina, elige el nombre de una API de GraphQL.

  3. En el panel de navegación de la página de inicio de la API de, elija Ajustes.

  4. En Configuraciones de la API, elija Editar.

  5. En Profundidad de las consultas, haga lo siguiente:

    1. Active o desactive Habilitar profundidad de las consultas.

    2. En Profundidad máxima, establezca el límite de profundidad. Puede estar entre 1 y 75.

  6. Seleccione Guardar.

Cuando se establece un límite, si se supera su límite superior se producirá un error QueryDepthLimitReached. Por ejemplo, en la imagen siguiente se muestra una consulta con un límite de profundidad de 2 que sobrepasa el límite de los niveles tercero (L3) y cuarto (L4):

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

Tenga en cuenta que los campos se pueden seguir marcando como anulables o no anulables en el esquema. Si un campo no anulable recibe un error QueryDepthLimitReached, ese error se transferirá al primer campo principal anulable.

Configuración de los límites de recuento de solucionadores

También puede controlar cuántos solucionadores puede procesar cada consulta. Al igual que la profundidad de la consulta, puede establecer un límite para esta cantidad. Tomemos como ejemplo la siguiente consulta que contiene tres solucionadores:

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

De forma predeterminada, cada consulta puede procesar hasta 10 000 solucionadores. En el ejemplo anterior, se procesarán resolver1, resolver2 y resolver3. Sin embargo, es posible que su proyecto requiera limitar cada consulta a la gestión de uno o dos solucionadores en total. Al establecer un límite, puede indicarle a la consulta que no gestione ningún solucionador que supere un número determinado, como los primeros (resolver1) o los segundos (resolver2) solucionadores.

Para añadir un límite de recuento de solucionadores, haga lo siguiente:

  1. Inicia sesión en la AppSyncconsola AWS Management Console y ábrela.

  2. En la APIspágina, elige el nombre de una API de GraphQL.

  3. En el panel de navegación de la página de inicio de la API de, elija Ajustes.

  4. En Configuraciones de la API, elija Editar.

  5. En Límite de recuento de solucionadores, haga lo siguiente:

    1. Active Habilitar recuento de solucionadores.

    2. Establezca el límite de recuento en Recuento máximo de resoluciones. Puede estar entre 1 y 10000.

  6. Seleccione Guardar.

Al igual que el límite de profundidad de las consultas, si se supera el límite de solucionadores configurado, la consulta finaliza con un error ResolverExecutionLimitReached en los solucionadores adicionales. En la imagen siguiente, una consulta con un límite de recuento de solucionadores de 2 intenta procesar tres solucionadores. Debido al límite, el tercer solucionador genera un error y no se ejecuta.

Query with three resolvers, showing error on third resolver due to execution limit reached.
PrivacidadTérminos del sitioPreferencias de cookies
© 2025, Amazon Web Services, Inc o sus afiliados. Todos los derechos reservados.