

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# AWS AppSync Referenz zum Hilfsprogramm für Resolver-Mapping-Vorlagen
<a name="resolver-util-reference"></a>

**Anmerkung**  
Wir unterstützen jetzt hauptsächlich die APPSYNC\$1JS-Laufzeit und ihre Dokumentation. [Bitte erwägen Sie, die APPSYNC\$1JS-Laufzeit und ihre Anleitungen hier zu verwenden.](https://docs.aws.amazon.com/appsync/latest/devguide/resolver-reference-js-version.html)

AWS AppSync definiert eine Reihe von Dienstprogrammen, die Sie in einem GraphQL-Resolver verwenden können, um Interaktionen mit Datenquellen zu vereinfachen. Einige dieser Dienstprogramme sind für die allgemeine Verwendung mit beliebigen Datenquellen vorgesehen, z. B. für die Generierung von Zeitstempeln IDs oder für die Generierung von Zeitstempeln. Andere sind spezifisch für einen bestimmten Datenquellentyp. Die folgenden Dienstprogramme sind verfügbar:
+  [Hilfsprogramme in \$1util](https://docs.aws.amazon.com/appsync/latest/devguide/utility-helpers-in-util.html) — Die Variable \$1util enthält allgemeine Hilfsmethoden, die Ihnen bei der Arbeit mit Daten helfen. Sofern nicht anders angegeben, verwenden alle Dienstprogramme den UTF-8-Zeichensatz.
+ [ AppSync Direktiven](https://docs.aws.amazon.com/appsync/latest/devguide/aws-appsync-directives.html) — AppSync macht Direktiven verfügbar, um Entwicklern die Produktivität beim Schreiben in VTL zu erleichtern.
+  [Zeithelfer in \$1util.time — Die Variable \$1util.time](https://docs.aws.amazon.com/appsync/latest/devguide/time-helpers-in-util-time.html) enthält Datetime-Methoden, mit deren Hilfe Zeitstempel generiert, zwischen Datetime-Formaten konvertiert und Datetime-Zeichenketten analysiert werden können. Die Syntax für Datetime-Formate basiert darauf, auf die Sie sich für weitere Dokumentation beziehen können. [DateTimeFormatter](https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html)
+ [Hilfsprogramme in \$1util.list auflisten - \$1util.list](https://docs.aws.amazon.com/appsync/latest/devguide/list-helpers-in-util-list.html) enthält Methoden, die bei allgemeinen List-Operationen helfen, z. B. beim Entfernen oder Beibehalten von Elementen aus einer Liste zum Filtern von Anwendungsfällen.
+  [Map-Helper in \$1util.map - \$1util.map](https://docs.aws.amazon.com/appsync/latest/devguide/utility-helpers-in-map.html) enthält Methoden zur Unterstützung gängiger Map-Operationen wie dem Entfernen oder Beibehalten von Elementen aus einer Map zum Filtern von Anwendungsfällen.
+  [DynamoDB-Helfer in \$1util.dynamodb - \$1util.dynamodb](https://docs.aws.amazon.com/appsync/latest/devguide/dynamodb-helpers-in-util-dynamodb.html) enthält Hilfsmethoden, die das Schreiben und Lesen von Daten in Amazon DynamoDB erleichtern, wie z. B. automatische Typenzuweisung und Formatierung. 
+  [Amazon RDS-Helfer in \$1util.rds - \$1util.rds](https://docs.aws.amazon.com/appsync/latest/devguide/rds-helpers-in-util-rds.html) enthält Hilfsmethoden, die RDS-Operationen formatieren, indem sie überflüssige Daten in Ergebnisausgaben entfernen.
+  [HTTP-Helfer in \$1util.http — Das Hilfsprogramm \$1util.http](https://docs.aws.amazon.com/appsync/latest/devguide/http-helpers-in-utils-http.html) bietet Hilfsmethoden, mit denen Sie HTTP-Anforderungsparameter verwalten und Antwortheader hinzufügen können.
+  [XML-Helfer in \$1util.xml - \$1util.xml](https://docs.aws.amazon.com/appsync/latest/devguide/xml-helpers-in-utils-xml.html) enthält Hilfsmethoden, die es einfacher machen können, XML-Antworten in JSON oder ein Dictionary zu übersetzen.
+  [Transformationshelfer in \$1util.transform](https://docs.aws.amazon.com/appsync/latest/devguide/transformation-helpers-in-utils-transform.html) - \$1util.transform enthält Hilfsmethoden, die es einfacher machen, komplexe Operationen an Datenquellen durchzuführen, wie z. B. DynamoDB-Filteroperationen.
+  [Mathematische Helfer in \$1util.math - \$1util.math enthält Methoden, die bei gängigen mathematischen Operationen helfen.](https://docs.aws.amazon.com/appsync/latest/devguide/math-helpers-in-util-math.html)
+  [Zeichenkettenhelfer in \$1util.str - \$1util.str](https://docs.aws.amazon.com/appsync/latest/devguide/str-helpers-in-util-str.html) enthält Methoden, die bei gängigen String-Operationen helfen.
+  [Erweiterungen](https://docs.aws.amazon.com/appsync/latest/devguide/extensions.html) — \$1extensions enthält eine Reihe von Methoden, mit denen Sie zusätzliche Aktionen in Ihren Resolvern ausführen können.

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

**Anmerkung**  
Wir unterstützen jetzt hauptsächlich die APPSYNC\$1JS-Laufzeit und ihre Dokumentation. [Bitte erwägen Sie, die APPSYNC\$1JS-Laufzeit und ihre Anleitungen hier zu verwenden.](https://docs.aws.amazon.com/appsync/latest/devguide/resolver-reference-js-version.html)

Die `$util` Variable enthält allgemeine Hilfsmethoden, die Ihnen bei der Arbeit mit Daten helfen. Sofern nicht anders angegeben, verwenden alle Dienstprogramme den UTF-8-Zeichensatz.

## Werkzeuge zum Analysieren von JSON
<a name="utility-helpers-in-json-parsing"></a>

### Liste der JSON-Parsing-Dienstprogramme
<a name="utility-helpers-in-json-parsing-list"></a>

** **`$util.parseJson(String) : Object`** **  
Erhält das "stringify"-JSON-Objekt und gibt eine Objektdarstellung des Ergebnisses zurück.

** **`$util.toJson(Object) : String`** **  
Nimmt ein Objekt und gibt eine "stringify"-JSON-Darstellung dieses Objekts zurück.

## Werkzeuge zum Kodieren
<a name="utility-helpers-in-encoding"></a>

### Liste der Kodierungswerkzeuge
<a name="utility-helpers-in-encoding-list"></a>

** **`$util.urlEncode(String) : String`** **  
Gibt die Eingabezeichenfolge als eine `application/x-www-form-urlencoded`-kodierte Zeichenfolge zurück.

** **`$util.urlDecode(String) : String`** **  
Dekodiert eine `application/x-www-form-urlencoded`-kodierte Zeichenfolge zurück in ihre nicht kodierte Form.

** **`$util.base64Encode( byte[] ) : String`** **  
Verschlüsselt die Eingabe in eine base64-kodierte Zeichenfolge.

** **`$util.base64Decode(String) : byte[]`** **  
Decodiert die Daten einer base64-verschlüsselten Zeichenfolge.

## Dienstprogramme zur ID-Generierung
<a name="utility-helpers-in-id-gen"></a>

### Liste der Tools zur ID-Generierung
<a name="utility-helpers-in-id-gen-list"></a>

** **`$util.autoId() : String`** **  
Gibt eine zufällig generierte 128-Bit-UUID zurück.

****`$util.autoUlid() : String`****  
Gibt eine zufällig generierte 128-Bit-ULID (Universally Unique Lexicographically Sortable Identifier) zurück.

****`$util.autoKsuid() : String`****  
Gibt eine zufällig generierte 128-Bit-KSUID (K-Sortable Unique Identifier) Base62 zurück, die als Zeichenfolge mit einer Länge von 27 codiert ist.

## Fehler utils
<a name="utility-helpers-in-error"></a>

### Fehler-Utils-Liste
<a name="utility-helpers-in-error-list"></a>

** `$util.error(String)` **  
Gibt einen benutzerdefinierte Fehler aus. Verwenden Sie dies in Vorlagen für die Zuordnung von Anfragen oder Antworten, um einen Fehler in der Anfrage oder im Aufrufergebnis zu erkennen.

** `$util.error(String, String)` **  
Gibt einen benutzerdefinierte Fehler aus. Verwenden Sie dies in Vorlagen für die Zuordnung von Anfragen oder Antworten, um einen Fehler in der Anfrage oder im Aufrufergebnis zu erkennen. Sie können auch eine `errorType` angeben.

** `$util.error(String, String, Object)` **  
Gibt einen benutzerdefinierte Fehler aus. Verwenden Sie dies in Vorlagen für die Zuordnung von Anfragen oder Antworten, um einen Fehler in der Anfrage oder im Aufrufergebnis zu erkennen. Sie können auch ein Feld `errorType` und ein `data` Feld angeben. Der `data`-Wert wird zum entsprechenden `error`-Block in `errors` in der GraphQL-Antwort hinzugefügt.  
`data`wird auf der Grundlage des Abfrageauswahlsatzes gefiltert.

** `$util.error(String, String, Object, Object)` **  
Gibt einen benutzerdefinierte Fehler aus. Dies kann in Anforderungs- oder Antwortzuweisungsvorlagen verwendet werden, wenn die Vorlage einen Fehler bei der Anforderung oder beim Aufrufergebnis erkennt. Zusätzlich können ein `errorType` Feld, ein `data` Feld und ein `errorInfo` Feld angegeben werden. Der `data`-Wert wird zum entsprechenden `error`-Block in `errors` in der GraphQL-Antwort hinzugefügt.   
`data`wird auf der Grundlage des Abfrageauswahlsatzes gefiltert. Der `errorInfo`-Wert wird zum entsprechenden `error`-Block in `errors` in der GraphQL-Antwort hinzugefügt.  
`errorInfo`wird **NICHT** auf der Grundlage des Abfrageauswahlsatzes gefiltert.

** `$util.appendError(String)` **  
Fügt einen benutzerdefinierten Fehler an. Dies kann in Anforderungs- oder Antwortzuweisungsvorlagen verwendet werden, wenn die Vorlage einen Fehler bei der Anforderung oder beim Aufrufergebnis erkennt. Im Gegensatz zu `$util.error(String)` wird die Vorlagenbewertung nicht unterbrochen, sodass die Daten an den Aufrufer zurückgegeben werden können.

** `$util.appendError(String, String)` **  
Fügt einen benutzerdefinierten Fehler an. Dies kann in Anforderungs- oder Antwortzuweisungsvorlagen verwendet werden, wenn die Vorlage einen Fehler bei der Anforderung oder beim Aufrufergebnis erkennt. Zudem kann ein `errorType` angegeben werden. Im Gegensatz zu `$util.error(String, String)` wird die Vorlagenbewertung nicht unterbrochen, sodass die Daten an den Aufrufer zurückgegeben werden können.

** `$util.appendError(String, String, Object)` **  
Fügt einen benutzerdefinierten Fehler an. Dies kann in Anforderungs- oder Antwortzuweisungsvorlagen verwendet werden, wenn die Vorlage einen Fehler bei der Anforderung oder beim Aufrufergebnis erkennt. Zudem können die Felder `errorType` und `data` angegeben werden. Im Gegensatz zu `$util.error(String, String, Object)` wird die Vorlagenbewertung nicht unterbrochen, sodass die Daten an den Aufrufer zurückgegeben werden können. Der `data`-Wert wird zum entsprechenden `error`-Block in `errors` in der GraphQL-Antwort hinzugefügt.   
`data`wird auf der Grundlage des Abfrageauswahlsatzes gefiltert.

** `$util.appendError(String, String, Object, Object)` **  
Fügt einen benutzerdefinierten Fehler an. Dies kann in Anforderungs- oder Antwortzuweisungsvorlagen verwendet werden, wenn die Vorlage einen Fehler bei der Anforderung oder beim Aufrufergebnis erkennt. Zusätzlich können ein `errorType` Feld, ein `data` Feld und ein `errorInfo` Feld angegeben werden. Im Gegensatz zu `$util.error(String, String, Object, Object)` wird die Vorlagenbewertung nicht unterbrochen, sodass die Daten an den Aufrufer zurückgegeben werden können. Der `data`-Wert wird zum entsprechenden `error`-Block in `errors` in der GraphQL-Antwort hinzugefügt.  
`data`wird auf der Grundlage des Abfrageauswahlsatzes gefiltert. Der `errorInfo`-Wert wird zum entsprechenden `error`-Block in `errors` in der GraphQL-Antwort hinzugefügt.  
`errorInfo`wird **NICHT** auf der Grundlage des Abfrageauswahlsatzes gefiltert.

## Werkzeuge zur Zustandsvalidierung
<a name="utility-helpers-in-condition"></a>

### Liste der Utilities zur Zustandsvalidierung
<a name="utility-helpers-in-condition-list"></a>

** `$util.validate(Boolean, String) : void` **  
Wenn die Bedingung falsch ist, wird eine CustomTemplateException mit der angegebenen Nachricht ausgelöst.

** `$util.validate(Boolean, String, String) : void` **  
Wenn die Bedingung falsch ist, wird a CustomTemplateException mit der angegebenen Nachricht und dem angegebenen Fehlertyp ausgelöst.

** `$util.validate(Boolean, String, String, Object) : void` **  
Wenn die Bedingung falsch ist, wird eine CustomTemplateException mit der angegebenen Meldung und dem angegebenen Fehlertyp sowie den Daten ausgelöst, die in der Antwort zurückgegeben werden sollen.

## Werkzeuge für das Verhalten Null
<a name="utility-helpers-in-null-behavior"></a>

### Liste der Dienstprogramme für Verhalten mit Null
<a name="utility-helpers-in-null-behavior-list"></a>

** `$util.isNull(Object) : Boolean` **  
Gibt "true" zurück, wenn das bereitgestellte Objekt null ist.

** `$util.isNullOrEmpty(String) : Boolean` **  
Gibt "true" zurück, wenn die bereitgestellten Daten null oder eine leere Zeichenfolge sind. Ansonsten wird "false" zurückgegeben.

** `$util.isNullOrBlank(String) : Boolean` **  
Gibt "true" zurück, wenn die bereitgestellten Daten null oder eine leere Zeichenfolge sind. Ansonsten wird "false" zurückgegeben.

** `$util.defaultIfNull(Object, Object) : Object` **  
Gibt das erste Objekt zurück, wenn es nicht null ist. Ansonsten wird das zweite Objekt als ein "Standardobjekt" zurückgegeben.

** `$util.defaultIfNullOrEmpty(String, String) : String` **  
Gibt die erste Zeichenfolge zurück, wenn sie nicht null oder leer ist. Ansonsten wird die zweite Zeichenfolge als eine "Standardzeichenfolge" zurückgegeben.

** `$util.defaultIfNullOrBlank(String, String) : String` **  
Gibt die erste Zeichenfolge zurück, wenn sie nicht null oder leer ist. Ansonsten wird die zweite Zeichenfolge als eine "Standardzeichenfolge" zurückgegeben.

## Dienstprogramme für den Musterabgleich
<a name="utility-helpers-in-pattern-matching"></a>

### Liste der Werkzeuge für den Typ- und Musterabgleich
<a name="utility-helpers-in-type-pattern-matching-list"></a>

** `$util.typeOf(Object) : String` **  
Gibt eine Zeichenfolge zurück, die den Typ des Objekts beschreibt. Unterstützte Typenidentifikationen sind "null", "Zahl", "Zeichenfolge", "Zuweisung", "Liste", "boolescher Wert". Wenn ein Typ nicht identifiziert werden kann, lautet der Rückgabetyp "Objekt".

** `$util.matches(String, String) : Boolean` **  
Gibt "true" zurück, wenn das angegebene Muster im ersten Argument den bereitgestellten Daten im zweiten Argument entspricht. Das Muster muss ein regulärer Ausdruck sein, wie z. B. `$util.matches("a*b", "aaaaab")`. Die Funktionalität basiert auf [Pattern](https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html), worauf Sie zur weiteren Dokumentation verweisen können.

** `$util.authType() : String` **  
Gibt eine Zeichenfolge zurück, die den Multi-Auth-Typ beschreibt, der von einer Anfrage verwendet wird, und gibt entweder „IAM-Autorisierung“, „Benutzerpool-Autorisierung“, „Open ID Connect-Autorisierung“ oder „API-Schlüsselautorisierung“ zurück.

## Tools zur Objektvalidierung
<a name="utility-helpers-in-object-validation"></a>

### Liste der Tools zur Objektvalidierung
<a name="utility-helpers-in-object-validation-list"></a>

** `$util.isString(Object) : Boolean` **  
Gibt true zurück, wenn das Objekt ein String ist.

** `$util.isNumber(Object) : Boolean` **  
Gibt „true“ zurück, wenn das Objekt eine Zahl ist.

** `$util.isBoolean(Object) : Boolean` **  
Gibt true zurück, wenn das Objekt ein boolescher Wert ist.

** `$util.isList(Object) : Boolean` **  
Gibt true zurück, wenn es sich bei dem Objekt um eine Liste handelt.

** `$util.isMap(Object) : Boolean` **  
Gibt „true“ zurück, wenn es sich bei dem Objekt um eine Map handelt.

## CloudWatch Werkzeuge für die Protokollierung
<a name="utility-helpers-in-logging"></a>

### CloudWatch Liste der Protokollierungswerkzeuge
<a name="utility-helpers-in-cloudwatch-logs"></a>

**`$util.log.info(Object) : Void`**  
Protokolliert die String-Darstellung des bereitgestellten Objekts im angeforderten Log-Stream, wenn die Protokollierung auf Anfrage- und Feldebene auf CloudWatch Protokollebene `ALL``INFO`, oder auf einer API aktiviert ist. `DEBUG`

**`$util.log.info(String, Object...) : Void`**  
Protokolliert die Zeichenkettendarstellung der bereitgestellten Objekte im angeforderten Logstream, wenn die Protokollierung auf Anfrage- und Feldebene mit CloudWatch Protokollebene auf einer API aktiviert ist. `ALL` Dieses Hilfsprogramm ersetzt alle Variablen, die im ersten Eingabeformat String mit „\$1\$1“ gekennzeichnet sind, der Reihe nach durch die String-Darstellung der bereitgestellten Objekte.

**`$util.log.debug(Object) : Void`**  
Protokolliert die String-Darstellung des bereitgestellten Objekts im angeforderten Log-Stream, wenn die Protokollierung auf Anfrage- und Feldebene auf CloudWatch Protokollebene `ALL` oder `DEBUG` auf einer API aktiviert ist.

**`$util.log.debug(String, Object...) : Void`**  
Protokolliert die String-Repräsentation der bereitgestellten Objekte im angeforderten Log-Stream, wenn die Protokollierung auf Feldebene mit Protokollebene `DEBUG` oder CloudWatch Protokollebene auf einer API aktiviert ist. `ALL` Dieses Hilfsprogramm ersetzt alle Variablen, die im ersten Eingabeformat String mit „\$1\$1“ gekennzeichnet sind, der Reihe nach durch die String-Darstellung der bereitgestellten Objekte.

**`$util.log.error(Object) : Void`**  
Protokolliert die String-Repräsentation des bereitgestellten Objekts im angeforderten Log-Stream, wenn die CloudWatch Protokollierung auf Feldebene für eine **beliebige** Protokollebene (`ALL`, `INFO``DEBUG`, usw.) auf einer API aktiviert ist.

**`$util.log.error(String, Object...) : Void`**  
Protokolliert die String-Repräsentation der bereitgestellten Objekte im angeforderten Logstream, wenn die Protokollierung auf Feldebene mit CloudWatch Protokollebene `ERROR` oder Protokollebene auf einer API aktiviert ist. `ALL` Dieses Hilfsprogramm ersetzt alle Variablen, die im ersten Eingabeformat String mit „\$1\$1“ gekennzeichnet sind, der Reihe nach durch die String-Darstellung der bereitgestellten Objekte.

## Gibt den Wert zurück, Verhalten, utils
<a name="utility-helpers-in-return-behavior"></a>

### Liste der Verhaltenswerkzeuge für den Rückgabewert
<a name="utility-helpers-in-behavior-list"></a>

****`$util.qr()`** und `$util.quiet()` **  
Führt eine VTL-Anweisung aus und unterdrückt dabei den zurückgegebenen Wert. Dies ist nützlich, um Methoden auszuführen, ohne temporäre Platzhalter zu verwenden, z. B. um Elemente zu einer Map hinzuzufügen. Beispiel:  

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

```
#set ($myMap = {})
$util.qr($myMap.put("id", "first value"))
```  
** `$util.escapeJavaScript(String) : String` **  
Gibt die Eingabezeichenfolge als JavaScript Escape-Zeichenfolge zurück.  
** `$util.urlEncode(String) : String` **  
Gibt die Eingabezeichenfolge als eine `application/x-www-form-urlencoded`-kodierte Zeichenfolge zurück.  
** `$util.urlDecode(String) : String` **  
Dekodiert eine `application/x-www-form-urlencoded`-kodierte Zeichenfolge zurück in ihre nicht kodierte Form.  
** `$util.base64Encode( byte[] ) : String` **  
Verschlüsselt die Eingabe in eine base64-kodierte Zeichenfolge.  
** `$util.base64Decode(String) : byte[]` **  
Decodiert die Daten einer base64-verschlüsselten Zeichenfolge.  
** `$util.parseJson(String) : Object` **  
Erhält das "stringify"-JSON-Objekt und gibt eine Objektdarstellung des Ergebnisses zurück.  
** `$util.toJson(Object) : String` **  
Nimmt ein Objekt und gibt eine "stringify"-JSON-Darstellung dieses Objekts zurück.  
** `$util.autoId() : String` **  
Gibt eine zufällig generierte 128-Bit-UUID zurück.  
****`$util.autoUlid() : String`****  
Gibt eine zufällig generierte 128-Bit-ULID (Universally Unique Lexicographically Sortable Identifier) zurück.  
****`$util.autoKsuid() : String`****  
Gibt eine zufällig generierte 128-Bit-KSUID (K-Sortable Unique Identifier) Base62 zurück, die als Zeichenfolge mit einer Länge von 27 codiert ist.  
** `$util.unauthorized()` **  
Gibt `Unauthorized` für das Feld aus, das aufgelöst wird. Verwenden Sie dies in Vorlagen für die Zuordnung von Anfragen oder Antworten, um zu bestimmen, ob der Anrufer das Feld auflösen kann.  
** `$util.error(String)` **  
Gibt einen benutzerdefinierte Fehler aus. Verwenden Sie dies in Vorlagen für die Zuordnung von Anfragen oder Antworten, um einen Fehler in der Anfrage oder im Aufrufergebnis zu erkennen.  
** `$util.error(String, String)` **  
Gibt einen benutzerdefinierte Fehler aus. Verwenden Sie dies in Vorlagen für die Zuordnung von Anfragen oder Antworten, um einen Fehler in der Anfrage oder im Aufrufergebnis zu erkennen. Sie können auch eine `errorType` angeben.  
** `$util.error(String, String, Object)` **  
Gibt einen benutzerdefinierte Fehler aus. Verwenden Sie dies in Vorlagen für die Zuordnung von Anfragen oder Antworten, um einen Fehler in der Anfrage oder im Aufrufergebnis zu erkennen. Sie können auch ein Feld `errorType` und ein `data` Feld angeben. Der `data`-Wert wird zum entsprechenden `error`-Block in `errors` in der GraphQL-Antwort hinzugefügt. **Hinweis**: `data` wird basierend auf dem Abfragenauswahlsatz gefiltert.  
** `$util.error(String, String, Object, Object)` **  
Gibt einen benutzerdefinierte Fehler aus. Dies kann in Anforderungs- oder Antwortzuweisungsvorlagen verwendet werden, wenn die Vorlage einen Fehler bei der Anforderung oder beim Aufrufergebnis erkennt. Außerdem können die Felder `errorType`, `data` und `errorInfo` angegeben werden. Der `data`-Wert wird zum entsprechenden `error`-Block in `errors` in der GraphQL-Antwort hinzugefügt. **Hinweis**: `data` wird basierend auf dem Abfragenauswahlsatz gefiltert. Der `errorInfo`-Wert wird zum entsprechenden `error`-Block in `errors` in der GraphQL-Antwort hinzugefügt. **Hinweis**: `errorInfo` wird **NICHT** basierend auf dem Abfragenauswahlsatz gefiltert.  
** `$util.appendError(String)` **  
Fügt einen benutzerdefinierten Fehler an. Dies kann in Anforderungs- oder Antwortzuweisungsvorlagen verwendet werden, wenn die Vorlage einen Fehler bei der Anforderung oder beim Aufrufergebnis erkennt. Im Gegensatz zu `$util.error(String)` wird die Vorlagenbewertung nicht unterbrochen, sodass die Daten an den Aufrufer zurückgegeben werden können.  
** `$util.appendError(String, String)` **  
Fügt einen benutzerdefinierten Fehler an. Dies kann in Anforderungs- oder Antwortzuweisungsvorlagen verwendet werden, wenn die Vorlage einen Fehler bei der Anforderung oder beim Aufrufergebnis erkennt. Zudem kann ein `errorType` angegeben werden. Im Gegensatz zu `$util.error(String, String)` wird die Vorlagenbewertung nicht unterbrochen, sodass die Daten an den Aufrufer zurückgegeben werden können.  
** `$util.appendError(String, String, Object)` **  
Fügt einen benutzerdefinierten Fehler an. Dies kann in Anforderungs- oder Antwortzuweisungsvorlagen verwendet werden, wenn die Vorlage einen Fehler bei der Anforderung oder beim Aufrufergebnis erkennt. Zudem können die Felder `errorType` und `data` angegeben werden. Im Gegensatz zu `$util.error(String, String, Object)` wird die Vorlagenbewertung nicht unterbrochen, sodass die Daten an den Aufrufer zurückgegeben werden können. Der `data`-Wert wird zum entsprechenden `error`-Block in `errors` in der GraphQL-Antwort hinzugefügt. **Hinweis**: `data` wird basierend auf dem Abfragenauswahlsatz gefiltert.  
** `$util.appendError(String, String, Object, Object)` **  
Fügt einen benutzerdefinierten Fehler an. Dies kann in Anforderungs- oder Antwortzuweisungsvorlagen verwendet werden, wenn die Vorlage einen Fehler bei der Anforderung oder beim Aufrufergebnis erkennt. Außerdem können die Felder `errorType`, `data` und `errorInfo` angegeben werden. Im Gegensatz zu `$util.error(String, String, Object, Object)` wird die Vorlagenbewertung nicht unterbrochen, sodass die Daten an den Aufrufer zurückgegeben werden können. Der `data`-Wert wird zum entsprechenden `error`-Block in `errors` in der GraphQL-Antwort hinzugefügt. **Hinweis**: `data` wird basierend auf dem Abfragenauswahlsatz gefiltert. Der `errorInfo`-Wert wird zum entsprechenden `error`-Block in `errors` in der GraphQL-Antwort hinzugefügt. **Hinweis**: `errorInfo` wird **NICHT** basierend auf dem Abfragenauswahlsatz gefiltert.  
** `$util.validate(Boolean, String) : void` **  
Wenn die Bedingung falsch ist, wird a CustomTemplateException mit der angegebenen Nachricht ausgelöst.  
** `$util.validate(Boolean, String, String) : void` **  
Wenn die Bedingung falsch ist, wird a CustomTemplateException mit der angegebenen Nachricht und dem angegebenen Fehlertyp ausgelöst.  
** `$util.validate(Boolean, String, String, Object) : void` **  
Wenn die Bedingung falsch ist, wird eine CustomTemplateException mit der angegebenen Meldung und dem angegebenen Fehlertyp sowie den Daten ausgelöst, die in der Antwort zurückgegeben werden sollen.  
** `$util.isNull(Object) : Boolean` **  
Gibt "true" zurück, wenn das bereitgestellte Objekt null ist.  
** `$util.isNullOrEmpty(String) : Boolean` **  
Gibt "true" zurück, wenn die bereitgestellten Daten null oder eine leere Zeichenfolge sind. Ansonsten wird "false" zurückgegeben.  
** `$util.isNullOrBlank(String) : Boolean` **  
Gibt "true" zurück, wenn die bereitgestellten Daten null oder eine leere Zeichenfolge sind. Ansonsten wird "false" zurückgegeben.  
** `$util.defaultIfNull(Object, Object) : Object` **  
Gibt das erste Objekt zurück, wenn es nicht null ist. Ansonsten wird das zweite Objekt als ein "Standardobjekt" zurückgegeben.  
** `$util.defaultIfNullOrEmpty(String, String) : String` **  
Gibt die erste Zeichenfolge zurück, wenn sie nicht null oder leer ist. Ansonsten wird die zweite Zeichenfolge als eine "Standardzeichenfolge" zurückgegeben.  
** `$util.defaultIfNullOrBlank(String, String) : String` **  
Gibt die erste Zeichenfolge zurück, wenn sie nicht null oder leer ist. Ansonsten wird die zweite Zeichenfolge als eine "Standardzeichenfolge" zurückgegeben.  
** `$util.isString(Object) : Boolean` **  
Gibt "true" zurück, wenn das Objekt eine Zeichenfolge ist.  
** `$util.isNumber(Object) : Boolean` **  
Gibt "true" zurück, wenn das Objekt eine Zahl ist.  
** `$util.isBoolean(Object) : Boolean` **  
Gibt "true" zurück, wenn das Objekt ein boolescher Wert ist.  
** `$util.isList(Object) : Boolean` **  
Gibt "true" zurück, wenn das Objekt eine Liste ist.  
** `$util.isMap(Object) : Boolean` **  
Gibt "true" zurück, wenn das Objekt eine Zuweisung ist.  
** `$util.typeOf(Object) : String` **  
Gibt eine Zeichenfolge zurück, die den Typ des Objekts beschreibt. Unterstützte Typenidentifikationen sind "null", "Zahl", "Zeichenfolge", "Zuweisung", "Liste", "boolescher Wert". Wenn ein Typ nicht identifiziert werden kann, lautet der Rückgabetyp "Objekt".  
** `$util.matches(String, String) : Boolean` **  
Gibt "true" zurück, wenn das angegebene Muster im ersten Argument den bereitgestellten Daten im zweiten Argument entspricht. Das Muster muss ein regulärer Ausdruck sein, wie z. B. `$util.matches("a*b", "aaaaab")`. Die Funktionalität basiert auf [Pattern](https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html), worauf Sie zur weiteren Dokumentation verweisen können.  
** `$util.authType() : String` **  
Gibt eine Zeichenfolge zurück, die den Multi-Auth-Typ beschreibt, der von einer Anfrage verwendet wird, und gibt entweder „IAM-Autorisierung“, „Benutzerpool-Autorisierung“, „Open ID Connect-Autorisierung“ oder „API-Schlüsselautorisierung“ zurück.  
****`$util.log.info(Object) : Void`****  
Protokolliert die String-Darstellung des bereitgestellten Objekts im angeforderten Log-Stream, wenn die Protokollierung auf Anfrage- und Feldebene auf CloudWatch Protokollebene in einer API aktiviert ist. `ALL`  
****`$util.log.info(String, Object...) : Void`****  
Protokolliert die String-Repräsentation der bereitgestellten Objekte im angeforderten Log-Stream, wenn die Protokollierung auf Anfrage- und Feldebene mit CloudWatch Protokollebene auf einer API aktiviert ist. `ALL` Dieses Hilfsprogramm ersetzt alle Variablen, die im ersten Eingabeformat String mit „\$1\$1“ gekennzeichnet sind, der Reihe nach durch die String-Darstellung der bereitgestellten Objekte.  
****`$util.log.error(Object) : Void`****  
Protokolliert die String-Repräsentation des bereitgestellten Objekts im angeforderten Log-Stream, wenn die CloudWatch Protokollierung auf Feldebene mit Log Level `ERROR` oder Log Level `ALL` auf einer API aktiviert ist.  
****`$util.log.error(String, Object...) : Void`****  
Protokolliert die Zeichenkettendarstellung der bereitgestellten Objekte im angeforderten Logstream, wenn die Protokollierung auf Feldebene mit CloudWatch Protokollebene `ERROR` oder Protokollebene auf einer API aktiviert ist. `ALL` Dieses Hilfsprogramm ersetzt alle Variablen, die im ersten Eingabeformat String mit „\$1\$1“ gekennzeichnet sind, der Reihe nach durch die String-Darstellung der bereitgestellten Objekte.

** `$util.escapeJavaScript(String) : String` **  
Gibt die Eingabezeichenfolge als JavaScript maskierte Zeichenfolge zurück.

## Autorisierung des Resolvers
<a name="utility-helpers-in-resolver-auth"></a>

### Liste der Resolver-Autorisierungen
<a name="utility-helpers-in-resolver-auth-list"></a>

** `$util.unauthorized()` **  
Gibt `Unauthorized` für das Feld aus, das aufgelöst wird. Verwenden Sie dies in Vorlagen für die Zuordnung von Anfragen oder Antworten, um zu bestimmen, ob der Anrufer das Feld auflösen kann.

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

**Anmerkung**  
Wir unterstützen jetzt hauptsächlich die APPSYNC\$1JS-Laufzeit und ihre Dokumentation. [Bitte erwägen Sie, die APPSYNC\$1JS-Laufzeit und ihre Anleitungen hier zu verwenden.](https://docs.aws.amazon.com/appsync/latest/devguide/resolver-reference-js-version.html)

AWS AppSync stellt Direktiven zur Verfügung, um die Produktivität der Entwickler beim Schreiben in VTL zu erhöhen.

## Hilfsprogramme für Direktiven
<a name="utility-helpers-in-directives"></a>

****`#return(Object)`****  
Das `#return(Object)` ermöglicht es Ihnen, vorzeitig von einer beliebigen Mapping-Vorlage zurückzukehren. `#return(Object)`entspricht dem Schlüsselwort *return* in Programmiersprachen, da es aus dem Logikblock zurückkehrt, der dem Bereich am nächsten kommt. Die Verwendung `#return(Object)` innerhalb einer Resolver-Mapping-Vorlage führt zu einer Rückgabe vom Resolver. Darüber hinaus führt die Verwendung `#return(Object)` aus einer Funktionszuordnungsvorlage zurück zur Funktion und setzt die Ausführung entweder mit der nächsten Funktion in der Pipeline oder der Resolver-Antwortzuordnungsvorlage fort.

****`#return`****  
Die `#return` Direktive zeigt dasselbe Verhalten wie`#return(Object)`, `null` wird aber stattdessen zurückgegeben.

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

**Anmerkung**  
Wir unterstützen jetzt hauptsächlich die APPSYNC\$1JS-Laufzeit und ihre Dokumentation. [Bitte erwägen Sie, die APPSYNC\$1JS-Laufzeit und ihre Anleitungen hier zu verwenden.](https://docs.aws.amazon.com/appsync/latest/devguide/resolver-reference-js-version.html)

Die `$util.time`-Variable enthält "datetime"-Methoden, um beim Generieren von Zeitstempeln, Konvertieren zwischen "datetime"-Formaten und Parsen von "datetime"-Zeichenfolgen zu helfen. Die Syntax für Datetime-Formate basiert auf dieser Syntax [DateTimeFormatter](https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html), auf die Sie sich für weitere Dokumentation beziehen können. Im Folgenden finden Sie einige Beispiele sowie eine Liste der verfügbaren Methoden und Beschreibungen.

## Zeit nützt
<a name="utility-helpers-in-time"></a>

### Liste der Zeitwerkzeuge
<a name="utility-helpers-in-time-list"></a>

** `$util.time.nowISO8601() : String` **  
Gibt eine String-Darstellung von UTC im [ISO8601Format](https://en.wikipedia.org/wiki/ISO_8601) zurück.

** `$util.time.nowEpochSeconds() : long` **  
Gibt die Anzahl der Sekunden aus der Epoche von 1970-01-01T00:00:00Z bis jetzt zurück.

** `$util.time.nowEpochMilliSeconds() : long` **  
Gibt die Anzahl der Millisekunden aus der Epoche von 1970-01-01T00:00:00Z bis jetzt zurück.

** `$util.time.nowFormatted(String) : String` **  
Gibt eine Zeichenfolge des aktuellen Zeitstempels in UTC unter Verwendung des angegebenen Formats aus einem Zeichenfolge-Eingabetyp zurück.

** `$util.time.nowFormatted(String, String) : String` **  
Gibt eine Zeichenfolge des aktuellen Zeitstempels aus einer Zeitzone unter Verwendung des angegebenen Formats und der Zeitzone aus Zeichenfolge-Eingabetypen zurück.

** `$util.time.parseFormattedToEpochMilliSeconds(String, String) : Long` **  
Analysiert einen als String übergebenen Zeitstempel zusammen mit einem Format, das eine Zeitzone enthält, und gibt dann den Zeitstempel in Millisekunden seit der Epoche zurück.

** `$util.time.parseFormattedToEpochMilliSeconds(String, String, String) : Long` **  
Analysiert einen als String übergebenen Zeitstempel zusammen mit einem Format und einer Zeitzone und gibt dann den Zeitstempel in Millisekunden seit der Epoche zurück.

** `$util.time.parseISO8601ToEpochMilliSeconds(String) : Long` **  
Analysiert einen als String übergebenen Zeitstempel und gibt dann den ISO8601 Zeitstempel in Millisekunden seit der Epoche zurück.

** `$util.time.epochMilliSecondsToSeconds(long) : long` **  
Konvertiert einen Epoche-Millisekunden-Zeitstempel in einen Epoche-Sekunden-Zeitstempel.

** `$util.time.epochMilliSecondsToISO8601(long) : String` **  
Konvertiert einen Millisekunden-Zeitstempel einer Epoche in einen Zeitstempel. ISO8601

** `$util.time.epochMilliSecondsToFormatted(long, String) : String` **  
Konvertiert einen Epochen-Millisekunden-Zeitstempel, der als long übergeben wurde, in einen Zeitstempel, der gemäß dem angegebenen Format in UTC formatiert ist.

** `$util.time.epochMilliSecondsToFormatted(long, String, String) : String` **  
Konvertiert einen Epochen-Millisekunden-Zeitstempel, der als Long übergeben wurde, in einen Zeitstempel, der gemäß dem angegebenen Format in der angegebenen Zeitzone formatiert ist.

## Beispiele für eigenständige Funktionen
<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
```

## Beispiele für Konvertierungen
<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
```

## Beispiele für das Parsen
<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
```

## Verwendung mit AWS AppSync definierten Skalaren
<a name="usage-with-aws-scalars"></a>

Die folgenden Formate sind mit `AWSDate`, `AWSDateTime` und `AWSTime` kompatibel.

```
$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
```

# Listet Helfer in \$1util.list auf
<a name="list-helpers-in-util-list"></a>

**Anmerkung**  
Wir unterstützen jetzt hauptsächlich die APPSYNC\$1JS-Laufzeit und ihre Dokumentation. [Bitte erwägen Sie, die APPSYNC\$1JS-Laufzeit und ihre Anleitungen hier zu verwenden.](https://docs.aws.amazon.com/appsync/latest/devguide/resolver-reference-js-version.html)

`$util.list`enthält Methoden zur Unterstützung gängiger Listenoperationen wie dem Entfernen oder Beibehalten von Elementen aus einer Liste zum Filtern von Anwendungsfällen.

## Dienstprogramme auflisten
<a name="utility-helpers-in-list-utils"></a>

** `$util.list.copyAndRetainAll(List, List) : List` **  
Erstellt eine oberflächliche Kopie der angegebenen Liste im ersten Argument, wobei nur die im zweiten Argument angegebenen Elemente beibehalten werden, sofern sie vorhanden sind. Alle anderen Elemente werden aus der Kopie entfernt.

** `$util.list.copyAndRemoveAll(List, List) : List` **  
Erstellt eine oberflächliche Kopie der angegebenen Liste im ersten Argument und entfernt alle Elemente, für die das Element im zweiten Argument angegeben ist, sofern sie vorhanden sind. Alle anderen Elemente werden in der Kopie beibehalten.

** `$util.list.sortList(List, Boolean, String) : List` **  
Sortiert eine Liste von Objekten, die im ersten Argument bereitgestellt wird. Wenn das zweite Argument wahr ist, wird die Liste absteigend sortiert. Wenn das zweite Argument falsch ist, wird die Liste aufsteigend sortiert. Das dritte Argument ist der Zeichenfolgenname der Eigenschaft, die zum Sortieren einer Liste von benutzerdefinierten Objekten verwendet wird. Wenn es sich um eine Liste handelt, die nur aus Strings, Integers, Floats oder Doubles besteht, kann das dritte Argument eine beliebige beliebige Zeichenfolge sein. Wenn nicht alle Objekte aus derselben Klasse stammen, wird die ursprüngliche Liste zurückgegeben. Es werden nur Listen mit maximal 1000 Objekten unterstützt. Im Folgenden finden Sie ein Beispiel für die Verwendung dieses Dienstprogramms:   

```
 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}]
```

# Ordnen Sie Helfer in \$1util.map zu
<a name="utility-helpers-in-map"></a>

**Anmerkung**  
Wir unterstützen jetzt hauptsächlich die APPSYNC\$1JS-Laufzeit und ihre Dokumentation. [Bitte erwägen Sie, die APPSYNC\$1JS-Laufzeit und ihre Anleitungen hier zu verwenden.](https://docs.aws.amazon.com/appsync/latest/devguide/resolver-reference-js-version.html)

 `$util.map`enthält Methoden zur Unterstützung gängiger Map-Operationen wie dem Entfernen oder Beibehalten von Elementen aus einer Map zum Filtern von Anwendungsfällen.

## Hilfsprogramme für Karten
<a name="utility-helpers-in-map-list"></a>

** `$util.map.copyAndRetainAllKeys(Map, List) : Map` **  
Erstellt eine flache Kopie der ersten Map und behält dabei nur die in der Liste angegebenen Schlüssel bei, sofern sie vorhanden sind. Alle anderen Schlüssel werden aus der Kopie entfernt.

** `$util.map.copyAndRemoveAllKeys(Map, List) : Map` **  
Erstellt eine flache Kopie der ersten Map und entfernt dabei alle Einträge, in denen der Schlüssel in der Liste angegeben ist, sofern sie vorhanden sind. Alle anderen Schlüssel werden in der Kopie beibehalten.

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

**Anmerkung**  
Wir unterstützen jetzt hauptsächlich die APPSYNC\$1JS-Laufzeit und ihre Dokumentation. [Bitte erwägen Sie, die APPSYNC\$1JS-Laufzeit und ihre Anleitungen hier zu verwenden.](https://docs.aws.amazon.com/appsync/latest/devguide/resolver-reference-js-version.html)

`$util.dynamodb`enthält Hilfsmethoden, die das Schreiben und Lesen von Daten in Amazon DynamoDB erleichtern, z. B. automatische Typzuweisung und Formatierung. Diese Methoden sind so konzipiert, dass primitive Typen und Listen automatisch dem richtigen DynamoDB-Eingabeformat zugeordnet werden, das Teil `Map` des Formats ist. `{ "TYPE" : VALUE }`

Bisher könnte eine Vorlage für die Anforderungszuweisung zum Erstellen eines neuen Elements in DynamoDB beispielsweise so ausgesehen haben:

```
{
    "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) }
    }
}
```

Wenn wir Felder zum Objekt hinzufügen wollten, hätten wir die GraphQL-Abfrage im Schema und die Zuweisungsvorlage für Anforderungen aktualisieren müssen. Wir können jetzt jedoch unsere Vorlage für die Anforderungszuweisung so umstrukturieren, dass sie automatisch neue Felder aufnimmt, die in unserem Schema hinzugefügt wurden, und sie DynamoDB mit den richtigen Typen hinzufügt:

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

Im vorherigen Beispiel verwenden wir den `$util.dynamodb.toDynamoDBJson(...)` Helper, um die generierte ID automatisch in die DynamoDB-Darstellung eines String-Attributs zu konvertieren. Wir nehmen dann alle Argumente und konvertieren sie in ihre DynamoDB-Repräsentationen und geben sie in das `attributeValues` Feld in der Vorlage aus.

Jedes Helferobjekt hat zwei Versionen: eine Version, die ein Objekt zurückgibt (z. B. `$util.dynamodb.toString(...)`), und eine Version, die das Objekt als JSON-Zeichenfolge zurückgibt (z. B. `$util.dynamodb.toStringJson(...)`). Im vorherigen Beispiel haben wir die Version verwendet, die die Daten als JSON-Zeichenfolge zurückgibt. Wenn Sie das Objekt ändern möchten, bevor es in der Vorlage verwendet wird, können Sie stattdessen folgendermaßen ein Objekt zurückgeben:

```
{
    "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)
}
```

Im vorherigen Beispiel geben wir die konvertierten Argumente als eine Zuweisung anstatt als eine JSON-Zeichenfolge zurück. Dann fügen wir die Felder `version` und `timestamp` hinzu, bevor wir sie schließlich an das Feld `attributeValues` in der Vorlage unter Verwendung von `$util.toJson(...)` ausgeben.

Die JSON-Version der einzelnen Helferobjekte entspricht der Umhüllung der Nicht-JSON-Version in `$util.toJson(...)`. Die folgenden Aussagen sind beispielsweise identisch:

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

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

### Liste der ToDynamoDB-Dienstprogramme
<a name="utility-helpers-in-toDynamoDB-list"></a>

** `$util.dynamodb.toDynamoDB(Object) : Map` **  
Allgemeines Objektkonvertierungstool für DynamoDB, das Eingabeobjekte in die entsprechende DynamoDB-Darstellung konvertiert. Es ist vorbestimmt, wie einige Typen dargestellt werden: z. B. werden Listen ("L") anstelle von Sätzen ("SS", "NS", "BS") verwendet. Dies gibt ein Objekt zurück, das den DynamoDB-Attributwert beschreibt.  
**Beispiel für eine Zeichenfolge**  

```
Input:      $util.dynamodb.toDynamoDB("foo")
Output:     { "S" : "foo" }
```
**Beispiel für eine Zahl**  

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

```
Input:      $util.dynamodb.toDynamoDB(true)
Output:     { "BOOL" : true }
```
**Beispiel auflisten**  

```
Input:      $util.dynamodb.toDynamoDB([ "foo", 123, { "bar" : "baz" } ])
Output:     {
               "L" : [
                   { "S" : "foo" },
                   { "N" : 123 },
                   {
                       "M" : {
                           "bar" : { "S" : "baz" }
                       }
                   }
               ]
           }
```
**Beispiel für eine Karte**  

```
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`** **  
Entspricht`$util.dynamodb.toDynamoDB(Object) : Map`, gibt aber den DynamoDB-Attributwert als JSON-kodierte Zeichenfolge zurück.

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

### Liste der ToString-Dienstprogramme
<a name="utility-helpers-in-toString-list"></a>

****`$util.dynamodb.toString(String) : String`** **  
Konvertiert eine Eingabezeichenfolge in das DynamoDB-Zeichenkettenformat. Dies gibt ein Objekt zurück, das den DynamoDB-Attributwert beschreibt.  

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

** `$util.dynamodb.toStringJson(String) : Map` **  
Entspricht`$util.dynamodb.toString(String) : String`, gibt aber den DynamoDB-Attributwert als JSON-kodierte Zeichenfolge zurück.

** `$util.dynamodb.toStringSet(List<String>) : Map` **  
Konvertiert eine Liste mit Strings in das DynamoDB-Zeichenkettensatzformat. Dies gibt ein Objekt zurück, das den DynamoDB-Attributwert beschreibt.  

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

** `$util.dynamodb.toStringSetJson(List<String>) : String` **  
Entspricht`$util.dynamodb.toStringSet(List<String>) : Map`, gibt aber den DynamoDB-Attributwert als JSON-kodierte Zeichenfolge zurück.

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

### Liste der ToNumber-Dienstprogramme
<a name="utility-helpers-in-toNumber-list"></a>

** `$util.dynamodb.toNumber(Number) : Map` **  
Konvertiert eine Zahl in das DynamoDB-Zahlenformat. Dies gibt ein Objekt zurück, das den DynamoDB-Attributwert beschreibt.  

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

** `$util.dynamodb.toNumberJson(Number) : String` **  
Entspricht`$util.dynamodb.toNumber(Number) : Map`, gibt aber den DynamoDB-Attributwert als JSON-kodierte Zeichenfolge zurück.

** `$util.dynamodb.toNumberSet(List<Number>) : Map` **  
Konvertiert eine Liste von Zahlen in das DynamoDB-Nummernsatzformat. Dies gibt ein Objekt zurück, das den DynamoDB-Attributwert beschreibt.  

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

** `$util.dynamodb.toNumberSetJson(List<Number>) : String` **  
Entspricht`$util.dynamodb.toNumberSet(List<Number>) : Map`, gibt aber den DynamoDB-Attributwert als JSON-kodierte Zeichenfolge zurück.

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

### Liste der ToBinary-Dienstprogramme
<a name="utility-helpers-in-toBinary-list"></a>

** `$util.dynamodb.toBinary(String) : Map` **  
Konvertiert als Base64-Zeichenfolge kodierte Binärdaten in das DynamoDB-Binärformat. Dies gibt ein Objekt zurück, das den DynamoDB-Attributwert beschreibt.  

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

** `$util.dynamodb.toBinaryJson(String) : String` **  
Entspricht`$util.dynamodb.toBinary(String) : Map`, gibt aber den DynamoDB-Attributwert als JSON-kodierte Zeichenfolge zurück.

** `$util.dynamodb.toBinarySet(List<String>) : Map` **  
Konvertiert eine Liste von Binärdaten, die als Base64-Zeichenketten kodiert sind, in das DynamoDB-Binärsatzformat. Dies gibt ein Objekt zurück, das den DynamoDB-Attributwert beschreibt.  

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

** `$util.dynamodb.toBinarySetJson(List<String>) : String` **  
Entspricht`$util.dynamodb.toBinarySet(List<String>) : Map`, gibt aber den DynamoDB-Attributwert als JSON-kodierte Zeichenfolge zurück.

## ToBoolesche Hilfsprogramme
<a name="utility-helpers-in-toBoolean"></a>

### Liste der toBooleschen Dienstprogramme
<a name="utility-helpers-in-toBoolean-list"></a>

** `$util.dynamodb.toBoolean(Boolean) : Map` **  
Konvertiert einen booleschen Wert in das entsprechende boolesche DynamoDB-Format. Dies gibt ein Objekt zurück, das den DynamoDB-Attributwert beschreibt.  

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

** `$util.dynamodb.toBooleanJson(Boolean) : String` **  
Entspricht`$util.dynamodb.toBoolean(Boolean) : Map`, gibt aber den DynamoDB-Attributwert als JSON-kodierte Zeichenfolge zurück.

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

### ToNull-Utils-Liste
<a name="utility-helpers-in-toNull-list"></a>

** `$util.dynamodb.toNull() : Map` **  
Gibt eine Null im DynamoDB-Null-Format zurück. Dies gibt ein Objekt zurück, das den DynamoDB-Attributwert beschreibt.  

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

** `$util.dynamodb.toNullJson() : String` **  
Entspricht`$util.dynamodb.toNull() : Map`, gibt aber den DynamoDB-Attributwert als JSON-kodierte Zeichenfolge zurück.

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

### Liste der ToList-Dienstprogramme
<a name="utility-helpers-in-toList-list"></a>

****`$util.dynamodb.toList(List) : Map`** **  
Konvertiert eine Liste von Objekten in das DynamoDB-Listenformat. Jedes Element in der Liste wird auch in das entsprechende DynamoDB-Format konvertiert. Es ist vorbestimmt, wie einige verschachtelte Objekte dargestellt werden: z. B. werden Listen ("L") anstelle von Sätzen ("SS", "NS", "BS") verwendet. Dies gibt ein Objekt zurück, das den DynamoDB-Attributwert beschreibt.  

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

** `$util.dynamodb.toListJson(List) : String` **  
Entspricht`$util.dynamodb.toList(List) : Map`, gibt aber den DynamoDB-Attributwert als JSON-kodierte Zeichenfolge zurück.

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

### Liste der ToMap-Dienstprogramme
<a name="utility-helpers-in-toMap-list"></a>

** `$util.dynamodb.toMap(Map) : Map` **  
Konvertiert eine Map in das DynamoDB-Kartenformat. Jeder Wert in der Map wird ebenfalls in das entsprechende DynamoDB-Format konvertiert. Es ist vorbestimmt, wie einige verschachtelte Objekte dargestellt werden: z. B. werden Listen ("L") anstelle von Sätzen ("SS", "NS", "BS") verwendet. Dies gibt ein Objekt zurück, das den DynamoDB-Attributwert beschreibt.  

```
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` **  
Entspricht`$util.dynamodb.toMap(Map) : Map`, gibt aber den DynamoDB-Attributwert als JSON-kodierte Zeichenfolge zurück.

** `$util.dynamodb.toMapValues(Map) : Map` **  
Erstellt eine Kopie der Map, in der jeder Wert in das entsprechende DynamoDB-Format konvertiert wurde. Es ist vorbestimmt, wie einige verschachtelte Objekte dargestellt werden: z. B. werden Listen ("L") anstelle von Sätzen ("SS", "NS", "BS") verwendet.  

```
Input:      $util.dynamodb.toMapValues({ "foo": "bar", "baz" : 1234, "beep": [ "boop"] })
Output:     {
               "foo"  : { "S" : "bar" },
               "baz"  : { "N" : 1234 },
               "beep" : {
                   "L" : [
                       { "S" : "boop" }
                   ]
               }
           }
```
Dies unterscheidet sich `$util.dynamodb.toMap(Map) : Map` geringfügig davon, dass nur der Inhalt des DynamoDB-Attributwerts zurückgegeben wird, nicht jedoch der gesamte Attributwert selbst. Die folgenden Aussagen sind beispielsweise identisch:  

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

** `$util.dynamodb.toMapValuesJson(Map) : String` **  
Entspricht`$util.dynamodb.toMapValues(Map) : Map`, gibt aber den DynamoDB-Attributwert als JSON-kodierte Zeichenfolge zurück.

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

### Liste der S3Object-Dienstprogramme
<a name="utility-helpers-in-S3Object-list"></a>

** `$util.dynamodb.toS3Object(String key, String bucket, String region) : Map` **  
Konvertiert den Schlüssel, den Bucket und die Region in die DynamoDB S3-Objektdarstellung. Dies gibt ein Objekt zurück, das den DynamoDB-Attributwert beschreibt.  

```
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` **  
Entspricht`$util.dynamodb.toS3Object(String key, String bucket, String region) : Map`, gibt aber den DynamoDB-Attributwert als JSON-kodierte Zeichenfolge zurück.

** `$util.dynamodb.toS3Object(String key, String bucket, String region, String version) : Map` **  
Konvertiert den Schlüssel, den Bucket, die Region und die optionale Version in die DynamoDB S3-Objektdarstellung. Dies gibt ein Objekt zurück, das den DynamoDB-Attributwert beschreibt.  

```
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` **  
Entspricht`$util.dynamodb.toS3Object(String key, String bucket, String region, String version) : Map`, gibt aber den DynamoDB-Attributwert als JSON-kodierte Zeichenfolge zurück.

** `$util.dynamodb.fromS3ObjectJson(String) : Map` **  
Akzeptiert den Zeichenkettenwert eines DynamoDB S3-Objekts und gibt eine Map zurück, die den Schlüssel, den Bucket, die Region und die optionale Version enthält.  

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

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

**Anmerkung**  
Wir unterstützen jetzt hauptsächlich die APPSYNC\$1JS-Laufzeit und ihre Dokumentation. [Bitte erwägen Sie, die APPSYNC\$1JS-Laufzeit und ihre Anleitungen hier zu verwenden.](https://docs.aws.amazon.com/appsync/latest/devguide/resolver-reference-js-version.html)

`$util.rds`enthält Hilfsmethoden, die Amazon RDS-Operationen formatieren, indem sie überflüssige Daten in Ergebnisausgaben entfernen.

## Liste der \$1util.rds-Dienstprogramme
<a name="rds-helpers-in-util-rds-list"></a>

****`$util.rds.toJsonString(String serializedSQLResult): String`****  
Gibt a zurück, `String` indem das stringifizierte Rohergebnisformat des Amazon Relational Database Service (Amazon RDS) -Daten-API-Vorgangs in eine präzisere Zeichenfolge umgewandelt wird. Die zurückgegebene Zeichenfolge ist eine serialisierte Liste von SQL-Datensätzen der Ergebnismenge. Jeder Datensatz wird als eine Sammlung von Schlüssel-Wert-Paaren dargestellt. Die Schlüssel sind die zugehörigen Spaltennamen.  
Wenn die entsprechende Anweisung in der Eingabe eine SQL-Abfrage war, die eine Mutation verursacht (zum Beispiel INSERT, UPDATE, DELETE), wird eine leere Liste zurückgegeben. Die Abfrage `select * from Books limit 2` liefert beispielsweise das Rohergebnis der Amazon RDS-Datenoperation:  

```
{
    "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"
                }
            ]
        }
    ]
}
```
Das `util.rds.toJsonString` ist:  

```
[
  {
    "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`****  
Das ist dasselbe wie`util.rds.toJsonString`, aber das Ergebnis ist ein JSON`Object`.

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

**Anmerkung**  
Wir unterstützen jetzt hauptsächlich die APPSYNC\$1JS-Laufzeit und ihre Dokumentation. [Bitte erwägen Sie, die APPSYNC\$1JS-Laufzeit und ihre Anleitungen hier zu verwenden.](https://docs.aws.amazon.com/appsync/latest/devguide/resolver-reference-js-version.html)

Das `$util.http` Hilfsprogramm bietet Hilfsmethoden, mit denen Sie HTTP-Anforderungsparameter verwalten und Antwortheader hinzufügen können.

## Liste der \$1util.http-Dienstprogramme
<a name="http-helpers-in-utils-http-list"></a>

** `$util.http.copyHeaders(Map) : Map` **  
Kopiert die Header aus der Map, mit Ausnahme der folgenden eingeschränkten HTTP-Header:  
+ transfer-encoding
+ connection
+ host
+ expect
+ keep-alive
+ upgrade
+ proxy-authenticate
+ proxy-authorization
+ te
+ content-length
Sie können dieses Hilfsprogramm verwenden, um Anforderungsheader an Ihren Downstream-HTTP-Endpunkt weiterzuleiten.  

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

**\$1util.http. addResponseHeader(Zeichenfolge, Objekt)**  
Fügt einen einzelnen benutzerdefinierten Header mit dem Namen (`String`) und dem Wert (`Object`) der Antwort hinzu. Die folgenden Einschränkungen gelten:  
+ Zusätzlich zur Liste der eingeschränkten Header für `copyHeaders(Map)` dürfen Header-Namen keinem der folgenden Werte entsprechen:
  + 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
+ Headernamen dürfen nicht mit den eingeschränkten Präfixen `x-amzn-` oder beginnen. `x-amz-`
+ Die Größe der benutzerdefinierten Antwort-Header darf 4 KB nicht überschreiten. Dies schließt Header-Namen und -Werte ein.
+ Sie sollten jeden Antwortheader einmal pro GraphQL-Operation definieren. Wenn Sie jedoch mehrmals einen benutzerdefinierten Header mit demselben Namen definieren, erscheint die neueste Definition in der Antwort. Alle Header werden unabhängig von der Benennung auf die Größenbeschränkung für Header angerechnet.
+ Header mit einem leeren oder eingeschränkten Namen `(String)` oder einem Nullwert `(Object)` werden ignoriert und führen zu einem `ResponseHeaderError` Fehler, der zur Ausgabe des `errors` Vorgangs hinzugefügt wird.

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

****`$util.http.addResponseHeaders(Map)`****  
Fügt der Antwort mehrere Antwort-Header aus der angegebenen Zuordnung von Namen `(String)` und Werten hinzu. `(Object)` Dieselben Einschränkungen, die für die `addResponseHeader(String, Object)` Methode aufgeführt sind, gelten auch für diese Methode.  

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

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

**Anmerkung**  
Wir unterstützen jetzt hauptsächlich die APPSYNC\$1JS-Laufzeit und ihre Dokumentation. [Bitte erwägen Sie, die APPSYNC\$1JS-Laufzeit und ihre Anleitungen hier zu verwenden.](https://docs.aws.amazon.com/appsync/latest/devguide/resolver-reference-js-version.html)

`$util.xml`enthält Hilfsmethoden, die es einfacher machen können, XML-Antworten in JSON oder ein Dictionary zu übersetzen.

## Liste der \$1util.xml-Dienstprogramme
<a name="xml-helpers-in-utils-xml-list"></a>

****`$util.xml.toMap(String) : Map`****  
Konvertiert eine XML-Zeichenfolge in ein Dictionary.  

```
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`****  
Konvertiert eine XML-Zeichenfolge in eine JSON-Zeichenfolge. Dies ist ähnlich wie *ToMap*, außer dass die Ausgabe eine Zeichenfolge ist. Dies ist nützlich, wenn Sie direkt umwandeln und die XML-Antwort aus einem HTTP-Objekt an JSON zurückgeben.

****`$util.xml.toJsonString(String, Boolean) : String`****  
Konvertiert eine XML-Zeichenfolge in eine JSON-Zeichenfolge mit einem optionalen booleschen Parameter, um zu bestimmen, ob Sie die JSON-Zeichenfolge als Zeichenfolge kodieren möchten.

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

**Anmerkung**  
Wir unterstützen jetzt hauptsächlich die APPSYNC\$1JS-Laufzeit und ihre Dokumentation. [Bitte erwägen Sie, die APPSYNC\$1JS-Laufzeit und ihre Anleitungen hier zu verwenden.](https://docs.aws.amazon.com/appsync/latest/devguide/resolver-reference-js-version.html)

`$util.transform`enthält Hilfsmethoden, die es einfacher machen, komplexe Operationen mit Datenquellen durchzuführen, wie z. B. Amazon DynamoDB DynamoDB-Filteroperationen.

## Helfer bei der Transformation
<a name="transformation-helpers-conversions"></a>

### Liste der Hilfsprogramme für Transformationshelfer
<a name="transformation-helpers-in-utils-transform-list"></a>

****`$util.transform.toDynamoDBFilterExpression(Map) : Map`****  
Konvertiert eine Eingabezeichenfolge in einen Filterausdruck zur Verwendung mit 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`****  
Konvertiert die angegebene Eingabe in den entsprechenden OpenSearch Query-DSL-Ausdruck und gibt sie als JSON-Zeichenfolge zurück.  

```
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"
                    }
                  }
              ]
            }
          }
      ]
    }
}
```
Es wird davon ausgegangen, dass der Standardoperator AND ist.

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

### Liste der Dienstprogramme für Abonnementfilter für Transformationshelfer
<a name="transformation-helpers-in-utils-transform-list"></a>

****`$util.transform.toSubscriptionFilter(Map) : Map`****  
Konvertiert ein `Map` Eingabeobjekt in ein `SubscriptionFilter` Ausdrucksobjekt. Die `$util.transform.toSubscriptionFilter` Methode wird als Eingabe für die `$extensions.setSubscriptionFilter()` Erweiterung verwendet. Weitere Informationen finden Sie unter [Erweiterungen](https://docs.aws.amazon.com/appsync/latest/devguide/extensions).

****`$util.transform.toSubscriptionFilter(Map, List) : Map`****  
Konvertiert ein `Map` Eingabeobjekt in ein `SubscriptionFilter` Ausdrucksobjekt. Die `$util.transform.toSubscriptionFilter` Methode wird als Eingabe für die `$extensions.setSubscriptionFilter()` Erweiterung verwendet. Weitere Informationen finden Sie unter [Erweiterungen](https://docs.aws.amazon.com/appsync/latest/devguide/extensions).  
Das erste Argument ist das `Map` Eingabeobjekt, das in das `SubscriptionFilter` Ausdrucksobjekt konvertiert wurde. Das zweite Argument besteht `List` aus Feldnamen, die im ersten `Map` Eingabeobjekt bei der Konstruktion des `SubscriptionFilter` Ausdrucksobjekts ignoriert werden.

****`$util.transform.toSubscriptionFilter(Map, List, Map) : Map`****  
Konvertiert ein `Map` Eingabeobjekt in ein `SubscriptionFilter` Ausdrucksobjekt. Die `$util.transform.toSubscriptionFilter` Methode wird als Eingabe für die `$extensions.setSubscriptionFilter()` Erweiterung verwendet. Weitere Informationen finden Sie unter [Erweiterungen](https://docs.aws.amazon.com/appsync/latest/devguide/extensions).   
Das erste Argument ist das `Map` Eingabeobjekt, das in das `SubscriptionFilter` Ausdrucksobjekt konvertiert wurde, das zweite Argument enthält Feldnamen, die im ersten `Map` Eingabeobjekt ignoriert werden, und das dritte Argument ist ein `Map` Eingabeobjekt mit strengen Regeln, das bei der Konstruktion des `SubscriptionFilter` Ausdrucksobjekts berücksichtigt wird. `List` Diese strengen Regeln sind so im `SubscriptionFilter` Ausdrucksobjekt enthalten, dass mindestens eine der Regeln erfüllt ist, um den Abonnementfilter zu bestehen.

## Argumente für den Abonnementfilter
<a name="subscription-filter-arguments"></a>

In der folgenden Tabelle wird erklärt, wie die Argumente der folgenden Dienstprogramme definiert sind:
+ `$util.transform.toSubscriptionFilter(Map) : Map`
+ `$util.transform.toSubscriptionFilter(Map, List) : Map`
+ `$util.transform.toSubscriptionFilter(Map, List, Map) : Map`

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

Argument 1 ist ein `Map` Objekt mit den folgenden Schlüsselwerten:
+ Feldnamen
+ „und“
+ „oder“

Bei Feldnamen als Schlüssel haben die Bedingungen für die Einträge dieser Felder die Form von`"operator" : "value"`. 

Das folgende Beispiel zeigt, wie Einträge hinzugefügt werden können: `Map`

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

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

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

Wenn ein Feld zwei oder mehr Bedingungen enthält, wird davon ausgegangen, dass alle diese Bedingungen die OR-Operation verwenden.

Die Eingabe `Map` kann auch „und“ und „oder“ als Schlüssel enthalten, was bedeutet, dass alle darin enthaltenen Einträge je nach Schlüssel mit DER UND- oder OR-Logik verknüpft werden sollten. Die Schlüsselwerte „und“ und „oder“ erwarten eine Reihe von Bedingungen.

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

Beachten Sie, dass Sie „und“ und „oder“ verschachteln können. Das heißt, Sie können „und“ /"oder“ innerhalb eines anderen „und“ /"oder“ -Blocks verschachtelt haben. Dies funktioniert jedoch nicht für einfache Felder.

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

Das folgende Beispiel zeigt eine Eingabe von *Argument 1* mit`$util.transform.toSubscriptionFilter(Map) : Map`.

**Eingabe (en)**

Argument 1: Karte:

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

**Ausgabe**

Das Ergebnis ist ein `Map` Objekt:

```
{
  "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 ]

Argument 2 enthält eine Reihe `List` von Feldnamen, die bei der Erstellung des `SubscriptionFilter` Ausdrucksobjekts nicht in der Eingabe `Map` (Argument 1) berücksichtigt werden sollten. Das `List` kann auch leer sein.

Das folgende Beispiel zeigt die Eingaben von Argument 1 und Argument 2 mit`$util.transform.toSubscriptionFilter(Map, List) : Map`.

**Eingabe (en)**

Argument 1: Karte:

```
{

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

Argument 2: Liste:

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

**Ausgabe**

Das Ergebnis ist ein `Map` Objekt:

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

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

Argument 3 ist ein `Map` Objekt, das Feldnamen als Schlüsselwerte hat (darf nicht „und“ oder „oder“ enthalten). Bei Feldnamen als Schlüssel handelt es sich bei den Bedingungen für diese Felder um Einträge in der Form von`"operator" : "value"`. Im Gegensatz zu Argument 1 kann Argument 3 nicht mehrere Bedingungen in demselben Schlüssel haben. Darüber hinaus hat Argument 3 keine „Und“ - oder „Oder“ -Klausel, sodass auch keine Verschachtelung erforderlich ist.

Argument 3 stellt eine Liste strenger Regeln dar, die dem `SubscriptionFilter` Ausdrucksobjekt hinzugefügt werden, sodass **mindestens eine** dieser Bedingungen erfüllt ist, um den Filter zu bestehen.

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

Das folgende Beispiel zeigt die Eingaben von *Argument 1*, *Argument 2* und *Argument 3* mit`$util.transform.toSubscriptionFilter(Map, List, Map) : Map`.

**Eingabe (en)**

Argument 1: Karte:

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

Argument 2: Liste:

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

Argument 3: Karte:

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

**Ausgabe**

Das Ergebnis ist ein `Map` Objekt:

```
{
  "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"
        }
      ]
    }
  ]
}
```

------

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

**Anmerkung**  
Wir unterstützen jetzt hauptsächlich die APPSYNC\$1JS-Laufzeit und ihre Dokumentation. [Bitte erwägen Sie, die APPSYNC\$1JS-Laufzeit und ihre Anleitungen hier zu verwenden.](https://docs.aws.amazon.com/appsync/latest/devguide/resolver-reference-js-version.html)

 `$util.math`enthält Methoden zur Unterstützung gängiger mathematischer Operationen. 

## Liste der \$1util.math-Dienstprogramme
<a name="math-helpers-in-util-math-list"></a>

** `$util.math.roundNum(Double) : Integer` **  
Nimmt einen doppelten Wert und rundet ihn auf die nächste Ganzzahl. 

** `$util.math.minVal(Double, Double) : Double` **  
Nimmt zwei Doppelungen und gibt den Mindestwert zwischen den beiden Doppelgängern zurück.

** `$util.math.maxVal(Double, Double) : Double` **  
Nimmt zwei Doubles und gibt den Maximalwert zwischen den beiden Doubles zurück.

** `$util.math.randomDouble() : Double` **  
Gibt einen zufälligen Doppelwert zwischen 0 und 1 zurück.  
Diese Funktion sollte nicht für Dinge verwendet werden, die eine Zufälligkeit mit hoher Entropie erfordern (z. B. Kryptografie).

** `$util.math.randomWithinRange(Integer, Integer) : Integer` **  
Gibt einen zufälligen Ganzzahlwert innerhalb des angegebenen Bereichs zurück, wobei das erste Argument den unteren Wert des Bereichs und das zweite Argument den oberen Wert des Bereichs angibt.   
Diese Funktion sollte nicht für Anwendungen verwendet werden, die eine hohe Zufälligkeit der Entropie erfordern (z. B. Kryptografie).

# Zeichenketten-Helfer in \$1util.str
<a name="str-helpers-in-util-str"></a>

**Anmerkung**  
Wir unterstützen jetzt hauptsächlich die APPSYNC\$1JS-Laufzeit und ihre Dokumentation. [Bitte erwägen Sie, die APPSYNC\$1JS-Laufzeit und ihre Anleitungen hier zu verwenden.](https://docs.aws.amazon.com/appsync/latest/devguide/resolver-reference-js-version.html)

 `$util.str`enthält Methoden zur Unterstützung gängiger Zeichenkettenoperationen. 

## Liste der \$1util.str Dienstprogramme
<a name="str-helpers-in-util-str-list"></a>

** `$util.str.toUpper(String) : String` **  
Nimmt eine Zeichenfolge und wandelt sie vollständig in Großbuchstaben um. 

** `$util.str.toLower(String) : String` **  
Nimmt eine Zeichenfolge und wandelt sie vollständig in Kleinbuchstaben um.

** `$util.str.toReplace(String, String, String) : String` **  
Ersetzt eine Teilzeichenfolge innerhalb einer Zeichenfolge durch eine andere Zeichenfolge. Das erste Argument gibt die Zeichenfolge an, für die der Ersetzungsvorgang ausgeführt werden soll. Das zweite Argument gibt die Teilzeichenfolge an, die ersetzt werden soll. Das dritte Argument gibt die Zeichenfolge an, durch die das zweite Argument ersetzt werden soll. Im Folgenden finden Sie ein Beispiel für die Verwendung dieses Dienstprogramms:   

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

** `$util.str.normalize(String, String) : String` **  
Normalisiert eine Zeichenfolge mit einer der vier Unicode-Normalisierungsformen: NFC, NFD, NFKC oder NFKD. Das erste Argument ist die zu normalisierende Zeichenfolge. Das zweite Argument ist entweder „nfc“, „nfd“, „nfkc“ oder „nfkd“ und gibt den Normalisierungstyp an, der für den Normalisierungsprozess verwendet werden soll.

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

**Anmerkung**  
Wir unterstützen jetzt hauptsächlich die APPSYNC\$1JS-Laufzeit und ihre Dokumentation. [Bitte erwägen Sie, die APPSYNC\$1JS-Laufzeit und ihre Anleitungen hier zu verwenden.](https://docs.aws.amazon.com/appsync/latest/devguide/resolver-reference-js-version.html)

`$extensions`enthält eine Reihe von Methoden, mit denen Sie zusätzliche Aktionen in Ihren Resolvern ausführen können.

## Erweiterungen zwischenspeichern
<a name="caching-extensions-list"></a>

**`$extensions.evictFromApiCache(String, String, Object) : Object`**  
Löscht ein Element aus dem serverseitigen AWS AppSync Cache. Das erste Argument ist der Typname. Das zweite Argument ist der Feldname. Das dritte Argument ist ein Objekt, das Schlüssel-Wert-Paar-Elemente enthält, die den Zwischenspeicher-Schlüsselwert angeben. Sie müssen die Elemente im Objekt in derselben Reihenfolge platzieren wie die Caching-Schlüssel in den zwischengespeicherten Resolvern. `cachingKey`  
Dieses Tool funktioniert nur für Mutationen, nicht für Abfragen.

## Abonnementerweiterungen
<a name="subscription-extensions-list"></a>

**`$extensions.setSubscriptionFilter(filterJsonObject)`**  
Definiert erweiterte Abonnementfilter. Jedes Abonnementbenachrichtigungsereignis wird anhand der bereitgestellten Abonnementfilter bewertet und sendet Benachrichtigungen an Kunden, wenn alle Filter als erfüllt gelten`true`. Das Argument wird `filterJsonObject` im folgenden Abschnitt beschrieben.  
Sie können diese Erweiterungsmethode nur in den Antwortzuordnungsvorlagen eines Abonnement-Resolvers verwenden.

**`$extensions.setSubscriptionInvalidationFilter(filterJsonObject)`**  
Definiert Filter für die Invalidierung von Abonnements. Abonnementfilter werden anhand der Payload für die Invalidierung bewertet und machen dann ein bestimmtes Abonnement ungültig, wenn die Filter Folgendes ergeben. `true` Das Argument wird im `filterJsonObject` folgenden Abschnitt beschrieben.  
Sie können diese Erweiterungsmethode nur in den Antwortzuordnungsvorlagen eines Abonnement-Resolvers verwenden.

**`$extensions.invalidateSubscriptions(invalidationJsonObject)`**  
Wird verwendet, um die Invalidierung eines Abonnements aufgrund einer Mutation einzuleiten. Das Argument wird `invalidationJsonObject` im folgenden Abschnitt beschrieben.  
Diese Erweiterung kann nur in den Response-Mapping-Vorlagen der Mutationsresolver verwendet werden.  
Sie können in einer einzelnen Anfrage nur maximal fünf eindeutige `$extensions.invalidateSubscriptions()` Methodenaufrufen verwenden. Wenn Sie dieses Limit überschreiten, erhalten Sie einen GraphQL-Fehler.

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

Das JSON-Objekt definiert entweder Abonnement- oder Invalidierungsfilter. Es ist eine Reihe von Filtern in einem`filterGroup`. Jeder Filter ist eine Sammlung einzelner Filter.

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

Jeder Filter hat drei Attribute: 
+ `fieldName`— Das GraphQL-Schemafeld.
+ `operator`— Der Operatortyp.
+ `value`— Die Werte, die mit dem `fieldName` Wert der Abonnementbenachrichtigung verglichen werden sollen.

Im Folgenden finden Sie ein Beispiel für die Zuweisung dieser Attribute:

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

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

Der String-Typ `fieldName` bezieht sich auf ein im GraphQL-Schema definiertes Feld, das mit der Payload `fieldName` in der Abonnementbenachrichtigung übereinstimmt. Wenn eine Übereinstimmung gefunden wird, wird das `value` GraphQL-Schemafeld mit dem `value` des Abonnementbenachrichtigungsfilters verglichen. Im folgenden Beispiel entspricht der `fieldName` Filter dem `service` Feld, das in einem bestimmten GraphQL-Typ definiert ist. Wenn die Benachrichtigungs-Payload ein `service` Feld mit einer `value` Entsprechung von enthält`AWS AppSync`, wird der Filter wie folgt ausgewertet: `true`

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

### Feld: Wert
<a name="extensions-value"></a>

Der Wert kann je nach Operator einen anderen Typ haben:
+ Eine einzelne Zahl oder ein boolescher Wert
  + Beispiele für Zeichenketten:, `"test"` `"service"`
  + Beispiele für Zahlen:`1`,`2`, `45.75`
  + Boolesche Beispiele:, `true` `false`
+ Zahlen- oder Zeichenkettenpaare
  + Beispiel für ein Zeichenkettenpaar:`["test1","test2"]`, `["start","end"]`
  + Beispiel für ein Zahlenpaar:`[1,4]`,`[67,89]`, `[12.45, 95.45]`
+ Reihen von Zahlen oder Zeichenketten
  + Beispiel für ein String-Array: `["test1","test2","test3","test4","test5"]`
  + Beispiel für ein Zahlenarray:`[1,2,3,4,5]`, `[12.11,46.13,45.09,12.54,13.89]`

### Feld: Operator
<a name="extensions-operator"></a>

Eine Zeichenfolge, bei der Groß- und Kleinschreibung beachtet wird, mit den folgenden möglichen Werten: 


| 
| 
| Operator | Description | Mögliche Wertetypen | 
| --- |--- |--- |
| eq | Gleich | Ganzzahl, Gleitkommazahl, Zeichenfolge, Boolean | 
| Eins | Ungleich | Ganzzahl, Gleitkommazahl, Zeichenfolge, Boolean | 
| le | Kleiner als oder gleich | Ganzzahl, Gleitkommazahl, Zeichenfolge | 
| lt | Kleiner als | Ganzzahl, Fließkommazahl, Zeichenfolge | 
| ge | Größer als oder gleich | Ganzzahl, Gleitkommazahl, Zeichenfolge | 
| gt | Größer als | Ganzzahl, Fließkommazahl, Zeichenfolge | 
| enthält | Prüft, ob eine Teilsequenz oder ein Wert in der Menge vorhanden ist. | Ganzzahl, Fließkommazahl, Zeichenfolge | 
| Nicht enthält | Prüft, ob eine Teilsequenz oder ein Wert in der Menge fehlt. | Ganzzahl, Fließkommazahl, Zeichenfolge | 
| Beginnt mit | Sucht nach einem Präfix. | Zeichenfolge | 
| in | Prüft auf übereinstimmende Elemente in der Liste. | Array aus Ganzzahl, Gleitkommazahl oder Zeichenfolge | 
| notIn | Sucht nach passenden Elementen, die nicht in der Liste enthalten sind. | Array aus Ganzzahl, Gleitkommazahl oder Zeichenfolge | 
| zwischen | Zwischen zwei Werten | Ganzzahl, Gleitkommazahl, Zeichenfolge | 
| Enthält Beliebig | Enthält gemeinsame Elemente | Ganzzahl, Fließkommazahl, Zeichenfolge | 

In der folgenden Tabelle wird beschrieben, wie die einzelnen Operatoren in der Abonnementbenachrichtigung verwendet werden.

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

Der `eq` Operator prüft, `true` ob der Wert des Felds für die Abonnementbenachrichtigung dem Wert des Filters entspricht und diesem genau entspricht. Im folgenden Beispiel bewertet der Filter, `true` ob die Abonnementbenachrichtigung ein `service` Feld enthält, dessen Wert entspricht. `AWS AppSync`

**Mögliche Werttypen:** Integer, Float, String, Boolean

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

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

Der `ne` Operator prüft, `true` ob sich der Wert des Felds für die Abonnementbenachrichtigung vom Wert des Filters unterscheidet. Im folgenden Beispiel prüft der Filter, `true` ob die Abonnementbenachrichtigung ein `service` Feld mit einem anderen Wert als enthält. `AWS AppSync`

**Mögliche Werttypen:** Integer, Float, String, Boolean

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

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

Der `le` Operator prüft, `true` ob der Wert des Felds für die Abonnementbenachrichtigung kleiner oder gleich dem Wert des Filters ist. Im folgenden Beispiel bewertet der Filter, `true` ob die Abonnementbenachrichtigung ein `size` Feld enthält, dessen Wert kleiner oder gleich ist. `5`

**Mögliche Werttypen:** Integer, Float, String

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

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

Der `lt` Operator prüft, `true` ob der Wert des Felds für die Abonnementbenachrichtigung niedriger als der Wert des Filters ist. Im folgenden Beispiel bewertet der Filter, `true` ob die Abonnementbenachrichtigung ein `size` Feld mit einem niedrigeren Wert als enthält. `5`

**Mögliche Werttypen:** Integer, Float, String

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

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

Der `ge` Operator prüft, `true` ob der Wert des Felds für die Abonnementbenachrichtigung größer oder gleich dem Wert des Filters ist. Im folgenden Beispiel bewertet der Filter, `true` ob die Abonnementbenachrichtigung ein `size` Feld enthält, dessen Wert größer oder gleich ist. `5`

**Mögliche Werttypen:** Integer, Float, String

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

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

Der `gt` Operator prüft, `true` ob der Wert des Felds für die Abonnementbenachrichtigung größer als der Wert des Filters ist. Im folgenden Beispiel bewertet der Filter, `true` ob die Abonnementbenachrichtigung ein `size` Feld mit einem Wert größer als enthält. `5`

**Mögliche Werttypen:** Integer, Float, String

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

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

Der `contains` Operator sucht nach einer Teilzeichenfolge, Teilsequenz oder einem Wert in einer Menge oder einem einzelnen Element. Ein Filter mit dem `contains` Operator überprüft, `true` ob der Wert des Felds für die Abonnementbenachrichtigung den Filterwert enthält. Im folgenden Beispiel überprüft der Filter, `true` ob die Abonnementbenachrichtigung ein `seats` Feld enthält, dessen Array-Wert den Wert enthält. `10`

**Mögliche Werttypen:** Integer, Float, String

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

In einem anderen Beispiel überprüft der Filter, `true` ob die Abonnementbenachrichtigung ein `event` Feld mit einer `launch` Teilzeichenfolge enthält.

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

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

Der `notContains` Operator prüft, ob eine Teilzeichenfolge, eine Teilsequenz oder ein Wert in einer Gruppe oder einem einzelnen Element fehlt. Der Filter mit dem `notContains` Operator ermittelt, `true` ob der Wert im Feld für die Abonnementbenachrichtigung den Filterwert nicht enthält. Im folgenden Beispiel überprüft der Filter, `true` ob die Abonnementbenachrichtigung ein `seats` Feld enthält, dessen Array-Wert den Wert nicht enthält. `10`

**Mögliche Werttypen:** Integer, Float, String

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

In einem anderen Beispiel überprüft der Filter, `true` ob die Abonnementbenachrichtigung einen `event` Feldwert ohne `launch` Untersequenz enthält.

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

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

Der `beginsWith` Operator sucht nach einem Präfix in einer Zeichenfolge. Der Filter, der den `beginsWith` Operator enthält, bewertet, `true` ob der Wert des Felds für die Abonnementbenachrichtigung mit dem Wert des Filters beginnt. Im folgenden Beispiel überprüft der Filter, `true` ob die Abonnementbenachrichtigung ein `service` Feld enthält, dessen Wert mit beginnt. `AWS`

**Möglicher Wertetyp: Zeichenfolge**

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

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

Der `in` Operator sucht nach passenden Elementen in einem Array. Der Filter, der den `in` Operator enthält, überprüft, `true` ob der Wert des Felds für die Abonnementbenachrichtigung in einem Array vorhanden ist. Im folgenden Beispiel bewertet der Filter, `true` ob die Abonnementbenachrichtigung ein `severity` Feld mit einem der im Array vorhandenen Werte enthält:. `[1,2,3]`

**Möglicher Wertetyp:** Array mit Integer, Float oder String

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

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

Der `notIn` Operator sucht nach fehlenden Elementen in einem Array. Der Filter, der den `notIn` Operator enthält, gibt aus, `true` ob der Wert des Felds für die Abonnementbenachrichtigung nicht im Array vorhanden ist. Im folgenden Beispiel bewertet der Filter, `true` ob die Abonnementbenachrichtigung ein `severity` Feld mit einem der Werte enthält, die nicht im Array vorhanden sind:. `[1,2,3]`

**Möglicher Wertetyp:** Array mit Integer, Float oder String

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

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

Der `between` Operator sucht nach Werten zwischen zwei Zahlen oder Zeichenketten. Der Filter, der den `between` Operator enthält, überprüft, `true` ob der Wert des Felds für die Abonnementbenachrichtigung zwischen dem Wertepaar des Filters liegt. Im folgenden Beispiel überprüft der Filter, `true` ob die Abonnementbenachrichtigung ein `severity` Feld mit den Werten`2`,, `3` enthält. `4`

**Mögliche Werttypen:** Paar aus Integer, Float oder String

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

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

Der `containsAny` Operator sucht nach gemeinsamen Elementen in Arrays. Ein Filter mit dem `containsAny` Operator überprüft, `true` ob der Schnittpunkt zwischen dem eingestellten Wert des Felds für die Abonnementbenachrichtigung und dem eingestellten Wert des Filters nicht leer ist. Im folgenden Beispiel überprüft der Filter, `true` ob die Abonnementbenachrichtigung ein `seats` Feld mit einem Array-Wert enthält, der entweder oder `10` enthält. `15` Das bedeutet, dass der Filter auswertet, `true` ob die Abonnementbenachrichtigung den `seats` Feldwert `[10,11]` oder `[15,20,30]` hat.

**Mögliche Werttypen:** Integer, Float oder String

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

------

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

Sie können mehrere Filter mithilfe der UND-Logik kombinieren, indem Sie mehrere Einträge innerhalb des `filters` Objekts im `filterGroup` Array definieren. Im folgenden Beispiel werten Filter aus, `true` ob die Abonnementbenachrichtigung ein `userId` Feld mit einem Wert enthält, der `1` AND `group` dem Feldwert entweder `Admin` oder entspricht`Developer`.

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

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

Sie können mehrere Filter mithilfe der OR-Logik kombinieren, indem Sie mehrere Filterobjekte innerhalb des `filterGroup` Arrays definieren. Im folgenden Beispiel werten Filter aus, `true` ob die Abonnementbenachrichtigung ein `userId` Feld mit einem Wert enthält, der `1` ODER einem `group` Feldwert von entweder `Admin` oder entspricht`Developer`.

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

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

Beachten Sie, dass es mehrere Einschränkungen für die Verwendung von Filtern gibt:
+ Im `filters` Objekt können maximal fünf eindeutige `fieldName` Elemente pro Filter vorhanden sein. Das bedeutet, dass Sie maximal fünf einzelne `fieldName` Objekte mithilfe der UND-Logik kombinieren können.
+ Für den `containsAny` Operator können maximal zwanzig Werte angegeben werden.
+ Für die `notIn` Operatoren `in` und können maximal fünf Werte angegeben werden.
+ Jede Zeichenfolge kann maximal 256 Zeichen lang sein.
+ Bei jedem Zeichenkettenvergleich wird zwischen Groß- und Kleinschreibung unterschieden.
+ Die Filterung verschachtelter Objekte ermöglicht bis zu fünf verschachtelte Filterebenen.
+ Jede `filterGroup` kann maximal 10 haben. `filters` Das bedeutet, dass Sie maximal 10 `filters` mithilfe der ODER-Logik kombinieren können.
  + Der `in` Operator ist ein Sonderfall der OR-Logik. Im folgenden Beispiel gibt es zwei`filters`:

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

    Die vorherige Filtergruppe wird wie folgt ausgewertet und auf die maximale Filtergrenze angerechnet:

    ```
    {
        "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"
                    }
               ]  
            }
        ]
    }
    ```

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

Das `invalidationJsonObject` definiert Folgendes:
+ `subscriptionField`— Das GraphQL-Schemaabonnement, das ungültig werden soll. Ein einzelnes Abonnement, das als Zeichenfolge in der definiert ist`subscriptionField`, wird für ungültig erklärt.
+ `payload`— Eine Liste mit Schlüssel-Wert-Paaren, die als Eingabe für die Ungültigerklärung von Abonnements verwendet wird, wenn der Invalidierungsfilter A anhand ihrer Werte auswertet. `true`

  Im folgenden Beispiel werden abonnierte und verbundene Clients, die das Abonnement verwenden, ungültig gemacht, wenn der im `onUserDelete` Abonnement-Resolver definierte Invalidierungsfilter das Ergebnis anhand des Werts auswertet. `true` `payload`

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