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:
-
Inicie sesión en la consola AWS Management Console y ábrala. AppSync
-
En la APIspágina, elige el nombre de una API de GraphQL.
-
En el panel de navegación de la página de inicio de la API de, elija Ajustes.
-
En Configuraciones de la API, elija Editar.
-
En Configuración general, haga lo siguiente:
-
Active o desactive Habilitar consultas de introspección.
-
-
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:

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

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:
-
Inicia sesión en la AppSyncconsola AWS Management Console
y ábrela. -
En la APIspágina, elige el nombre de una API de GraphQL.
-
En el panel de navegación de la página de inicio de la API de, elija Ajustes.
-
En Configuraciones de la API, elija Editar.
-
En Profundidad de las consultas, haga lo siguiente:
-
Active o desactive Habilitar profundidad de las consultas.
-
En Profundidad máxima, establezca el límite de profundidad. Puede estar entre
1
y75
.
-
-
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
):

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:
-
Inicia sesión en la AppSyncconsola AWS Management Console
y ábrela. -
En la APIspágina, elige el nombre de una API de GraphQL.
-
En el panel de navegación de la página de inicio de la API de, elija Ajustes.
-
En Configuraciones de la API, elija Editar.
-
En Límite de recuento de solucionadores, haga lo siguiente:
-
Active Habilitar recuento de solucionadores.
-
Establezca el límite de recuento en Recuento máximo de resoluciones. Puede estar entre
1
y10000
.
-
-
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.
