

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Configurazione della complessità dell'esecuzione, della profondità delle query e dell'introspezione di GraphQL con AWS AppSync
<a name="configuration-limits"></a>

AWS AppSync consente di abilitare o disabilitare le funzionalità di introspezione e di impostare limiti alla quantità di livelli e resolver annidati in una singola query.

## Utilizzo della funzione di introspezione
<a name="configuration-limits-introspection"></a>

**Suggerimento**  
[Per ulteriori informazioni sull'introspezione in GraphQL, consulta questo articolo sul sito Web della fondazione GraphQL.](https://graphql.org/learn/introspection/)

Per impostazione predefinita, GraphQL consente di utilizzare l'introspezione per interrogare lo schema stesso per scoprirne i tipi, i campi, le query, le mutazioni, le sottoscrizioni, ecc. Questa è una funzionalità importante per imparare come i dati vengono modellati ed elaborati dal servizio GraphQL. Tuttavia, ci sono alcuni aspetti da considerare quando si ha a che fare con l'introspezione. Potresti avere un caso d'uso che trarrebbe vantaggio dalla disattivazione dell'introspezione, ad esempio un caso in cui i nomi dei campi potrebbero essere riservati o nascosti o lo schema API completo è destinato a non essere documentato per i consumatori. In questi casi, la pubblicazione dei dati dello schema tramite l'introspezione potrebbe causare la fuga di dati intenzionalmente privati.

Per evitare che ciò accada, puoi disabilitare l'introspezione. Ciò impedirà a parti non autorizzate di utilizzare campi di introspezione nello schema. Tuttavia, è importante notare che l'introspezione è utile ai team di sviluppo per apprendere come vengono elaborati i dati del loro servizio. Internamente, potrebbe essere utile mantenere attiva l'introspezione e disabilitarla nel codice di produzione come ulteriore livello di sicurezza. Un altro modo per gestire questo problema è aggiungere un metodo di autorizzazione, che prevede anche. AWS AppSync Per ulteriori informazioni, consulta [Autorizzazione ](https://docs.aws.amazon.com/appsync/latest/devguide/security-authz.html).

AWS AppSync consente di abilitare o disabilitare l'introspezione a livello di API. Per abilitare o disabilitare l'introspezione, procedi come segue:

1. [Accedi a Console di gestione AWS e apri la AppSync console.](https://console.aws.amazon.com/appsync/)

1. Nella **APIs**pagina, scegli il nome di un'API GraphQL.

1. Nella home page dell'API, nel riquadro di navigazione, scegli **Impostazioni**.

1. Nelle **configurazioni API**, scegli **Modifica**.

1. In **Query di introspezione**, procedi come segue:

   1. Attiva o disattiva **Abilita le interrogazioni di introspezione.**

1. Scegli **Save** (Salva).

Quando l'introspezione è abilitata (il comportamento predefinito), l'utilizzo del sistema di introspezione funzionerà normalmente. Ad esempio, l'immagine seguente mostra un `__schema` campo che elabora tutti i tipi disponibili nello schema:

![Editor di query GraphQL che mostra MyQuery con introspezione dello schema e restituisce Query, String, Int, Schema, Type e types. TypeKind](http://docs.aws.amazon.com/it_it/appsync/latest/devguide/images/introspection-enabled.png)


Quando si disabilita questa funzionalità, nella risposta verrà invece visualizzato un errore di convalida:

![Editor di query GraphQL che mostra l'errore di convalida per il campo di tipi non definiti nello schema.](http://docs.aws.amazon.com/it_it/appsync/latest/devguide/images/introspection-disabled.png)


## Configurazione dei limiti di profondità delle interrogazioni
<a name="configuration-limits-depth"></a>

Ci sono momenti in cui potresti aver bisogno di un controllo più granulare sul funzionamento dell'API durante un'operazione. Uno di questi controlli consiste nell'aggiungere un limite alla quantità di livelli annidati che una query può elaborare. Per impostazione predefinita, le interrogazioni sono in grado di elaborare un numero illimitato di livelli annidati. Limitare le interrogazioni a un determinato numero di livelli annidati ha potenziali implicazioni per le prestazioni e la flessibilità del progetto. Eseguire la seguente query:

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

Il progetto potrebbe richiedere la limitazione delle interrogazioni a o per qualche scopo. `L1` `L2` Per impostazione predefinita, l'intera query da `L1` a `L4` verrebbe elaborata senza alcun modo per controllarla. Impostando un limite, è possibile impedire alle query di accedere a qualsiasi elemento oltre il livello specificato.

Per aggiungere un limite di profondità delle query, procedi come segue:

1. Accedi a Console di gestione AWS e apri la [AppSyncconsole](https://console.aws.amazon.com/appsync/).

1. Nella **APIs**pagina, scegli il nome di un'API GraphQL.

1. Nella home page dell'API, nel riquadro di navigazione, scegli **Impostazioni**.

1. Nelle **configurazioni API**, scegli **Modifica**.

1. In **Profondità della query**, procedi come segue:

   1. Attiva o disattiva **Abilita la profondità delle interrogazioni**.

   1. In **Profondità massima**, imposta il limite di profondità. Questo valore può essere compreso tra `1` e`75`.

1. Scegli **Save** (Salva).

Quando viene impostato un limite, il superamento del limite superiore genererà un `QueryDepthLimitReached` errore. Ad esempio, l'immagine seguente mostra una query con un limite di profondità `2` che consente di superare il limite fino al terzo (`L3`) e al quarto (`L4`) livello:

![Errore nel limite di profondità della query che mostra una struttura di query annidata che supera il limite configurato di 2.](http://docs.aws.amazon.com/it_it/appsync/latest/devguide/images/query-depth-limit.jpg)


Tieni presente che i campi possono ancora essere contrassegnati come annullabili o non annullabili nello schema. Se un campo che non può essere annullato riceve un `QueryDepthLimitReached` errore, tale errore verrà generato nel primo campo principale che può essere annullato. 

## Configurazione dei limiti di conteggio dei resolver
<a name="configuration-limits-resolver-count"></a>

È inoltre possibile controllare il numero di resolver che ciascuna query può elaborare. Analogamente alla profondità della query, puoi impostare un limite a questo importo. Prendete la seguente query che contiene tre resolver:

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

Per impostazione predefinita, ogni query può elaborare fino a 10000 resolver. Nell'esempio precedente, `resolver1``resolver2`, e `resolver3` verranno elaborati. Tuttavia, il progetto potrebbe richiedere di limitare ogni query alla gestione di uno o due resolver in totale. Impostando un limite, potete dire alla query di non gestire alcun resolver oltre un certo numero, come i resolver del primo (`resolver1`) o del secondo (). `resolver2`

Per aggiungere un limite di numero di resolver, procedi come segue:

1. [Accedi a Console di gestione AWS e apri la AppSync console.](https://console.aws.amazon.com/appsync/)

1. Nella **APIs**pagina, scegli il nome di un'API GraphQL.

1. Nella home page dell'API, nel riquadro di navigazione, scegli **Impostazioni**.

1. Nelle **configurazioni API**, scegli **Modifica**.

1. Sotto il **limite di numero di Resolver, procedi** come segue:

   1. Attiva **Abilita il conteggio dei resolver**.

   1. In **Numero massimo di resolver, imposta il limite di conteggio**. Questo valore può essere compreso tra e`1`. `10000`

1. Scegli **Save** (Salva).

Analogamente al limite di profondità della query, il superamento del limite di resolver configurato causa la fine della query con un `ResolverExecutionLimitReached` errore sui resolver aggiuntivi. *Nell'immagine seguente, una query con un limite di numero di resolver pari a 2 tenta di elaborare tre resolver.* A causa del limite, il terzo resolver genera un errore e non viene eseguito.

![Query GraphQL con tre resolver che mostra un errore quando viene superato il limite di due resolver.](http://docs.aws.amazon.com/it_it/appsync/latest/devguide/images/resolver-count-limit.jpg)
