DynamoDB-Reserved-Words-Checker
Füge deine Attributnamen ein, um zu sehen, welche mit den reservierten Wörtern von DynamoDB kollidieren, und kopiere eine ExpressionAttributeNames-Map, die sie sicher aliasiert.
@dynotable/dynamodb-reserved-words ist die Open-Source-Bibliothek (MIT) hinter diesem Tool.
Warum reservierte Wörter wichtig sind
DynamoDB führt eine lange Liste reservierter Schlüsselwörter, die es nicht als bloßen Attributnamen innerhalb eines Ausdrucks akzeptiert. Alltägliche Namen — name, status, size, count, timestamp, year — stehen darauf. Referenziere eines direkt, und die Anfrage schlägt mit einer ValidationException fehl, meist zur Laufzeit statt im Review.
Die Lösung ist ein Expression Attribute Name: ein #-Platzhalter, der für den echten Namen einsteht, gepaart mit einer ExpressionAttributeNames-Map. Dieser Checker gleicht deine Namen ohne Berücksichtigung der Groß-/Kleinschreibung gegen die vollständige Liste ab und erstellt diese Map für die reservierten Namen automatisch, sodass du sie direkt in eine GetItem-, Query-, Update- oder Delete-Anfrage einfügen kannst.
Aliasing ist eine kleine Gewohnheit, die eine ganze Klasse von Fehlern vermeidet — Expression Attribute Names und Values erklärt die Platzhalter im Detail, und der Expression Builder aliasiert jeden Namen für dich, während du baust.
Die vollständige Liste der reservierten DynamoDB-Wörter
Alle 573 reservierten Wörter, genau so, wie AWS sie veröffentlicht. Der Abgleich erfolgt ohne Berücksichtigung der Groß-/Kleinschreibung, daher sind `size`, `Size` und `SIZE` alle reserviert. Jeder Attributname aus dieser Liste muss mit einem Expression Attribute Name aliasiert werden, bevor du ihn in einem Ausdruck verwenden kannst.
Wortwörtlich aus der AWS-Referenz „Reserved words in DynamoDB“ übernommen. Füge deine Attributnamen oben in den Checker ein, um die Aliase und die ExpressionAttributeNames-Map generieren zu lassen.
Häufig gestellte Fragen
Was sind reservierte DynamoDB-Wörter?
DynamoDB reserviert eine große Liste von Schlüsselwörtern — etwa 573 —, die nicht direkt als Attributnamen innerhalb eines Ausdrucks verwendet werden können. Namen wie name, status, timestamp, size und count sind alle reserviert. Wenn du eines direkt in einer Projection, einem Filter, einer Condition oder einer Update-Expression referenzierst, gibt DynamoDB eine ValidationException mit der Meldung „Attribute name is a reserved keyword“ zurück.
Wie verwende ich ein reserviertes Wort als Attributnamen?
Aliasiere es mit einem Expression Attribute Name — einem Platzhalter, der mit # beginnt und auf den echten Namen verweist. Referenziere zum Beispiel #name in deinem Ausdruck und übergib ExpressionAttributeNames von { "#name": "name" }. Dieses Tool erzeugt diese Map für jeden reservierten Namen, den du eingibst, bereit zum Einfügen in deine Anfrage.
Wird bei der Liste reservierter Wörter die Groß-/Kleinschreibung berücksichtigt?
Nein. Die Liste reservierter Wörter von DynamoDB berücksichtigt keine Groß-/Kleinschreibung, sodass Name, name und NAME alle als das reservierte Wort NAME behandelt werden. Dieser Checker gleicht ohne Berücksichtigung der Groß-/Kleinschreibung ab, genau wie DynamoDB.
Muss ich jeden Attributnamen aliasieren?
Nur die reservierten benötigen einen Alias, aber viele Teams aliasieren aus Gewohnheit jeden Namen, damit sie nie auf den Fehler stoßen und die Ausdrücke einheitlich lesbar sind. Einen nicht reservierten Namen zu aliasieren ist immer sicher. Dieses Tool markiert genau, welche deiner Namen reserviert sind, damit du entscheiden kannst.