

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à.

# AWS AppSync riferimento all'utilità del modello di mappatura del resolver
<a name="resolver-util-reference"></a>

**Nota**  
Ora supportiamo principalmente il runtime APPSYNC\$1JS e la relativa documentazione. [Prendi in considerazione l'utilizzo del runtime APPSYNC\$1JS e delle relative guide qui.](https://docs.aws.amazon.com/appsync/latest/devguide/resolver-reference-js-version.html)

AWS AppSync definisce un set di utilità che è possibile utilizzare all'interno di un resolver GraphQL per semplificare le interazioni con le fonti di dati. Alcune di queste utilità sono destinate all'uso generale con qualsiasi fonte di dati, ad esempio la generazione o i timestamp. IDs Altre sono specifiche per un tipo di origine dati. Sono disponibili le seguenti utilità:
+  [Utility helper in \$1util](https://docs.aws.amazon.com/appsync/latest/devguide/utility-helpers-in-util.html) - La variabile \$1util contiene metodi di utilità generali per facilitare l'utilizzo dei dati. Se non diversamente specificato, tutte le utilità usano il set di caratteri UTF-8.
+ [ AppSync direttive: AppSync espone le](https://docs.aws.amazon.com/appsync/latest/devguide/aws-appsync-directives.html) direttive per facilitare la produttività degli sviluppatori durante la scrittura in VTL.
+  [Time helpers in \$1util.time - La variabile \$1util.time](https://docs.aws.amazon.com/appsync/latest/devguide/time-helpers-in-util-time.html) contiene metodi datetime per aiutare a generare timestamp, convertire tra formati datetime e analizzare stringhe datetime. Si basa sulla sintassi per i formati datetime, a cui è possibile fare riferimento per ulteriore documentazione. [DateTimeFormatter](https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html)
+ [List helpers in \$1util.list - \$1util.list](https://docs.aws.amazon.com/appsync/latest/devguide/list-helpers-in-util-list.html) contiene metodi per facilitare le operazioni List più comuni, come la rimozione o il mantenimento di elementi da un elenco per filtrare i casi d'uso.
+  [Map helpers in \$1util.map - \$1util.map](https://docs.aws.amazon.com/appsync/latest/devguide/utility-helpers-in-map.html) contiene metodi per facilitare le operazioni più comuni sulle mappe, come la rimozione o il mantenimento di elementi da una mappa per filtrare i casi d'uso.
+  [Helper DynamoDB in \$1util.dynamodb - \$1util.dynamodb contiene metodi di supporto che semplificano la scrittura e la lettura dei dati su Amazon DynamoDB, come la mappatura](https://docs.aws.amazon.com/appsync/latest/devguide/dynamodb-helpers-in-util-dynamodb.html) e la formattazione automatiche dei tipi. 
+  [Gli helper di Amazon RDS in \$1util.rds - \$1util.rds](https://docs.aws.amazon.com/appsync/latest/devguide/rds-helpers-in-util-rds.html) contengono metodi di supporto che formattano le operazioni RDS eliminando i dati estranei negli output dei risultati.
+  [Helper HTTP in \$1util.http - L'utilità \$1util.http fornisce metodi di supporto che puoi usare per gestire i parametri di richiesta HTTP](https://docs.aws.amazon.com/appsync/latest/devguide/http-helpers-in-utils-http.html) e aggiungere intestazioni di risposta.
+  [Helper XML in \$1util.xml - \$1util.xml](https://docs.aws.amazon.com/appsync/latest/devguide/xml-helpers-in-utils-xml.html) contiene metodi di supporto che possono semplificare la traduzione delle risposte XML in JSON o in un dizionario.
+  [Aiutanti di trasformazione in \$1util.transform - \$1util.transform](https://docs.aws.amazon.com/appsync/latest/devguide/transformation-helpers-in-utils-transform.html) contiene metodi di supporto che semplificano l'esecuzione di operazioni complesse su fonti di dati, come le operazioni di filtro DynamoDB.
+  [Aiutanti matematici in \$1util.math - \$1util.math contiene metodi per facilitare le operazioni matematiche più](https://docs.aws.amazon.com/appsync/latest/devguide/math-helpers-in-util-math.html) comuni.
+  [String helpers in \$1util.str - \$1util.str contiene metodi per facilitare le operazioni più comuni sulle](https://docs.aws.amazon.com/appsync/latest/devguide/str-helpers-in-util-str.html) stringhe.
+  [Extensions - \$1extensions](https://docs.aws.amazon.com/appsync/latest/devguide/extensions.html) contiene una serie di metodi per eseguire azioni aggiuntive all'interno dei resolver.

# Utility helper in \$1util
<a name="utility-helpers-in-util"></a>

**Nota**  
Ora supportiamo principalmente il runtime APPSYNC\$1JS e la relativa documentazione. [Prendi in considerazione l'utilizzo del runtime APPSYNC\$1JS e delle relative guide qui.](https://docs.aws.amazon.com/appsync/latest/devguide/resolver-reference-js-version.html)

La `$util` variabile contiene metodi di utilità generali per aiutarti a lavorare con i dati. Se non diversamente specificato, tutte le utilità usano il set di caratteri UTF-8.

## Utilità di analisi JSON
<a name="utility-helpers-in-json-parsing"></a>

### Elenco degli strumenti di analisi JSON
<a name="utility-helpers-in-json-parsing-list"></a>

** **`$util.parseJson(String) : Object`** **  
Da una stringa JSON restituisce una rappresentazione oggetto del risultato.

** **`$util.toJson(Object) : String`** **  
Da un oggetto restituisce una rappresentazione JSON "a stringhe" di tale oggetto.

## Utilità di codifica
<a name="utility-helpers-in-encoding"></a>

### Elenco degli strumenti di codifica
<a name="utility-helpers-in-encoding-list"></a>

** **`$util.urlEncode(String) : String`** **  
Restituisce la stringa di input come stringa codificata `application/x-www-form-urlencoded`.

** **`$util.urlDecode(String) : String`** **  
Decodifica una stringa codificata `application/x-www-form-urlencoded` nella relativa forma non codificata.

** **`$util.base64Encode( byte[] ) : String`** **  
Codifica l'input in una stringa con codifica base64.

** **`$util.base64Decode(String) : byte[]`** **  
Decodifica i dati da una stringa con codifica base64.

## Utilità per la generazione di ID
<a name="utility-helpers-in-id-gen"></a>

### Elenco di utilità per la generazione di ID
<a name="utility-helpers-in-id-gen-list"></a>

** **`$util.autoId() : String`** **  
Restituisce un valore UUID generato casualmente a 128 bit.

****`$util.autoUlid() : String`****  
Restituisce un ULID (Universally Unique Lexicographically Sortable Identifier) generato casualmente a 128 bit.

****`$util.autoKsuid() : String`****  
Restituisce un KSUID (K-Sortable Unique Identifier) base62 generato casualmente a 128 bit codificato come String con una lunghezza di 27.

## Utili di errore
<a name="utility-helpers-in-error"></a>

### Elenco delle utilità di errore
<a name="utility-helpers-in-error-list"></a>

** `$util.error(String)` **  
Genera un errore personalizzato. Utilizzalo nei modelli di mappatura delle richieste o delle risposte per rilevare un errore nella richiesta o nel risultato della chiamata.

** `$util.error(String, String)` **  
Genera un errore personalizzato. Usalo nei modelli di mappatura delle richieste o delle risposte per rilevare un errore nella richiesta o nel risultato della chiamata. Puoi anche specificare un. `errorType`

** `$util.error(String, String, Object)` **  
Genera un errore personalizzato. Utilizzalo nei modelli di mappatura delle richieste o delle risposte per rilevare un errore nella richiesta o nel risultato della chiamata. Puoi anche specificare un campo `errorType` e un. `data` Il valore di `data` verrà aggiunto al blocco `error` corrispondente all'interno di `errors` nella risposta di GraphQL.  
`data`verrà filtrato in base al set di selezione dell'interrogazione.

** `$util.error(String, String, Object, Object)` **  
Genera un errore personalizzato. Può essere usato nei modelli di mappatura di richieste o risposte se il modello rileva un errore nella richiesta o nel risultato della chiamata. Inoltre, è `errorType` possibile specificare un `data` campo, un `errorInfo` campo e un campo. Il valore di `data` verrà aggiunto al blocco `error` corrispondente all'interno di `errors` nella risposta di GraphQL.   
`data`verrà filtrato in base al set di selezione della query. Il valore di `errorInfo` verrà aggiunto al blocco `error` corrispondente all'interno di `errors` nella risposta di GraphQL.  
`errorInfo`**NON** verrà filtrato in base al set di selezione delle query.

** `$util.appendError(String)` **  
Aggiunge un errore personalizzato. Può essere usato nei modelli di mappatura di richieste o risposte se il modello rileva un errore nella richiesta o nel risultato della chiamata. A differenza di `$util.error(String)`, la valutazione del modello non viene interrotta, in modo che i dati possano essere restituiti al chiamante.

** `$util.appendError(String, String)` **  
Aggiunge un errore personalizzato. Può essere usato nei modelli di mappatura di richieste o risposte se il modello rileva un errore nella richiesta o nel risultato della chiamata. È inoltre possibile specificare un campo `errorType`. A differenza di `$util.error(String, String)`, la valutazione del modello non viene interrotta, in modo che i dati possano essere restituiti al chiamante.

** `$util.appendError(String, String, Object)` **  
Aggiunge un errore personalizzato. Può essere usato nei modelli di mappatura di richieste o risposte se il modello rileva un errore nella richiesta o nel risultato della chiamata. È inoltre possibile specificare un campo `errorType` e un campo `data`. A differenza di `$util.error(String, String, Object)`, la valutazione del modello non viene interrotta, in modo che i dati possano essere restituiti al chiamante. Il valore di `data` verrà aggiunto al blocco `error` corrispondente all'interno di `errors` nella risposta di GraphQL.   
`data`verrà filtrato in base al set di selezione delle query.

** `$util.appendError(String, String, Object, Object)` **  
Aggiunge un errore personalizzato. Può essere usato nei modelli di mappatura di richieste o risposte se il modello rileva un errore nella richiesta o nel risultato della chiamata. Inoltre, è `errorType` possibile specificare un `data` campo, un `errorInfo` campo e un campo. A differenza di `$util.error(String, String, Object, Object)`, la valutazione del modello non viene interrotta, in modo che i dati possano essere restituiti al chiamante. Il valore di `data` verrà aggiunto al blocco `error` corrispondente all'interno di `errors` nella risposta di GraphQL.  
`data`verrà filtrato in base al set di selezione della query. Il valore di `errorInfo` verrà aggiunto al blocco `error` corrispondente all'interno di `errors` nella risposta di GraphQL.  
`errorInfo`**NON** verrà filtrato in base al set di selezione delle query.

## Utilità per la convalida delle condizioni
<a name="utility-helpers-in-condition"></a>

### Elenco degli strumenti di convalida delle condizioni
<a name="utility-helpers-in-condition-list"></a>

** `$util.validate(Boolean, String) : void` **  
Se la condizione è falsa, lancia un messaggio CustomTemplateException con il messaggio specificato.

** `$util.validate(Boolean, String, String) : void` **  
Se la condizione è falsa, genera un messaggio CustomTemplateException con il messaggio e il tipo di errore specificati.

** `$util.validate(Boolean, String, String, Object) : void` **  
Se la condizione è falsa, genera un messaggio CustomTemplateException con il messaggio e il tipo di errore specificati, oltre ai dati da restituire nella risposta.

## Utilità comportamentali nulle
<a name="utility-helpers-in-null-behavior"></a>

### Elenco di utilità con comportamento nullo
<a name="utility-helpers-in-null-behavior-list"></a>

** `$util.isNull(Object) : Boolean` **  
Restituisce true se l'oggetto fornito è null.

** `$util.isNullOrEmpty(String) : Boolean` **  
Restituisce true se i dati forniti sono null o una stringa vuota. In caso contrario, restituisce false.

** `$util.isNullOrBlank(String) : Boolean` **  
Restituisce true se i dati forniti sono null o una stringa vuota. In caso contrario, restituisce false.

** `$util.defaultIfNull(Object, Object) : Object` **  
Restituisce il primo oggetto se non è null. In caso contrario, restituisce il secondo oggetto come "oggetto predefinito".

** `$util.defaultIfNullOrEmpty(String, String) : String` **  
Restituisce la prima stringa se non è null o vuota. In caso contrario, restituisce la seconda stringa come "stringa predefinita".

** `$util.defaultIfNullOrBlank(String, String) : String` **  
Restituisce la prima stringa se non è null o vuota. In caso contrario, restituisce la seconda stringa come "stringa predefinita".

## Utilità per la corrispondenza dei modelli
<a name="utility-helpers-in-pattern-matching"></a>

### Elenco degli strumenti per la corrispondenza dei tipi e dei modelli
<a name="utility-helpers-in-type-pattern-matching-list"></a>

** `$util.typeOf(Object) : String` **  
Restituisce una stringa che descrive il tipo di oggetto. Le identificazioni di tipi supportate sono: "Null", "Number", "String", "Map", "List", "Boolean". Se un tipo non può essere identificato, il tipo restituito è "Object".

** `$util.matches(String, String) : Boolean` **  
Restituisce true se il modello specificato nel primo argomento corrisponde ai dati forniti nel secondo argomento. Il modello deve essere un'espressione regolare, ad esempio `$util.matches("a*b", "aaaaab")`. La funzionalità si basa sulla classe [Pattern](https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html) che puoi consultare per ottenere altre informazioni.

** `$util.authType() : String` **  
Restituisce una stringa che descrive il tipo di autenticazione multipla utilizzato da una richiesta, restituendo «IAM Authorization», «User Pool Authorization», «Open ID Connect Authorization» o «API Key Authorization».

## Utilità di convalida degli oggetti
<a name="utility-helpers-in-object-validation"></a>

### Elenco degli strumenti di convalida degli oggetti
<a name="utility-helpers-in-object-validation-list"></a>

** `$util.isString(Object) : Boolean` **  
Restituisce true se l'oggetto è una stringa.

** `$util.isNumber(Object) : Boolean` **  
Restituisce true se l'oggetto è un numero.

** `$util.isBoolean(Object) : Boolean` **  
Restituisce true se l'oggetto è un valore booleano.

** `$util.isList(Object) : Boolean` **  
Restituisce true se l'oggetto è un elenco.

** `$util.isMap(Object) : Boolean` **  
Restituisce true se l'oggetto è una mappa.

## CloudWatch utilità di registrazione
<a name="utility-helpers-in-logging"></a>

### CloudWatch lista di utilità di registrazione
<a name="utility-helpers-in-cloudwatch-logs"></a>

**`$util.log.info(Object) : Void`**  
Registra la rappresentazione String dell'oggetto fornito nel flusso di registro richiesto quando la registrazione a livello di richiesta e di campo è abilitata con CloudWatch log level o su un'API. `ALL` `INFO` `DEBUG`

**`$util.log.info(String, Object...) : Void`**  
Registra la rappresentazione String degli oggetti forniti nel flusso di registro richiesto quando la registrazione a livello di richiesta e di campo è CloudWatch abilitata con il livello di log su un'API. `ALL` Questa utilità sostituirà tutte le variabili indicate da «\$1\$1» nella prima stringa di formato di input con la rappresentazione String degli oggetti forniti nell'ordine.

**`$util.log.debug(Object) : Void`**  
Registra la rappresentazione String dell'oggetto fornito nel flusso di registro richiesto quando la registrazione a livello di richiesta e di campo è abilitata con il livello CloudWatch di log o su un'API. `ALL` `DEBUG`

**`$util.log.debug(String, Object...) : Void`**  
Registra la rappresentazione String degli oggetti forniti nel flusso di registro richiesto quando la registrazione a livello di campo è abilitata con livello di registro o livello CloudWatch di registro su un'API. `DEBUG` `ALL` Questa utilità sostituirà tutte le variabili indicate da «\$1\$1» nella prima stringa di formato di input con la rappresentazione String degli oggetti forniti nell'ordine.

**`$util.log.error(Object) : Void`**  
Registra la rappresentazione in formato String dell'oggetto fornito nel flusso di log richiesto quando la CloudWatch registrazione a livello di campo è abilitata con **qualsiasi** livello di registro (`ALL`, `INFO``DEBUG`, ecc.) su un'API.

**`$util.log.error(String, Object...) : Void`**  
Registra la rappresentazione String degli oggetti forniti nel flusso di registro richiesto quando la registrazione a livello di campo è abilitata con livello di CloudWatch registro o livello di registro su un'API. `ERROR` `ALL` Questa utilità sostituirà tutte le variabili indicate da «\$1\$1» nella prima stringa di formato di input con la rappresentazione String degli oggetti forniti nell'ordine.

## Restituisce il valore di comportamento (utils)
<a name="utility-helpers-in-return-behavior"></a>

### Elenco delle utilità di comportamento del valore restituito
<a name="utility-helpers-in-behavior-list"></a>

****`$util.qr()`** e `$util.quiet()` **  
Esegue un'istruzione VTL mentre sopprime il valore restituito. Ciò è utile per eseguire metodi senza utilizzare segnaposti temporanei, ad esempio aggiungere elementi a una mappa. Esempio:  

```
#set ($myMap = {})
#set($discard = $myMap.put("id", "first value"))
```
Diventa:  

```
#set ($myMap = {})
$util.qr($myMap.put("id", "first value"))
```  
** `$util.escapeJavaScript(String) : String` **  
Restituisce la stringa di input come stringa di JavaScript escape.  
** `$util.urlEncode(String) : String` **  
Restituisce la stringa di input come stringa codificata `application/x-www-form-urlencoded`.  
** `$util.urlDecode(String) : String` **  
Decodifica una stringa codificata `application/x-www-form-urlencoded` nella relativa forma non codificata.  
** `$util.base64Encode( byte[] ) : String` **  
Codifica l'input in una stringa con codifica base64.  
** `$util.base64Decode(String) : byte[]` **  
Decodifica i dati da una stringa con codifica base64.  
** `$util.parseJson(String) : Object` **  
Da una stringa JSON restituisce una rappresentazione oggetto del risultato.  
** `$util.toJson(Object) : String` **  
Da un oggetto restituisce una rappresentazione JSON "a stringhe" di tale oggetto.  
** `$util.autoId() : String` **  
Restituisce un valore UUID generato casualmente a 128 bit.  
****`$util.autoUlid() : String`****  
Restituisce un ULID (Universally Unique Lexicographically Sortable Identifier) generato casualmente a 128 bit.  
****`$util.autoKsuid() : String`****  
Restituisce un KSUID (K-Sortable Unique Identifier) base62 generato casualmente a 128 bit codificato come String con una lunghezza di 27.  
** `$util.unauthorized()` **  
Genera `Unauthorized` per il campo in fase di risoluzione. Utilizzalo nei modelli di mappatura delle richieste o delle risposte per determinare se consentire al chiamante di risolvere il campo.  
** `$util.error(String)` **  
Genera un errore personalizzato. Utilizzalo nei modelli di mappatura delle richieste o delle risposte per rilevare un errore nella richiesta o nel risultato della chiamata.  
** `$util.error(String, String)` **  
Genera un errore personalizzato. Usalo nei modelli di mappatura delle richieste o delle risposte per rilevare un errore nella richiesta o nel risultato della chiamata. Puoi anche specificare un. `errorType`  
** `$util.error(String, String, Object)` **  
Genera un errore personalizzato. Utilizzalo nei modelli di mappatura delle richieste o delle risposte per rilevare un errore nella richiesta o nel risultato della chiamata. Puoi anche specificare un campo `errorType` e un. `data` Il valore di `data` verrà aggiunto al blocco `error` corrispondente all'interno di `errors` nella risposta di GraphQL. **Nota**: `data` verrà filtrato in base al set di selezioni della query.  
** `$util.error(String, String, Object, Object)` **  
Genera un errore personalizzato. Può essere usato nei modelli di mappatura di richieste o risposte se il modello rileva un errore nella richiesta o nel risultato della chiamata. È inoltre possibile specificare un campo `errorType`, un campo `data` e un campo `errorInfo`. Il valore di `data` verrà aggiunto al blocco `error` corrispondente all'interno di `errors` nella risposta di GraphQL. **Nota**: `data` verrà filtrato in base al set di selezioni della query. Il valore di `errorInfo` verrà aggiunto al blocco `error` corrispondente all'interno di `errors` nella risposta di GraphQL. **Nota**: `errorInfo` **NON** verrà filtrato in base al set di selezioni della query.  
** `$util.appendError(String)` **  
Aggiunge un errore personalizzato. Può essere usato nei modelli di mappatura di richieste o risposte se il modello rileva un errore nella richiesta o nel risultato della chiamata. A differenza di `$util.error(String)`, la valutazione del modello non viene interrotta, in modo che i dati possano essere restituiti al chiamante.  
** `$util.appendError(String, String)` **  
Aggiunge un errore personalizzato. Può essere usato nei modelli di mappatura di richieste o risposte se il modello rileva un errore nella richiesta o nel risultato della chiamata. È inoltre possibile specificare un campo `errorType`. A differenza di `$util.error(String, String)`, la valutazione del modello non viene interrotta, in modo che i dati possano essere restituiti al chiamante.  
** `$util.appendError(String, String, Object)` **  
Aggiunge un errore personalizzato. Può essere usato nei modelli di mappatura di richieste o risposte se il modello rileva un errore nella richiesta o nel risultato della chiamata. È inoltre possibile specificare un campo `errorType` e un campo `data`. A differenza di `$util.error(String, String, Object)`, la valutazione del modello non viene interrotta, in modo che i dati possano essere restituiti al chiamante. Il valore di `data` verrà aggiunto al blocco `error` corrispondente all'interno di `errors` nella risposta di GraphQL. **Nota**: `data` verrà filtrato in base al set di selezioni della query.  
** `$util.appendError(String, String, Object, Object)` **  
Aggiunge un errore personalizzato. Può essere usato nei modelli di mappatura di richieste o risposte se il modello rileva un errore nella richiesta o nel risultato della chiamata. È inoltre possibile specificare un campo `errorType`, un campo `data` e un campo `errorInfo`. A differenza di `$util.error(String, String, Object, Object)`, la valutazione del modello non viene interrotta, in modo che i dati possano essere restituiti al chiamante. Il valore di `data` verrà aggiunto al blocco `error` corrispondente all'interno di `errors` nella risposta di GraphQL. **Nota**: `data` verrà filtrato in base al set di selezioni della query. Il valore di `errorInfo` verrà aggiunto al blocco `error` corrispondente all'interno di `errors` nella risposta di GraphQL. **Nota**: `errorInfo` **NON** verrà filtrato in base al set di selezioni della query.  
** `$util.validate(Boolean, String) : void` **  
Se la condizione è falsa, lancia un messaggio CustomTemplateException con il messaggio specificato.  
** `$util.validate(Boolean, String, String) : void` **  
Se la condizione è falsa, genera un messaggio CustomTemplateException con il messaggio e il tipo di errore specificati.  
** `$util.validate(Boolean, String, String, Object) : void` **  
Se la condizione è falsa, genera un messaggio CustomTemplateException con il messaggio e il tipo di errore specificati, oltre ai dati da restituire nella risposta.  
** `$util.isNull(Object) : Boolean` **  
Restituisce true se l'oggetto fornito è null.  
** `$util.isNullOrEmpty(String) : Boolean` **  
Restituisce true se i dati forniti sono null o una stringa vuota. In caso contrario, restituisce false.  
** `$util.isNullOrBlank(String) : Boolean` **  
Restituisce true se i dati forniti sono null o una stringa vuota. In caso contrario, restituisce false.  
** `$util.defaultIfNull(Object, Object) : Object` **  
Restituisce il primo oggetto se non è null. In caso contrario, restituisce il secondo oggetto come "oggetto predefinito".  
** `$util.defaultIfNullOrEmpty(String, String) : String` **  
Restituisce la prima stringa se non è null o vuota. In caso contrario, restituisce la seconda stringa come "stringa predefinita".  
** `$util.defaultIfNullOrBlank(String, String) : String` **  
Restituisce la prima stringa se non è null o vuota. In caso contrario, restituisce la seconda stringa come "stringa predefinita".  
** `$util.isString(Object) : Boolean` **  
Restituisce true se l'oggetto è una stringa.  
** `$util.isNumber(Object) : Boolean` **  
Restituisce true se l'oggetto è un numero.  
** `$util.isBoolean(Object) : Boolean` **  
Restituisce true se l'oggetto è un valore booleano.  
** `$util.isList(Object) : Boolean` **  
Restituisce true se l'oggetto è un elenco.  
** `$util.isMap(Object) : Boolean` **  
Restituisce true se l'oggetto è una mappa.  
** `$util.typeOf(Object) : String` **  
Restituisce una stringa che descrive il tipo di oggetto. Le identificazioni di tipi supportate sono: "Null", "Number", "String", "Map", "List", "Boolean". Se un tipo non può essere identificato, il tipo restituito è "Object".  
** `$util.matches(String, String) : Boolean` **  
Restituisce true se il modello specificato nel primo argomento corrisponde ai dati forniti nel secondo argomento. Il modello deve essere un'espressione regolare, ad esempio `$util.matches("a*b", "aaaaab")`. La funzionalità si basa sulla classe [Pattern](https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html) che puoi consultare per ottenere altre informazioni.  
** `$util.authType() : String` **  
Restituisce una stringa che descrive il tipo di autenticazione multipla utilizzato da una richiesta, restituendo «IAM Authorization», «User Pool Authorization», «Open ID Connect Authorization» o «API Key Authorization».  
****`$util.log.info(Object) : Void`****  
Registra la rappresentazione in formato String dell'oggetto fornito nel flusso di registro richiesto quando la registrazione a livello di richiesta e di campo è abilitata con il livello di log su CloudWatch un'API. `ALL`  
****`$util.log.info(String, Object...) : Void`****  
Registra la rappresentazione String degli oggetti forniti nel flusso di registro richiesto quando la registrazione a livello di richiesta e di campo è CloudWatch abilitata con il livello di log su un'API. `ALL` Questa utilità sostituirà tutte le variabili indicate da «\$1\$1» nella prima stringa di formato di input con la rappresentazione String degli oggetti forniti nell'ordine.  
****`$util.log.error(Object) : Void`****  
Registra la rappresentazione String dell'oggetto fornito nel flusso di log richiesto quando la CloudWatch registrazione a livello di campo è abilitata con livello di registro `ERROR` o livello di registro su un'API. `ALL`  
****`$util.log.error(String, Object...) : Void`****  
Registra la rappresentazione String degli oggetti forniti nel flusso di registro richiesto quando la registrazione a livello di campo è abilitata con livello di CloudWatch registro o livello di registro su un'API. `ERROR` `ALL` Questa utilità sostituirà tutte le variabili indicate da «\$1\$1» nella prima stringa di formato di input con la rappresentazione String degli oggetti forniti nell'ordine.

** `$util.escapeJavaScript(String) : String` **  
Restituisce la stringa di input come stringa JavaScript di escape.

## Autorizzazione Resolver
<a name="utility-helpers-in-resolver-auth"></a>

### Elenco di autorizzazioni del resolver
<a name="utility-helpers-in-resolver-auth-list"></a>

** `$util.unauthorized()` **  
Genera `Unauthorized` per il campo in fase di risoluzione. Utilizzalo nei modelli di mappatura delle richieste o delle risposte per determinare se consentire al chiamante di risolvere il campo.

# AWS AppSync direttive
<a name="aws-appsync-directives"></a>

**Nota**  
Ora supportiamo principalmente il runtime APPSYNC\$1JS e la relativa documentazione. [Prendi in considerazione l'utilizzo del runtime APPSYNC\$1JS e delle relative guide qui.](https://docs.aws.amazon.com/appsync/latest/devguide/resolver-reference-js-version.html)

AWS AppSync espone direttive per facilitare la produttività degli sviluppatori durante la scrittura in VTL.

## Utilità direttive
<a name="utility-helpers-in-directives"></a>

****`#return(Object)`****  
`#return(Object)`Consente di tornare prematuramente da qualsiasi modello di mappatura. `#return(Object)`è analoga alla parola chiave *return* nei linguaggi di programmazione, in quanto restituirà dal blocco logico con ambito più vicino. L'utilizzo `#return(Object)` all'interno di un modello di mappatura del resolver verrà restituito dal resolver. Inoltre, l'utilizzo `#return(Object)` di un modello di mappatura delle funzioni ritornerà dalla funzione e proseguirà l'esecuzione verso la funzione successiva nella pipeline o il modello di mappatura delle risposte del resolver.

****`#return`****  
La `#return` direttiva mostra gli stessi comportamenti di, ma verrà invece restituita`#return(Object)`. `null`

# Aiutanti temporali in \$1util.time
<a name="time-helpers-in-util-time"></a>

**Nota**  
Ora supportiamo principalmente il runtime APPSYNC\$1JS e la relativa documentazione. [Prendi in considerazione l'utilizzo del runtime APPSYNC\$1JS e delle relative guide qui.](https://docs.aws.amazon.com/appsync/latest/devguide/resolver-reference-js-version.html)

La variabile `$util.time` contiene metodi datetime che consentono di generare timestamp, convertire i diversi formati datetime e analizzare le stringhe datetime. La sintassi per i formati datetime si basa sulla [DateTimeFormatter](https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html)quale è possibile fare riferimento per ulteriore documentazione. Di seguito forniamo alcuni esempi, oltre a un elenco di metodi e descrizioni disponibili.

## Utilità temporali
<a name="utility-helpers-in-time"></a>

### Elenco delle utilità temporali
<a name="utility-helpers-in-time-list"></a>

** `$util.time.nowISO8601() : String` **  
[Restituisce una rappresentazione String di UTC in ISO8601 formato.](https://en.wikipedia.org/wiki/ISO_8601)

** `$util.time.nowEpochSeconds() : long` **  
Restituisce il numero di secondi dall'epoca (Unix epoch) 1970-01-01T00:00:00Z a ora.

** `$util.time.nowEpochMilliSeconds() : long` **  
Restituisce il numero di millisecondi dall'epoca (Unix epoch) 1970-01-01T00:00:00Z a ora.

** `$util.time.nowFormatted(String) : String` **  
Restituisce una stringa del timestamp corrente in UTC utilizzando il formato specificato da un tipo di input stringa.

** `$util.time.nowFormatted(String, String) : String` **  
Restituisce una stringa del timestamp corrente per un fuso orario utilizzando il formato e il fuso orario specificati da tipi di input stringa.

** `$util.time.parseFormattedToEpochMilliSeconds(String, String) : Long` **  
Analizza un timestamp passato come String insieme a un formato contenente un fuso orario, quindi restituisce il timestamp in millisecondi dall'epoca.

** `$util.time.parseFormattedToEpochMilliSeconds(String, String, String) : Long` **  
Analizza un timestamp passato come String insieme a un formato e un fuso orario, quindi restituisce il timestamp in millisecondi dall'epoca.

** `$util.time.parseISO8601ToEpochMilliSeconds(String) : Long` **  
Analizza un ISO8601 timestamp passato come String, quindi restituisce il timestamp in millisecondi trascorsi da epoch.

** `$util.time.epochMilliSecondsToSeconds(long) : long` **  
Converte un timestamp in formato epoca (Unix epoch) espresso in millisecondi in un timestamp in formato epoca (Unix epoch) espresso in secondi.

** `$util.time.epochMilliSecondsToISO8601(long) : String` **  
Converte il timestamp di un'epoca in millisecondi in un timestamp. ISO8601

** `$util.time.epochMilliSecondsToFormatted(long, String) : String` **  
Converte il timestamp di un'epoca in millisecondi, passato così a lungo, in un timestamp formattato secondo il formato fornito in UTC.

** `$util.time.epochMilliSecondsToFormatted(long, String, String) : String` **  
Converte il timestamp di un'epoca in millisecondi, passato come long, in un timestamp formattato secondo il formato fornito nel fuso orario fornito.

## Esempi di funzioni autonome
<a name="standalone-function-examples"></a>

```
$util.time.nowISO8601()                                            : 2018-02-06T19:01:35.749Z
$util.time.nowEpochSeconds()                                       : 1517943695
$util.time.nowEpochMilliSeconds()                                  : 1517943695750
$util.time.nowFormatted("yyyy-MM-dd HH:mm:ssZ")                    : 2018-02-06 19:01:35+0000
$util.time.nowFormatted("yyyy-MM-dd HH:mm:ssZ", "+08:00")          : 2018-02-07 03:01:35+0800
$util.time.nowFormatted("yyyy-MM-dd HH:mm:ssZ", "Australia/Perth") : 2018-02-07 03:01:35+0800
```

## Esempi di conversione
<a name="conversion-examples"></a>

```
#set( $nowEpochMillis = 1517943695758 )
$util.time.epochMilliSecondsToSeconds($nowEpochMillis)                                     : 1517943695
$util.time.epochMilliSecondsToISO8601($nowEpochMillis)                                     : 2018-02-06T19:01:35.758Z
$util.time.epochMilliSecondsToFormatted($nowEpochMillis, "yyyy-MM-dd HH:mm:ssZ")           : 2018-02-06 19:01:35+0000
$util.time.epochMilliSecondsToFormatted($nowEpochMillis, "yyyy-MM-dd HH:mm:ssZ", "+08:00") : 2018-02-07 03:01:35+0800
```

## Esempi di analisi
<a name="parsing-examples"></a>

```
$util.time.parseISO8601ToEpochMilliSeconds("2018-02-01T17:21:05.180+08:00")                          : 1517476865180
$util.time.parseFormattedToEpochMilliSeconds("2018-02-02 01:19:22+0800", "yyyy-MM-dd HH:mm:ssZ")     : 1517505562000
$util.time.parseFormattedToEpochMilliSeconds("2018-02-02 01:19:22", "yyyy-MM-dd HH:mm:ss", "+08:00") : 1517505562000
```

## Utilizzo con scalari AWS AppSync definiti
<a name="usage-with-aws-scalars"></a>

I seguenti formati sono compatibili con `AWSDate`, `AWSDateTime` e `AWSTime`.

```
$util.time.nowFormatted("yyyy-MM-dd[XXX]", "-07:00:30")               : 2018-07-11-07:00
$util.time.nowFormatted("yyyy-MM-dd'T'HH:mm:ss[XXXXX]", "-07:00:30")  : 2018-07-11T15:14:15-07:00:30
```

# Elenca gli aiutanti in \$1util.list
<a name="list-helpers-in-util-list"></a>

**Nota**  
Ora supportiamo principalmente il runtime APPSYNC\$1JS e la relativa documentazione. [Prendi in considerazione l'utilizzo del runtime APPSYNC\$1JS e delle relative guide qui.](https://docs.aws.amazon.com/appsync/latest/devguide/resolver-reference-js-version.html)

`$util.list`contiene metodi per facilitare le operazioni più comuni di List, come la rimozione o il mantenimento di elementi da un elenco per filtrare i casi d'uso.

## Elenca gli strumenti
<a name="utility-helpers-in-list-utils"></a>

** `$util.list.copyAndRetainAll(List, List) : List` **  
Crea una copia superficiale dell'elenco fornito nel primo argomento conservando solo gli elementi specificati nel secondo argomento, se presenti. Tutti gli altri elementi verranno rimossi dalla copia.

** `$util.list.copyAndRemoveAll(List, List) : List` **  
Crea una copia superficiale dell'elenco fornito nel primo argomento rimuovendo tutti gli elementi in cui l'elemento è specificato nel secondo argomento, se presenti. Tutti gli altri elementi verranno mantenuti nella copia.

** `$util.list.sortList(List, Boolean, String) : List` **  
Ordina un elenco di oggetti, fornito nel primo argomento. Se il secondo argomento è vero, l'elenco viene ordinato in modo decrescente; se il secondo argomento è falso, l'elenco viene ordinato in modo crescente. Il terzo argomento è il nome della stringa della proprietà utilizzata per ordinare un elenco di oggetti personalizzati. Se si tratta di un elenco di sole stringhe, numeri interi, float o doppi, il terzo argomento può essere qualsiasi stringa casuale. Se tutti gli oggetti non appartengono alla stessa classe, viene restituito l'elenco originale. Sono supportati solo gli elenchi contenenti un massimo di 1000 oggetti. Di seguito è riportato un esempio di utilizzo di questa utilità:   

```
 INPUT:      $util.list.sortList([{"description":"youngest", "age":5},{"description":"middle", "age":45}, {"description":"oldest", "age":85}], false, "description")
 OUTPUT:     [{"description":"middle", "age":45}, {"description":"oldest", "age":85}, {"description":"youngest", "age":5}]
```

# Aiutanti di mappe in \$1util.map
<a name="utility-helpers-in-map"></a>

**Nota**  
Ora supportiamo principalmente il runtime APPSYNC\$1JS e la relativa documentazione. [Prendi in considerazione l'utilizzo del runtime APPSYNC\$1JS e delle relative guide qui.](https://docs.aws.amazon.com/appsync/latest/devguide/resolver-reference-js-version.html)

 `$util.map`contiene metodi per facilitare le operazioni più comuni della mappa, come la rimozione o il mantenimento di elementi da una mappa per filtrare i casi d'uso.

## Utilità della mappa
<a name="utility-helpers-in-map-list"></a>

** `$util.map.copyAndRetainAllKeys(Map, List) : Map` **  
Crea una copia superficiale della prima mappa conservando solo le chiavi specificate nell'elenco, se presenti. Tutte le altre chiavi verranno rimosse dalla copia.

** `$util.map.copyAndRemoveAllKeys(Map, List) : Map` **  
Crea una copia superficiale della prima mappa rimuovendo tutte le voci in cui la chiave è specificata nell'elenco, se presenti. Tutte le altre chiavi verranno mantenute nella copia.

# Helper DynamoDB in \$1util.dynamodb
<a name="dynamodb-helpers-in-util-dynamodb"></a>

**Nota**  
Ora supportiamo principalmente il runtime APPSYNC\$1JS e la relativa documentazione. [Prendi in considerazione l'utilizzo del runtime APPSYNC\$1JS e delle relative guide qui.](https://docs.aws.amazon.com/appsync/latest/devguide/resolver-reference-js-version.html)

`$util.dynamodb`contiene metodi di supporto che semplificano la scrittura e la lettura dei dati su Amazon DynamoDB, come la mappatura e la formattazione automatiche dei tipi. Questi metodi sono progettati per mappare automaticamente i tipi e gli elenchi primitivi nel formato di input DynamoDB corretto, che è uno dei formati. `Map` `{ "TYPE" : VALUE }`

Ad esempio, in precedenza, un modello di mappatura delle richieste per creare un nuovo elemento in DynamoDB avrebbe potuto avere il seguente aspetto:

```
{
    "version" : "2017-02-28",
    "operation" : "PutItem",
    "key": {
        "id" : { "S" : "$util.autoId()" }
    },
    "attributeValues" : {
         "title" : { "S" : $util.toJson($ctx.args.title) },
         "author" : { "S" : $util.toJson($ctx.args.author) },
         "version" : { "N", $util.toJson($ctx.args.version) }
    }
}
```

Per aggiungere campi all'oggetto sarebbe stato necessario aggiornare la query GraphQL nello schema, nonché il modello di mappatura della richiesta. Tuttavia, ora possiamo ristrutturare il nostro modello di mappatura delle richieste in modo che raccolga automaticamente i nuovi campi aggiunti nel nostro schema e li aggiunga a DynamoDB con i tipi corretti:

```
{
    "version" : "2017-02-28",
    "operation" : "PutItem",
    "key": {
        "id" : $util.dynamodb.toDynamoDBJson($util.autoId())
    },
    "attributeValues" : $util.dynamodb.toMapValuesJson($ctx.args)
}
```

Nell'esempio precedente, utilizziamo l'`$util.dynamodb.toDynamoDBJson(...)`helper per prendere automaticamente l'id generato e convertirlo nella rappresentazione DynamoDB di un attributo stringa. Quindi prendiamo tutti gli argomenti e li convertiamo nelle loro rappresentazioni DynamoDB e li inviamo nel campo `attributeValues` del modello.

Sono disponibili due versioni di ogni helper: una versione che restituisce un oggetto (ad esempio, `$util.dynamodb.toString(...)`) e una versione che restituisce l'oggetto come stringa JSON (ad esempio, `$util.dynamodb.toStringJson(...)`). Nell'esempio precedente abbiamo usato la versione che restituisce i dati come stringa JSON. Se vuoi modificare l'oggetto prima che venga usato nel modello, puoi scegliere di restituire invece un oggetto, come illustrato di seguito:

```
{
    "version" : "2017-02-28",
    "operation" : "PutItem",
    "key": {
        "id" : $util.dynamodb.toDynamoDBJson($util.autoId())
    },

    #set( $myFoo = $util.dynamodb.toMapValues($ctx.args) )
    #set( $myFoo.version = $util.dynamodb.toNumber(1) )
    #set( $myFoo.timestamp = $util.dynamodb.toString($util.time.nowISO8601()))

    "attributeValues" : $util.toJson($myFoo)
}
```

Nell'esempio precedente, gli argomenti convertiti vengono restituiti come mappa invece di una stringa JSON, e vengono quindi aggiunti i campi `version` e `timestamp` prima di eseguirne l'output nel campo `attributeValues` del modello utilizzando `$util.toJson(...)`.

La versione JSON di ogni helper equivale al wrapping della versione non JSON in `$util.toJson(...)`. Ad esempio, le istruzioni seguenti sono identiche:

```
$util.toStringJson("Hello, World!")
$util.toJson($util.toString("Hello, World!"))
```

## A DynamoDB
<a name="utility-helpers-in-toDynamoDB"></a>

### Elenco di utilità ToDynamoDB
<a name="utility-helpers-in-toDynamoDB-list"></a>

** `$util.dynamodb.toDynamoDB(Object) : Map` **  
Strumento generale di conversione degli oggetti per DynamoDB che converte gli oggetti di input nella rappresentazione DynamoDB appropriata. Rappresenta alcuni tipi in un determinato modo. Ad esempio, usa elenchi ("L") invece di set ("SS", "NS", "BS"). Questo restituisce un oggetto che descrive il valore dell'attributo DynamoDB.  
**Esempio di stringa**  

```
Input:      $util.dynamodb.toDynamoDB("foo")
Output:     { "S" : "foo" }
```
**Esempio di numero**  

```
Input:      $util.dynamodb.toDynamoDB(12345)
Output:     { "N" : 12345 }
```
**Esempio booleano**  

```
Input:      $util.dynamodb.toDynamoDB(true)
Output:     { "BOOL" : true }
```
**Esempio di elenco**  

```
Input:      $util.dynamodb.toDynamoDB([ "foo", 123, { "bar" : "baz" } ])
Output:     {
               "L" : [
                   { "S" : "foo" },
                   { "N" : 123 },
                   {
                       "M" : {
                           "bar" : { "S" : "baz" }
                       }
                   }
               ]
           }
```
**Esempio di mappa**  

```
Input:      $util.dynamodb.toDynamoDB({ "foo": "bar", "baz" : 1234, "beep": [ "boop"] })
Output:     {
               "M" : {
                   "foo"  : { "S" : "bar" },
                   "baz"  : { "N" : 1234 },
                   "beep" : {
                       "L" : [
                           { "S" : "boop" }
                       ]
                   }
               }
           }
```

****`$util.dynamodb.toDynamoDBJson(Object) : String`** **  
Uguale a`$util.dynamodb.toDynamoDB(Object) : Map`, ma restituisce il valore dell'attributo DynamoDB come stringa codificata JSON.

## Utilità ToString
<a name="utility-helpers-in-toString"></a>

### Elenco di utilità ToString
<a name="utility-helpers-in-toString-list"></a>

****`$util.dynamodb.toString(String) : String`** **  
Converte una stringa di input nel formato stringa DynamoDB. Questo restituisce un oggetto che descrive il valore dell'attributo DynamoDB.  

```
Input:      $util.dynamodb.toString("foo")
Output:     { "S" : "foo" }
```

** `$util.dynamodb.toStringJson(String) : Map` **  
Uguale a`$util.dynamodb.toString(String) : String`, ma restituisce il valore dell'attributo DynamoDB come stringa codificata JSON.

** `$util.dynamodb.toStringSet(List<String>) : Map` **  
Converte un elenco con stringhe nel formato del set di stringhe DynamoDB. Questo restituisce un oggetto che descrive il valore dell'attributo DynamoDB.  

```
Input:      $util.dynamodb.toStringSet([ "foo", "bar", "baz" ])
Output:     { "SS" : [ "foo", "bar", "baz" ] }
```

** `$util.dynamodb.toStringSetJson(List<String>) : String` **  
Uguale a`$util.dynamodb.toStringSet(List<String>) : Map`, ma restituisce il valore dell'attributo DynamoDB come stringa codificata JSON.

## ToNumber utils
<a name="utility-helpers-in-toNumber"></a>

### Elenco di utilità ToNumber
<a name="utility-helpers-in-toNumber-list"></a>

** `$util.dynamodb.toNumber(Number) : Map` **  
Converte un numero nel formato numerico DynamoDB. Questo restituisce un oggetto che descrive il valore dell'attributo DynamoDB.  

```
Input:      $util.dynamodb.toNumber(12345)
Output:     { "N" : 12345 }
```

** `$util.dynamodb.toNumberJson(Number) : String` **  
Uguale a`$util.dynamodb.toNumber(Number) : Map`, ma restituisce il valore dell'attributo DynamoDB come stringa codificata JSON.

** `$util.dynamodb.toNumberSet(List<Number>) : Map` **  
Converte un elenco di numeri nel formato del set di numeri DynamoDB. Questo restituisce un oggetto che descrive il valore dell'attributo DynamoDB.  

```
Input:      $util.dynamodb.toNumberSet([ 1, 23, 4.56 ])
Output:     { "NS" : [ 1, 23, 4.56 ] }
```

** `$util.dynamodb.toNumberSetJson(List<Number>) : String` **  
Uguale a`$util.dynamodb.toNumberSet(List<Number>) : Map`, ma restituisce il valore dell'attributo DynamoDB come stringa codificata JSON.

## ToBinary Utils
<a name="utility-helpers-in-toBinary"></a>

### Elenco di utilità ToBinary
<a name="utility-helpers-in-toBinary-list"></a>

** `$util.dynamodb.toBinary(String) : Map` **  
Converte i dati binari codificati come stringa base64 in formato binario DynamoDB. Questo restituisce un oggetto che descrive il valore dell'attributo DynamoDB.  

```
Input:      $util.dynamodb.toBinary("foo")
Output:     { "B" : "foo" }
```

** `$util.dynamodb.toBinaryJson(String) : String` **  
Uguale a`$util.dynamodb.toBinary(String) : Map`, ma restituisce il valore dell'attributo DynamoDB come stringa codificata JSON.

** `$util.dynamodb.toBinarySet(List<String>) : Map` **  
Converte un elenco di dati binari codificati come stringhe base64 in formato set binario DynamoDB. Questo restituisce un oggetto che descrive il valore dell'attributo DynamoDB.  

```
Input:      $util.dynamodb.toBinarySet([ "foo", "bar", "baz" ])
Output:     { "BS" : [ "foo", "bar", "baz" ] }
```

** `$util.dynamodb.toBinarySetJson(List<String>) : String` **  
Uguale a`$util.dynamodb.toBinarySet(List<String>) : Map`, ma restituisce il valore dell'attributo DynamoDB come stringa codificata JSON.

## ToBoolean utils
<a name="utility-helpers-in-toBoolean"></a>

### Elenco degli strumenti ToBoolean
<a name="utility-helpers-in-toBoolean-list"></a>

** `$util.dynamodb.toBoolean(Boolean) : Map` **  
Converte un booleano nel formato booleano DynamoDB appropriato. Questo restituisce un oggetto che descrive il valore dell'attributo DynamoDB.  

```
Input:      $util.dynamodb.toBoolean(true)
Output:     { "BOOL" : true }
```

** `$util.dynamodb.toBooleanJson(Boolean) : String` **  
Uguale a`$util.dynamodb.toBoolean(Boolean) : Map`, ma restituisce il valore dell'attributo DynamoDB come stringa codificata JSON.

## ToNull utils
<a name="utility-helpers-in-toNull"></a>

### Elenco di utilità ToNull
<a name="utility-helpers-in-toNull-list"></a>

** `$util.dynamodb.toNull() : Map` **  
Restituisce un valore null nel formato null di DynamoDB. Questo restituisce un oggetto che descrive il valore dell'attributo DynamoDB.  

```
Input:      $util.dynamodb.toNull()
Output:     { "NULL" : null }
```

** `$util.dynamodb.toNullJson() : String` **  
Uguale a`$util.dynamodb.toNull() : Map`, ma restituisce il valore dell'attributo DynamoDB come stringa codificata JSON.

## Utilità ToList
<a name="utility-helpers-in-toList"></a>

### Elenco di utilità ToList
<a name="utility-helpers-in-toList-list"></a>

****`$util.dynamodb.toList(List) : Map`** **  
Converte un elenco di oggetti nel formato elenco DynamoDB. Ogni elemento dell'elenco viene inoltre convertito nel formato DynamoDB appropriato. Rappresenta alcuni oggetti nidificati in un determinato modo. Ad esempio, usa elenchi ("L") invece di set ("SS", "NS", "BS"). Questo restituisce un oggetto che descrive il valore dell'attributo DynamoDB.  

```
Input:      $util.dynamodb.toList([ "foo", 123, { "bar" : "baz" } ])
Output:     {
               "L" : [
                   { "S" : "foo" },
                   { "N" : 123 },
                   {
                       "M" : {
                           "bar" : { "S" : "baz" }
                       }
                   }
               ]
           }
```

** `$util.dynamodb.toListJson(List) : String` **  
Uguale a`$util.dynamodb.toList(List) : Map`, ma restituisce il valore dell'attributo DynamoDB come stringa codificata JSON.

## Utilità ToMap
<a name="utility-helpers-in-toMap"></a>

### Elenco di utilità ToMap
<a name="utility-helpers-in-toMap-list"></a>

** `$util.dynamodb.toMap(Map) : Map` **  
Converte una mappa nel formato di mappa DynamoDB. Ogni valore nella mappa viene inoltre convertito nel formato DynamoDB appropriato. Rappresenta alcuni oggetti nidificati in un determinato modo. Ad esempio, usa elenchi ("L") invece di set ("SS", "NS", "BS"). Questo restituisce un oggetto che descrive il valore dell'attributo DynamoDB.  

```
Input:      $util.dynamodb.toMap({ "foo": "bar", "baz" : 1234, "beep": [ "boop"] })
Output:     {
               "M" : {
                   "foo"  : { "S" : "bar" },
                   "baz"  : { "N" : 1234 },
                   "beep" : {
                       "L" : [
                           { "S" : "boop" }
                       ]
                   }
               }
           }
```

** `$util.dynamodb.toMapJson(Map) : String` **  
Uguale a`$util.dynamodb.toMap(Map) : Map`, ma restituisce il valore dell'attributo DynamoDB come stringa codificata JSON.

** `$util.dynamodb.toMapValues(Map) : Map` **  
Crea una copia della mappa in cui ogni valore è stato convertito nel formato DynamoDB appropriato. Rappresenta alcuni oggetti nidificati in un determinato modo. Ad esempio, usa elenchi ("L") invece di set ("SS", "NS", "BS").  

```
Input:      $util.dynamodb.toMapValues({ "foo": "bar", "baz" : 1234, "beep": [ "boop"] })
Output:     {
               "foo"  : { "S" : "bar" },
               "baz"  : { "N" : 1234 },
               "beep" : {
                   "L" : [
                       { "S" : "boop" }
                   ]
               }
           }
```
Questo è leggermente diverso dal fatto che restituisce solo il contenuto del valore dell'attributo DynamoDB, ma non l'intero valore dell'attributo `$util.dynamodb.toMap(Map) : Map` stesso. Ad esempio, le istruzioni seguenti sono identiche:  

```
$util.dynamodb.toMapValues($map)
$util.dynamodb.toMap($map).get("M")
```

** `$util.dynamodb.toMapValuesJson(Map) : String` **  
Uguale a`$util.dynamodb.toMapValues(Map) : Map`, ma restituisce il valore dell'attributo DynamoDB come stringa codificata JSON.

## Utilità S3Object
<a name="utility-helpers-in-S3Object"></a>

### Elenco delle utilità di S3Object
<a name="utility-helpers-in-S3Object-list"></a>

** `$util.dynamodb.toS3Object(String key, String bucket, String region) : Map` **  
Converte la chiave, il bucket e la regione nella rappresentazione dell'oggetto DynamoDB S3. Questo restituisce un oggetto che descrive il valore dell'attributo DynamoDB.  

```
Input:      $util.dynamodb.toS3Object("foo", "bar", region = "baz")
Output:     { "S" : "{ \"s3\" : { \"key\" : \"foo", \"bucket\" : \"bar", \"region\" : \"baz" } }" }
```

** `$util.dynamodb.toS3ObjectJson(String key, String bucket, String region) : String` **  
Uguale a`$util.dynamodb.toS3Object(String key, String bucket, String region) : Map`, ma restituisce il valore dell'attributo DynamoDB come stringa codificata JSON.

** `$util.dynamodb.toS3Object(String key, String bucket, String region, String version) : Map` **  
Converte la chiave, il bucket, la regione e la versione opzionale nella rappresentazione dell'oggetto DynamoDB S3. Questo restituisce un oggetto che descrive il valore dell'attributo DynamoDB.  

```
Input:      $util.dynamodb.toS3Object("foo", "bar", "baz", "beep")
Output:     { "S" : "{ \"s3\" : { \"key\" : \"foo\", \"bucket\" : \"bar\", \"region\" : \"baz\", \"version\" = \"beep\" } }" }
```

** `$util.dynamodb.toS3ObjectJson(String key, String bucket, String region, String version) : String` **  
Uguale a`$util.dynamodb.toS3Object(String key, String bucket, String region, String version) : Map`, ma restituisce il valore dell'attributo DynamoDB come stringa codificata JSON.

** `$util.dynamodb.fromS3ObjectJson(String) : Map` **  
Accetta il valore stringa di un oggetto DynamoDB S3 e restituisce una mappa che contiene la chiave, il bucket, la regione e la versione opzionale.  

```
Input:      $util.dynamodb.fromS3ObjectJson({ "S" : "{ \"s3\" : { \"key\" : \"foo\", \"bucket\" : \"bar\", \"region\" : \"baz\", \"version\" = \"beep\" } }" })
Output:     { "key" : "foo", "bucket" : "bar", "region" : "baz", "version" : "beep" }
```

# Aiutanti Amazon RDS in \$1util.rds
<a name="rds-helpers-in-util-rds"></a>

**Nota**  
Ora supportiamo principalmente il runtime APPSYNC\$1JS e la relativa documentazione. [Prendi in considerazione l'utilizzo del runtime APPSYNC\$1JS e delle relative guide qui.](https://docs.aws.amazon.com/appsync/latest/devguide/resolver-reference-js-version.html)

`$util.rds`contiene metodi di supporto che formattano le operazioni di Amazon RDS eliminando i dati estranei negli output dei risultati.

## elenco di utilità \$1util.rds
<a name="rds-helpers-in-util-rds-list"></a>

****`$util.rds.toJsonString(String serializedSQLResult): String`****  
Restituisce un `String` trasformando il formato di risultato operativo grezzo di Amazon Relational Database Service (Amazon RDS) Data API con stringhe in una stringa più concisa. La stringa restituita è un elenco serializzato di record SQL del set di risultati. Ogni record è rappresentato da una raccolta di coppie chiave-valore. Le chiavi sono i nomi di colonna corrispondenti.  
Se l'istruzione corrispondente nell'input era una query SQL che causa una mutazione (ad esempio INSERT, UPDATE, DELETE), viene restituito un elenco vuoto. Ad esempio, la query `select * from Books limit 2` fornisce il risultato non elaborato dell'operazione Amazon RDS Data:  

```
{
    "sqlStatementResults": [
        {
            "numberOfRecordsUpdated": 0,
            "records": [
                [
                    {
                        "stringValue": "Mark Twain"
                    },
                    {
                        "stringValue": "Adventures of Huckleberry Finn"
                    },
                    {
                        "stringValue": "978-1948132817"
                    }
                ],
                [
                    {
                        "stringValue": "Jack London"
                    },
                    {
                        "stringValue": "The Call of the Wild"
                    },
                    {
                        "stringValue": "978-1948132275"
                    }
                  ]
            ],
            "columnMetadata": [
                {
                    "isSigned": false,
                    "isCurrency": false,
                    "label": "author",
                    "precision": 200,
                    "typeName": "VARCHAR",
                    "scale": 0,
                    "isAutoIncrement": false,
                    "isCaseSensitive": false,
                    "schemaName": "",
                    "tableName": "Books",
                    "type": 12,
                    "nullable": 0,
                    "arrayBaseColumnType": 0,
                    "name": "author"
                },
                {
                    "isSigned": false,
                    "isCurrency": false,
                    "label": "title",
                    "precision": 200,
                    "typeName": "VARCHAR",
                    "scale": 0,
                    "isAutoIncrement": false,
                    "isCaseSensitive": false,
                    "schemaName": "",
                    "tableName": "Books",
                    "type": 12,
                    "nullable": 0,
                    "arrayBaseColumnType": 0,
                    "name": "title"
                },
                {
                    "isSigned": false,
                    "isCurrency": false,
                    "label": "ISBN-13",
                    "precision": 15,
                    "typeName": "VARCHAR",
                    "scale": 0,
                    "isAutoIncrement": false,
                    "isCaseSensitive": false,
                    "schemaName": "",
                    "tableName": "Books",
                    "type": 12,
                    "nullable": 0,
                    "arrayBaseColumnType": 0,
                    "name": "ISBN-13"
                }
            ]
        }
    ]
}
```
Il `util.rds.toJsonString` è:  

```
[
  {
    "author": "Mark Twain",
    "title": "Adventures of Huckleberry Finn",
    "ISBN-13": "978-1948132817"
  },
  {
    "author": "Jack London",
    "title": "The Call of the Wild",
    "ISBN-13": "978-1948132275"
  },
]
```

****`$util.rds.toJsonObject(String serializedSQLResult): Object`****  
È lo stesso di`util.rds.toJsonString`, ma il risultato è un JSON`Object`.

# Aiutanti HTTP in \$1util.http
<a name="http-helpers-in-utils-http"></a>

**Nota**  
Ora supportiamo principalmente il runtime APPSYNC\$1JS e la relativa documentazione. [Prendi in considerazione l'utilizzo del runtime APPSYNC\$1JS e delle relative guide qui.](https://docs.aws.amazon.com/appsync/latest/devguide/resolver-reference-js-version.html)

L'`$util.http`utilità fornisce metodi di supporto che è possibile utilizzare per gestire i parametri di richiesta HTTP e aggiungere intestazioni di risposta.

## Elenco di utilità \$1util.http
<a name="http-helpers-in-utils-http-list"></a>

** `$util.http.copyHeaders(Map) : Map` **  
Copia le intestazioni dalla mappa, escluse le seguenti intestazioni HTTP con restrizioni:  
+ transfer-encoding
+ connection
+ host
+ expect
+ keep-alive
+ upgrade
+ proxy-authenticate
+ proxy-authorization
+ te
+ content-length
È possibile utilizzare questa utilità per inoltrare le intestazioni delle richieste all'endpoint HTTP downstream.  

```
{
    ...
    "params": {
        ...
        "headers": $util.http.copyHeaders($ctx.request.headers),
        ...
    },
    ...
}
```

**\$1 util.http. addResponseHeader(Stringa, oggetto)**  
Aggiunge una singola intestazione personalizzata con il nome (`String`) e il valore (`Object`) della risposta. Si applicano le limitazioni seguenti:  
+ Oltre all'elenco delle intestazioni con restrizioni per`copyHeaders(Map)`, i nomi delle intestazioni non possono corrispondere a nessuno dei seguenti:
  + Access-Control-Allow-Credentials
  + Access-Control-Allow-Origin
  + Access-Control-Expose-Headers
  + Access-Control-Max-Age
  + Access-Control-Allow-Methods
  + Access-Control-Allow-Headers
  + Vary
  + Content-Type
+ I nomi delle intestazioni non possono iniziare con i prefissi limitati o. `x-amzn-` `x-amz-`
+ La dimensione delle intestazioni di risposta personalizzate non può superare i 4 KB. Sono inclusi i nomi e i valori delle intestazioni.
+ È necessario definire ogni intestazione di risposta una volta per operazione GraphQL. Tuttavia, se definisci più volte un'intestazione personalizzata con lo stesso nome, nella risposta viene visualizzata la definizione più recente. Tutte le intestazioni vengono conteggiate ai fini del limite di dimensione dell'intestazione indipendentemente dalla denominazione.
+ Le intestazioni con un nome vuoto o limitato `(String)` o un valore nullo verranno ignorate e `(Object)` genereranno un `ResponseHeaderError` errore che viene aggiunto all'output dell'operazione. `errors`

```
export function request(ctx) {
  util.http.addResponseHeader('itemsCount', 7)
  util.http.addResponseHeader('render', ctx.args.render)
  return {}
}
```

****`$util.http.addResponseHeaders(Map)`****  
Aggiunge più intestazioni di risposta alla risposta dalla mappa di nomi e valori specificata. `(String)` `(Object)` Le stesse limitazioni elencate per il `addResponseHeader(String, Object)` metodo si applicano anche a questo metodo.  

```
export function request(ctx) {
  const headers = {
    headerInt: 12,
    headerString: 'stringValue',
    headerObject: {
      field1: 7,
      field2: 'string'
    }
  }
  util.http.addResponseHeaders(headers)
  return {}
}
```

# Helper XML in \$1util.xml
<a name="xml-helpers-in-utils-xml"></a>

**Nota**  
Ora supportiamo principalmente il runtime APPSYNC\$1JS e la relativa documentazione. [Prendi in considerazione l'utilizzo del runtime APPSYNC\$1JS e delle relative guide qui.](https://docs.aws.amazon.com/appsync/latest/devguide/resolver-reference-js-version.html)

`$util.xml`contiene metodi di supporto che possono semplificare la traduzione delle risposte XML in JSON o in un dizionario.

## Elenco di utilità \$1util.xml
<a name="xml-helpers-in-utils-xml-list"></a>

****`$util.xml.toMap(String) : Map`****  
Converte una stringa XML in un dizionario.  

```
Input:

<?xml version="1.0" encoding="UTF-8"?>
<posts>
<post>
  <id>1</id>
  <title>Getting started with GraphQL</title>
</post>
</posts>

Output (JSON representation):

{
  "posts":{
    "post":{
      "id":1,
      "title":"Getting started with GraphQL"
    }
  }
}


Input:

<?xml version="1.0" encoding="UTF-8"?>
<posts>
<post>
  <id>1</id>
  <title>Getting started with GraphQL</title>
</post>
<post>
  <id>2</id>
  <title>Getting started with AWS AppSync</title>
</post>
</posts>

Output (JSON representation):

{
  "posts":{
    "post":[
        {
          "id":1,
          "title":"Getting started with GraphQL"
        },
        {
          "id":2,
          "title":"Getting started with AWS AppSync"
        }
    ]
  }
}
```

****`$util.xml.toJsonString(String) : String`****  
Converte una stringa XML in una stringa JSON. È simile a *toMap*, tranne per il fatto che l'output è una stringa. Questa funzione è utile se si desidera convertire direttamente e restituire la risposta XML da un oggetto HTTP in formato JSON.

****`$util.xml.toJsonString(String, Boolean) : String`****  
Converte una stringa XML in una stringa JSON con un parametro booleano opzionale per determinare se si desidera codificare il JSON come stringa.

# Aiutanti di trasformazione in \$1util.transform
<a name="transformation-helpers-in-utils-transform"></a>

**Nota**  
Ora supportiamo principalmente il runtime APPSYNC\$1JS e la relativa documentazione. [Prendi in considerazione l'utilizzo del runtime APPSYNC\$1JS e delle relative guide qui.](https://docs.aws.amazon.com/appsync/latest/devguide/resolver-reference-js-version.html)

`$util.transform`contiene metodi di supporto che semplificano l'esecuzione di operazioni complesse su fonti di dati, come le operazioni di filtro di Amazon DynamoDB.

## aiutanti per la trasformazione
<a name="transformation-helpers-conversions"></a>

### Elenco di utilità degli aiutanti di trasformazione
<a name="transformation-helpers-in-utils-transform-list"></a>

****`$util.transform.toDynamoDBFilterExpression(Map) : Map`****  
Converte una stringa di input in un'espressione di filtro da utilizzare con DynamoDB.  

```
Input:

$util.transform.toDynamoDBFilterExpression({
    "title":{
      "contains":"Hello World"
    }
  })

Output:

{
    "expression" : "contains(#title, :title_contains)"
    "expressionNames" : {
        "#title" : "title",
    },
    "expressionValues" : {
        ":title_contains" : { "S" : "Hello World" }
    },
}
```

****`$util.transform.toElasticsearchQueryDSL(Map) : Map`****  
Converte l'input specificato nella sua espressione OpenSearch Query DSL equivalente, restituendola come stringa JSON.  

```
Input:

$util.transform.toElasticsearchQueryDSL({
    "upvotes":{
        "ne":15,
        "range":[
            10,
            20
        ]
    },
    "title":{
        "eq":"hihihi",
        "wildcard":"h*i"
    }
  })

Output:
{
    "bool":{
      "must":[
          {
            "bool":{
              "must":[
                  {
                    "bool":{
                      "must_not":{
                        "term":{
                          "upvotes":15
                        }
                      }
                    }
                  },
                  {
                    "range":{
                      "upvotes":{
                        "gte":10,
                        "lte":20
                      }
                    }
                  }
              ]
            }
          },
          {
            "bool":{
              "must":[
                  {
                    "term":{
                      "title":"hihihi"
                    }
                  },
                  {
                  "wildcard":{
                      "title":"h*i"
                    }
                  }
              ]
            }
          }
      ]
    }
}
```
Si presume che l'operatore predefinito sia AND.

## Transformation Helpers, filtri di sottoscrizione
<a name="transformation-helpers-conversions-subscription-filters"></a>

### Elenco delle utilità dei filtri di sottoscrizione di Transformation Helpers
<a name="transformation-helpers-in-utils-transform-list"></a>

****`$util.transform.toSubscriptionFilter(Map) : Map`****  
Converte un oggetto `Map` di input in un `SubscriptionFilter` oggetto espressione. Il `$util.transform.toSubscriptionFilter` metodo viene utilizzato come input per l'`$extensions.setSubscriptionFilter()`estensione. Per ulteriori informazioni, consulta [Estensioni](https://docs.aws.amazon.com/appsync/latest/devguide/extensions).

****`$util.transform.toSubscriptionFilter(Map, List) : Map`****  
Converte un oggetto `Map` di input in un oggetto `SubscriptionFilter` espressione. Il `$util.transform.toSubscriptionFilter` metodo viene utilizzato come input per l'`$extensions.setSubscriptionFilter()`estensione. Per ulteriori informazioni, consulta [Estensioni](https://docs.aws.amazon.com/appsync/latest/devguide/extensions).  
Il primo argomento è l'oggetto `Map` di input che viene convertito nell'oggetto `SubscriptionFilter` espressione. Il secondo argomento riguarda i nomi `List` di campo che vengono ignorati nel primo oggetto `Map` di input durante la costruzione dell'oggetto `SubscriptionFilter` espressione.

****`$util.transform.toSubscriptionFilter(Map, List, Map) : Map`****  
Converte un oggetto `Map` di input in un `SubscriptionFilter` oggetto espressione. Il `$util.transform.toSubscriptionFilter` metodo viene utilizzato come input per l'`$extensions.setSubscriptionFilter()`estensione. Per ulteriori informazioni, consulta [Estensioni](https://docs.aws.amazon.com/appsync/latest/devguide/extensions).   
Il primo argomento è l'oggetto di `Map` input che viene convertito nell'oggetto `SubscriptionFilter` espressione, il secondo argomento riguarda i nomi `List` di campo che verranno ignorati nel primo oggetto di `Map` input e il terzo argomento è un oggetto di `Map` input con regole rigorose che viene incluso durante la costruzione dell'oggetto `SubscriptionFilter` espressione. Queste regole rigorose sono incluse nell'oggetto `SubscriptionFilter` espressione in modo tale che almeno una delle regole venga soddisfatta per passare il filtro di sottoscrizione.

## Argomenti del filtro di iscrizione
<a name="subscription-filter-arguments"></a>

La tabella seguente spiega come vengono definiti gli argomenti delle seguenti utilità:
+ `$util.transform.toSubscriptionFilter(Map) : Map`
+ `$util.transform.toSubscriptionFilter(Map, List) : Map`
+ `$util.transform.toSubscriptionFilter(Map, List, Map) : Map`

------
#### [ Argument 1: Map ]

L'argomento 1 è un `Map` oggetto con i seguenti valori chiave:
+ nomi di campo
+ «e»
+ «o»

Per i nomi di campo utilizzati come chiavi, le condizioni relative alle voci di questi campi sono nel formato di. `"operator" : "value"` 

L'esempio seguente mostra come aggiungere voci a: `Map`

```
"field_name" : {
                    "operator1" : value             
               }

## We can have multiple conditions for the same field_name: 

"field_name" : {
                    "operator1" : value             
                    "operator2" : value
                    .
                    .
                    .                  
               }
```

Quando un campo contiene due o più condizioni, si considera che tutte queste condizioni utilizzino l'operazione OR.

L'input `Map` può anche avere «e» e «or» come chiavi, il che implica che tutte le voci al suo interno devono essere unite utilizzando la logica AND o OR a seconda della chiave. I valori chiave «and» e «or» prevedono una serie di condizioni.

```
"and" : [
            
            {
                "field_name1" : {
                    "operator1" : value             
                }
             },
             
             {
                "field_name2" : {
                    "operator1" : value             
                }
             },
             .
             .
        ].
```

Nota che puoi annidare «and» e «or». Cioè, puoi aver annidato «e» /"or» all'interno di un altro blocco «e» /"or». Tuttavia, questo non funziona per campi semplici.

```
"and" : [
            
            {
                "field_name1" : {
                    "operator" : value             
                }
             },
             
             {
                "or" : [
                            {
                                "field_name2" : {
                                    "operator" : value             
                                }
                            },
                            
                            {
                                "field_name3" : {
                                    "operator" : value             
                                }
                            }
              
                        ].
```

L'esempio seguente mostra un input dell'*argomento 1* utilizzando`$util.transform.toSubscriptionFilter(Map) : Map`.

**Ingresso/i**

Argomento 1: Mappa:

```
{
  "percentageUp": {
    "lte": 50,
    "gte": 20
  },
  "and": [
    {
      "title": {
        "ne": "Book1"
      }
    },
    {
      "downvotes": {
        "gt": 2000
      }
    }
  ],
  "or": [
    {
      "author": {
        "eq": "Admin"
      }
    },
    {
      "isPublished": {
        "eq": false
      }
    }
  ]
}
```

**Output**

Il risultato è un `Map` oggetto:

```
{
  "filterGroup": [
    {
      "filters": [
        {
          "fieldName": "percentageUp",
          "operator": "lte",
          "value": 50
        },
        {
          "fieldName": "title",
          "operator": "ne",
          "value": "Book1"
        },
        {
          "fieldName": "downvotes",
          "operator": "gt",
          "value": 2000
        },
        {
          "fieldName": "author",
          "operator": "eq",
          "value": "Admin"
        }
      ]
    },
    {
      "filters": [
        {
          "fieldName": "percentageUp",
          "operator": "lte",
          "value": 50
        },
        {
          "fieldName": "title",
          "operator": "ne",
          "value": "Book1"
        },
        {
          "fieldName": "downvotes",
          "operator": "gt",
          "value": 2000
        },
        {
          "fieldName": "isPublished",
          "operator": "eq",
          "value": false
        }
      ]
    },
    {
      "filters": [
        {
          "fieldName": "percentageUp",
          "operator": "gte",
          "value": 20
        },
        {
          "fieldName": "title",
          "operator": "ne",
          "value": "Book1"
        },
        {
          "fieldName": "downvotes",
          "operator": "gt",
          "value": 2000
        },
        {
          "fieldName": "author",
          "operator": "eq",
          "value": "Admin"
        }
      ]
    },
    {
      "filters": [
        {
          "fieldName": "percentageUp",
          "operator": "gte",
          "value": 20
        },
        {
          "fieldName": "title",
          "operator": "ne",
          "value": "Book1"
        },
        {
          "fieldName": "downvotes",
          "operator": "gt",
          "value": 2000
        },
        {
          "fieldName": "isPublished",
          "operator": "eq",
          "value": false
        }
      ]
    }
  ]
}
```

------
#### [ Argument 2: List ]

L'argomento 2 contiene una `List` serie di nomi di campo che non devono essere considerati nell'input `Map` (argomento 1) durante la costruzione dell'oggetto `SubscriptionFilter` espressione. `List`Possono anche essere vuoti.

L'esempio seguente mostra gli input dell'argomento 1 e dell'argomento 2 utilizzando`$util.transform.toSubscriptionFilter(Map, List) : Map`.

**Ingresso/i**

Argomento 1: Mappa:

```
{

  "percentageUp": {
    "lte": 50,
    "gte": 20
  },
  "and": [
    {
      "title": {
        "ne": "Book1"
      }
    },
    {
      "downvotes": {
        "gt": 20
      }
    }
  ],
  "or": [
    {
      "author": {
        "eq": "Admin"
      }
    },
    {
      "isPublished": {
        "eq": false
      }
    }
  ]
}
```

Argomento 2: Elenco:

```
["percentageUp", "author"]
```

**Output**

Il risultato è un `Map` oggetto:

```
{
  "filterGroup": [
    {
      "filters": [
        {
          "fieldName": "title",
          "operator": "ne",
          "value": "Book1"
        },
        {
          "fieldName": "downvotes",
          "operator": "gt",
          "value": 20
        },
        {
          "fieldName": "isPublished",
          "operator": "eq",
          "value": false
        }
      ]
    }
  ]
}
```

------
#### [ Argument 3: Map ]

L'argomento 3 è un `Map` oggetto che ha nomi di campo come valori chiave (non può avere «and» o «or»). Per i nomi di campo come chiavi, le condizioni in questi campi sono voci nel formato di`"operator" : "value"`. A differenza dell'argomento 1, l'argomento 3 non può avere più condizioni nella stessa chiave. Inoltre, l'argomento 3 non contiene una clausola «and» o «or», quindi non è prevista nemmeno la nidificazione.

L'argomento 3 rappresenta un elenco di regole rigorose, che vengono aggiunte all'oggetto `SubscriptionFilter` espressione in modo che venga soddisfatta **almeno una** di queste condizioni per passare il filtro.

```
{
  "fieldname1": {
    "operator": value
  },
  "fieldname2": {
    "operator": value
  }
}
.
.
.
```

L'esempio seguente mostra gli input dell'*argomento 1*, dell'*argomento 2* e dell'*argomento 3* utilizzando`$util.transform.toSubscriptionFilter(Map, List, Map) : Map`.

**Ingresso/i**

Argomento 1: Mappa:

```
{
  "percentageUp": {
    "lte": 50,
    "gte": 20
  },
  "and": [
    {
      "title": {
        "ne": "Book1"
      }
    },
    {
      "downvotes": {
        "lt": 20
      }
    }
  ],
  "or": [
    {
      "author": {
        "eq": "Admin"
      }
    },
    {
      "isPublished": {
        "eq": false
      }
    }
  ]
}
```

Argomento 2: Elenco:

```
["percentageUp", "author"]
```

Argomento 3: Mappa:

```
{
  "upvotes": {
    "gte": 250
  },
  "author": {
    "eq": "Person1"
  }
}
```

**Output**

Il risultato è un `Map` oggetto:

```
{
  "filterGroup": [
    {
      "filters": [
        {
          "fieldName": "title",
          "operator": "ne",
          "value": "Book1"
        },
        {
          "fieldName": "downvotes",
          "operator": "gt",
          "value": 20
        },
        {
          "fieldName": "isPublished",
          "operator": "eq",
          "value": false
        },
        {
          "fieldName": "upvotes",
          "operator": "gte",
          "value": 250
        }
      ]
    },
    {
      "filters": [
        {
          "fieldName": "title",
          "operator": "ne",
          "value": "Book1"
        },
        {
          "fieldName": "downvotes",
          "operator": "gt",
          "value": 20
        },
        {
          "fieldName": "isPublished",
          "operator": "eq",
          "value": false
        },
        {
          "fieldName": "author",
          "operator": "eq",
          "value": "Person1"
        }
      ]
    }
  ]
}
```

------

# Aiutanti matematici in \$1util.math
<a name="math-helpers-in-util-math"></a>

**Nota**  
Ora supportiamo principalmente il runtime APPSYNC\$1JS e la relativa documentazione. [Prendi in considerazione l'utilizzo del runtime APPSYNC\$1JS e delle relative guide qui.](https://docs.aws.amazon.com/appsync/latest/devguide/resolver-reference-js-version.html)

 `$util.math`contiene metodi per facilitare le operazioni matematiche più comuni. 

## lista di utilità \$1util.math
<a name="math-helpers-in-util-math-list"></a>

** `$util.math.roundNum(Double) : Integer` **  
Prende un valore doppio e lo arrotonda al numero intero più vicino. 

** `$util.math.minVal(Double, Double) : Double` **  
Richiede due doppi e restituisce il valore minimo tra i due doppi.

** `$util.math.maxVal(Double, Double) : Double` **  
Richiede due doppi e restituisce il valore massimo tra i due doppi.

** `$util.math.randomDouble() : Double` **  
Restituisce un doppio casuale compreso tra 0 e 1.  
Questa funzione non deve essere utilizzata per nulla che richieda una casualità ad alta entropia (ad esempio, la crittografia).

** `$util.math.randomWithinRange(Integer, Integer) : Integer` **  
Restituisce un valore intero casuale all'interno dell'intervallo specificato, con il primo argomento che specifica il valore inferiore dell'intervallo e il secondo argomento che specifica il valore superiore dell'intervallo.   
Questa funzione non deve essere utilizzata per nulla che richieda una casualità ad alta entropia (ad esempio, la crittografia).

# Aiutanti per le stringhe in \$1util.str
<a name="str-helpers-in-util-str"></a>

**Nota**  
Ora supportiamo principalmente il runtime APPSYNC\$1JS e la relativa documentazione. [Prendi in considerazione l'utilizzo del runtime APPSYNC\$1JS e delle relative guide qui.](https://docs.aws.amazon.com/appsync/latest/devguide/resolver-reference-js-version.html)

 `$util.str`contiene metodi per facilitare le operazioni più comuni sulle stringhe. 

## Elenco delle utilità di \$1util.str
<a name="str-helpers-in-util-str-list"></a>

** `$util.str.toUpper(String) : String` **  
Prende una stringa e la converte interamente in lettere maiuscole. 

** `$util.str.toLower(String) : String` **  
Prende una stringa e la converte interamente in lettere minuscole.

** `$util.str.toReplace(String, String, String) : String` **  
Sostituisce una sottostringa all'interno di una stringa con un'altra stringa. Il primo argomento specifica la stringa su cui eseguire l'operazione di sostituzione. Il secondo argomento specifica la sottostringa da sostituire. Il terzo argomento specifica la stringa con cui sostituire il secondo argomento. Di seguito è riportato un esempio di utilizzo di questa utilità:   

```
 INPUT:      $util.str.toReplace("hello world", "hello", "mellow")
 OUTPUT:     "mellow world"
```

** `$util.str.normalize(String, String) : String` **  
Normalizza una stringa utilizzando uno dei quattro moduli di normalizzazione Unicode: NFC, NFD, NFKC o NFKD. Il primo argomento è la stringa da normalizzare. Il secondo argomento è «nfc», «nfd», «nfkc» o «nfkd» e specifica il tipo di normalizzazione da utilizzare per il processo di normalizzazione.

# Estensioni
<a name="extensions"></a>

**Nota**  
Ora supportiamo principalmente il runtime APPSYNC\$1JS e la relativa documentazione. [Prendi in considerazione l'utilizzo del runtime APPSYNC\$1JS e delle relative guide qui.](https://docs.aws.amazon.com/appsync/latest/devguide/resolver-reference-js-version.html)

`$extensions`contiene una serie di metodi per eseguire azioni aggiuntive all'interno dei resolver.

## Estensioni di memorizzazione nella cache
<a name="caching-extensions-list"></a>

**`$extensions.evictFromApiCache(String, String, Object) : Object`**  
Rimuove un elemento dalla cache lato server. AWS AppSync Il primo argomento è il nome del tipo. Il secondo argomento è il nome del campo. Il terzo argomento è un oggetto contenente elementi della coppia chiave-valore che specificano il valore della chiave di memorizzazione nella cache. È necessario inserire gli elementi nell'oggetto nello stesso ordine delle chiavi di memorizzazione nella cache del resolver memorizzato nella cache. `cachingKey`  
Questa utilità funziona solo per le mutazioni, non per le interrogazioni.

## Estensioni di abbonamento
<a name="subscription-extensions-list"></a>

**`$extensions.setSubscriptionFilter(filterJsonObject)`**  
Definisce filtri di abbonamento avanzati. Ogni evento di notifica di sottoscrizione viene valutato sulla base dei filtri di sottoscrizione forniti e invia notifiche ai clienti se tutti i filtri rispondono`true`. L'argomento è `filterJsonObject` descritto nella sezione seguente.  
È possibile utilizzare questo metodo di estensione solo nei modelli di mappatura delle risposte di un resolver di sottoscrizioni.

**`$extensions.setSubscriptionInvalidationFilter(filterJsonObject)`**  
Definisce i filtri di invalidazione dell'abbonamento. I filtri di sottoscrizione vengono valutati in base al payload di invalidazione, quindi invalidano un determinato abbonamento se i filtri restituiscono lo stesso risultato. `true` L'argomento è descritto nella sezione `filterJsonObject` seguente.  
È possibile utilizzare questo metodo di estensione solo nei modelli di mappatura delle risposte di un resolver di sottoscrizioni.

**`$extensions.invalidateSubscriptions(invalidationJsonObject)`**  
Utilizzato per avviare l'invalidazione dell'abbonamento a seguito di una mutazione. L'argomento è `invalidationJsonObject` descritto nella sezione seguente.  
Questa estensione può essere utilizzata solo nei modelli di mappatura delle risposte dei risolutori di mutazioni.  
È possibile utilizzare al massimo cinque chiamate di `$extensions.invalidateSubscriptions()` metodo uniche in ogni singola richiesta. Se superi questo limite, riceverai un errore GraphQL.

## Argomento: filterJsonObject
<a name="extensions-setSubscriptionInvalidationFilter"></a>

L'oggetto JSON definisce i filtri di sottoscrizione o di invalidazione. È una serie di filtri in un. `filterGroup` Ogni filtro è una raccolta di filtri individuali.

```
{
    "filterGroup": [
        {
           "filters" : [
                 {
                    "fieldName" : "userId",
                    "operator" : "eq",
                    "value" : 1
                }
           ]
           
        },
        {
           "filters" : [
                {
                    "fieldName" : "group",
                    "operator" : "in",
                    "value" : ["Admin", "Developer"]
                }
           ]
           
        }
    ]
}
```

Ogni filtro ha tre attributi: 
+ `fieldName`— Il campo dello schema GraphQL.
+ `operator`— Il tipo di operatore.
+ `value`— I valori da confrontare con il `fieldName` valore di notifica dell'abbonamento.

Di seguito è riportato un esempio di assegnazione di questi attributi:

```
{
 "fieldName" : "severity",
 "operator" : "le",
 "value" : $context.result.severity
}
```

### Campo: FieldName
<a name="extensions-fieldName"></a>

Il tipo di stringa `fieldName` si riferisce a un campo definito nello schema GraphQL che corrisponde al `fieldName` payload di notifica della sottoscrizione. Quando viene trovata una corrispondenza, il `value` campo dello schema GraphQL viene confrontato con quello del filtro di notifica `value` della sottoscrizione. Nell'esempio seguente, il `fieldName` filtro corrisponde al `service` campo definito in un determinato tipo GraphQL. Se il payload di notifica contiene un `service` campo con un `value` equivalente a`AWS AppSync`, il filtro restituisce: `true`

```
{
 "fieldName" : "service",
 "operator" : "eq",
 "value" : "AWS AppSync"
}
```

### Campo: valore
<a name="extensions-value"></a>

Il valore può essere di tipo diverso in base all'operatore:
+ Un numero singolo o booleano
  + Esempi di stringhe:, `"test"` `"service"`
  + Esempi di numeri: `1``2`, `45.75`
  + Esempi booleani:, `true` `false`
+ Coppie di numeri o stringhe
  + Esempio di coppia di stringhe:`["test1","test2"]`, `["start","end"]`
  + Esempio di coppia numerica:`[1,4]`,`[67,89]`, `[12.45, 95.45]`
+ Matrici di numeri o stringhe
  + Esempio di array di stringhe: `["test1","test2","test3","test4","test5"]`
  + Esempio di array numerico:`[1,2,3,4,5]`, `[12.11,46.13,45.09,12.54,13.89]`

### Campo: operatore
<a name="extensions-operator"></a>

Una stringa con distinzione tra maiuscole e minuscole con i seguenti valori possibili: 


| 
| 
| Operatore | Description | Tipi di valori possibili | 
| --- |--- |--- |
| eq | Uguale | intero, float, stringa, booleano | 
| uno | Non uguale | intero, float, stringa, booleano | 
| leu | Minore di o uguale a | intero, float, stringa | 
| lt | Less than | intero, float, stringa | 
| età | Maggiore di o uguale a | intero, float, stringa | 
| gt | Greater than | intero, float, stringa | 
| contiene | Verifica la presenza di una sottosequenza o di un valore nel set. | numero intero, float, stringa | 
| Non contiene | Verifica l'assenza di una sottosequenza o l'assenza di un valore nell'insieme. | numero intero, float, stringa | 
| Inizia con | Verifica la presenza di un prefisso. | stringa | 
| in | Verifica la presenza di elementi corrispondenti presenti nell'elenco. | Matrice di numeri interi, float o stringhe | 
| notIn | Verifica la presenza di elementi corrispondenti che non sono presenti nell'elenco. | Matrice di numeri interi, float o stringhe | 
| tra | Tra due valori | numero intero, float, stringa | 
| Contiene Any | Contiene elementi comuni | numero intero, float, stringa | 

La tabella seguente descrive come ogni operatore viene utilizzato nella notifica di sottoscrizione.

------
#### [ eq (equal) ]

L'`eq`operatore valuta `true` se il valore del campo di notifica della sottoscrizione corrisponde ed è strettamente uguale al valore del filtro. Nell'esempio seguente, il filtro valuta `true` se la notifica di sottoscrizione ha un `service` campo con il valore equivalente a. `AWS AppSync`

**Tipi di valori possibili:** integer, float, string, boolean

```
{
 "fieldName" : "service",
 "operator" : "eq",
 "value" : "AWS AppSync"
}
```

------
#### [ ne (not equal) ]

L'`ne`operatore valuta `true` se il valore del campo di notifica della sottoscrizione è diverso dal valore del filtro. Nell'esempio seguente, il filtro valuta `true` se la notifica di sottoscrizione ha un `service` campo con un valore diverso da. `AWS AppSync`

**Tipi di valori possibili:** integer, float, string, boolean

```
{
 "fieldName" : "service",
 "operator" : "ne",
 "value" : "AWS AppSync"
}
```

------
#### [ le (less or equal) ]

L'`le`operatore valuta `true` se il valore del campo di notifica della sottoscrizione è inferiore o uguale al valore del filtro. Nell'esempio seguente, il filtro valuta `true` se la notifica di sottoscrizione contiene un `size` campo con un valore inferiore o uguale a. `5`

**Tipi di valori possibili:** integer, float, string

```
{
 "fieldName" : "size",
 "operator" : "le",
 "value" : 5
}
```

------
#### [ lt (less than) ]

L'`lt`operatore valuta `true` se il valore del campo di notifica della sottoscrizione è inferiore al valore del filtro. Nell'esempio seguente, il filtro valuta `true` se la notifica di sottoscrizione contiene un `size` campo con un valore inferiore a. `5`

**Tipi di valori possibili:** integer, float, string

```
{
 "fieldName" : "size",
 "operator" : "lt",
 "value" : 5
}
```

------
#### [ ge (greater or equal) ]

L'`ge`operatore valuta `true` se il valore del campo di notifica della sottoscrizione è maggiore o uguale al valore del filtro. Nell'esempio seguente, il filtro valuta `true` se la notifica di sottoscrizione contiene un `size` campo con un valore maggiore o uguale a. `5`

**Tipi di valori possibili:** integer, float, string

```
{
 "fieldName" : "size",
 "operator" : "ge",
 "value" : 5
}
```

------
#### [ gt (greater than) ]

L'`gt`operatore valuta `true` se il valore del campo di notifica della sottoscrizione è maggiore del valore del filtro. Nell'esempio seguente, il filtro valuta `true` se la notifica di sottoscrizione contiene un `size` campo con un valore maggiore di. `5`

**Tipi di valori possibili:** integer, float, string

```
{
 "fieldName" : "size",
 "operator" : "gt",
 "value" : 5
}
```

------
#### [ contains ]

L'`contains`operatore verifica la presenza di una sottostringa, di una sottosequenza o di un valore in un set o in un singolo elemento. Un filtro con l'`contains`operatore valuta `true` se il valore del campo di notifica della sottoscrizione contiene il valore del filtro. Nell'esempio seguente, il filtro valuta `true` se la notifica di sottoscrizione contiene un `seats` campo con il valore dell'array contenente il valore. `10`

**Tipi di valori possibili:** integer, float, string

```
{
 "fieldName" : "seats",
 "operator" : "contains",
 "value" : 10
}
```

In un altro esempio, il filtro valuta `true` se la notifica di sottoscrizione ha un `event` campo con `launch` come sottostringa.

```
{
 "fieldName" : "event",
 "operator" : "contains",
 "value" : "launch"
}
```

------
#### [ notContains ]

L'`notContains`operatore verifica l'assenza di una sottostringa, di una sottosequenza o di un valore in un set o in un singolo elemento. Il filtro con l'`notContains`operatore determina `true` se il valore del campo di notifica della sottoscrizione non contiene il valore del filtro. Nell'esempio seguente, il filtro valuta `true` se la notifica di sottoscrizione ha un `seats` campo il cui valore dell'array non contiene il valore. `10`

**Tipi di valori possibili:** integer, float, string

```
{
 "fieldName" : "seats",
 "operator" : "notContains",
 "value" : 10
}
```

In un altro esempio, il filtro valuta `true` se la notifica di sottoscrizione ha un valore di `event` campo senza `launch` come sottofondo.

```
{
 "fieldName" : "event",
 "operator" : "notContains",
 "value" : "launch"
}
```

------
#### [ beginsWith ]

L'`beginsWith`operatore verifica la presenza di un prefisso in una stringa. Il filtro contenente l'`beginsWith`operatore valuta `true` se il valore del campo di notifica della sottoscrizione inizia con il valore del filtro. Nell'esempio seguente, il filtro valuta `true` se la notifica di sottoscrizione contiene un `service` campo con un valore che inizia con. `AWS`

**Tipo di valore possibile: stringa**

```
{
 "fieldName" : "service",
 "operator" : "beginsWith",
 "value" : "AWS"
}
```

------
#### [ in ]

L'`in`operatore verifica la presenza di elementi corrispondenti in un array. Il filtro contenente l'`in`operatore valuta `true` se il valore del campo di notifica della sottoscrizione esiste in un array. Nell'esempio seguente, il filtro valuta `true` se la notifica di sottoscrizione ha un `severity` campo con uno dei valori presenti nell'array:. `[1,2,3]`

**Tipo di valore possibile:** Array of integer, float o string

```
{
 "fieldName" : "severity",
 "operator" : "in",
 "value" : [1,2,3]
}
```

------
#### [ notIn ]

L'`notIn`operatore verifica la presenza di elementi mancanti in un array. Il filtro contenente l'`notIn`operatore valuta `true` se il valore del campo di notifica della sottoscrizione non esiste nell'array. Nell'esempio seguente, il filtro valuta `true` se la notifica di sottoscrizione ha un `severity` campo con uno dei valori non presenti nell'array:. `[1,2,3]`

**Tipo di valore possibile:** Array di numeri interi, float o string

```
{
 "fieldName" : "severity",
 "operator" : "notIn",
 "value" : [1,2,3]
}
```

------
#### [ between ]

L'`between`operatore verifica la presenza di valori tra due numeri o stringhe. Il filtro contenente l'`between`operatore valuta `true` se il valore del campo di notifica della sottoscrizione è compreso tra la coppia di valori del filtro. Nell'esempio seguente, il filtro valuta `true` se la notifica di sottoscrizione ha un `severity` campo con valori`2`,,`3`. `4`

**Tipi di valori possibili:** coppia di numeri interi, float o string

```
{
 "fieldName" : "severity",
 "operator" : "between",
 "value" : [1,5]
}
```

------
#### [ containsAny ]

L'`containsAny`operatore verifica la presenza di elementi comuni negli array. Un filtro con l'`containsAny`operatore valuta `true` se l'intersezione tra il valore del set del campo di notifica della sottoscrizione e il valore del set di filtri non è vuota. Nell'esempio seguente, il filtro valuta `true` se la notifica di sottoscrizione contiene un `seats` campo con un valore di matrice contenente o. `10` `15` Ciò significa che il filtro valuterebbe `true` se la notifica di sottoscrizione avesse un valore di `seats` campo pari `[10,11]` o`[15,20,30]`.

**Tipi di valori possibili:** integer, float o string

```
{
 "fieldName" : "seats",
 "operator" : "containsAny",
 "value" : [10, 15]
}
```

------

### Logica AND
<a name="extensions-AND-logic"></a>

È possibile combinare più filtri utilizzando la logica AND definendo più voci all'interno dell'`filters`oggetto dell'`filterGroup`array. Nell'esempio seguente, i filtri valutano `true` se la notifica di sottoscrizione ha un `userId` campo con un valore equivalente a `1` AND un valore di `group` campo pari `Admin` o uguale a`Developer`.

```
{
    "filterGroup": [
        {
           "filters" : [
                 {
                    "fieldName" : "userId",
                    "operator" : "eq",
                    "value" : 1
                },
                {
                    "fieldName" : "group",
                    "operator" : "in",
                    "value" : ["Admin", "Developer"]
                }
           ]
           
        }
    ]
}
```

### Logica OR
<a name="extensions-OR-logic"></a>

È possibile combinare più filtri utilizzando la logica OR definendo più oggetti di filtro all'interno dell'`filterGroup`array. Nell'esempio seguente, i filtri valutano `true` se la notifica di sottoscrizione ha un `userId` campo con un valore equivalente a `1` OR un valore di `group` campo uguale a `Admin` o`Developer`.

```
{
    "filterGroup": [
        {
           "filters" : [
                 {
                    "fieldName" : "userId",
                    "operator" : "eq",
                    "value" : 1
                }
           ]
           
        },
        {
           "filters" : [
                {
                    "fieldName" : "group",
                    "operator" : "in",
                    "value" : ["Admin", "Developer"]
                }
           ]
           
        }
    ]
}
```

### Eccezioni
<a name="extensions-exceptions"></a>

Tieni presente che esistono diverse restrizioni per l'utilizzo dei filtri:
+ Nell'`filters`oggetto, possono esserci un massimo di cinque `fieldName` elementi unici per filtro. Ciò significa che è possibile combinare un massimo di cinque `fieldName` oggetti singoli utilizzando la logica AND.
+ L'`containsAny`operatore può disporre di un massimo di venti valori.
+ Possono esserci un massimo di cinque valori per gli `notIn` operatori `in` and.
+ Ogni stringa può contenere un massimo di 256 caratteri.
+ Ogni confronto tra stringhe distingue tra maiuscole e minuscole.
+ Il filtraggio degli oggetti annidati consente fino a cinque livelli di filtraggio annidati.
+ Ciascuno `filterGroup` può avere un massimo di 10. `filters` Ciò significa che è possibile combinarne un massimo di 10 `filters` utilizzando la logica OR.
  + L'`in`operatore è un caso speciale della logica OR. Nell'esempio seguente, ce ne sono due`filters`:

    ```
    {
        "filterGroup": [
            {
               "filters" : [
                     {
                        "fieldName" : "userId",
                        "operator" : "eq",
                        "value" : 1
                    },
                    {
                        "fieldName" : "group",
                        "operator" : "in",
                        "value" : ["Admin", "Developer"]
                    }
               ]  
            }
        ]
    }
    ```

    Il gruppo di filtri precedente viene valutato come segue e conta ai fini del limite massimo di filtri:

    ```
    {
        "filterGroup": [
            {
               "filters" : [
                     {
                        "fieldName" : "userId",
                        "operator" : "eq",
                        "value" : 1
                    },
                    {
                        "fieldName" : "group",
                        "operator" : "eq",
                        "value" : "Admin"
                    }
               ]  
            },
            {
               "filters" : [
                     {
                        "fieldName" : "userId",
                        "operator" : "eq",
                        "value" : 1
                    },
                    {
                        "fieldName" : "group",
                        "operator" : "eq",
                        "value" : "Developer"
                    }
               ]  
            }
        ]
    }
    ```

## Argomento: invalidationJsonObject
<a name="extensions-invalidationJsonObject"></a>

`invalidationJsonObject`Definisce quanto segue:
+ `subscriptionField`— L'abbonamento allo schema GraphQL da invalidare. Un singolo abbonamento, definito come una stringa in`subscriptionField`, viene considerato invalidato.
+ `payload`— Un elenco di coppie chiave-valore che viene utilizzato come input per invalidare le sottoscrizioni se il filtro di invalidazione valuta in base ai relativi valori. `true`

  L'esempio seguente invalida i client sottoscritti e connessi che utilizzano l'abbonamento quando il filtro di invalidazione definito nel resolver di `onUserDelete` sottoscrizione restituisce un risultato conforme al valore. `true` `payload`

  ```
  $extensions.invalidateSubscriptions({
          "subscriptionField": "onUserDelete",
          "payload": {
                  "group": "Developer"
                  "type" : "Full-Time"
        }
      })
  ```