DynamoDB 保留字檢查器
貼上你的屬性名稱以查看哪些與 DynamoDB 的保留字衝突,並複製一個安全地為它們加上別名的 ExpressionAttributeNames 對應表。
為何保留字很重要
DynamoDB 維護著一長串保留關鍵字,它不會接受把這些字當作運算式中裸露的屬性名稱。日常用的名稱 — name、status、size、count、timestamp、year — 都在清單上。直接引用其中之一,請求就會以 ValidationException 失敗,而且通常是在執行時而非在程式碼審查時。
解決方法是運算式屬性名稱:一個代替真實名稱的 # 佔位符,搭配一個 ExpressionAttributeNames 對應表。這個檢查器會不分大小寫地將你的名稱與完整清單比對,並自動為保留字建立該對應表,讓你可以直接把它貼進 GetItem、Query、Update 或 Delete 請求中。
加別名是個能避開一整類錯誤的小習慣 — 運算式屬性名稱與值 深入說明這些佔位符,而 Expression Builder 會在你建構時為你為每個名稱加上別名。
常見問題
什麼是 DynamoDB 保留字?
DynamoDB 保留了一大串關鍵字 — 大約 573 個 — 這些字無法在運算式中直接當作屬性名稱使用。像 name、status、timestamp、size 與 count 這類名稱全都是保留字。如果你在投影、filter、條件或更新運算式中直接引用其中之一,DynamoDB 會回傳一個 ValidationException,並帶有「Attribute name is a reserved keyword」的訊息。
我要如何把保留字當作屬性名稱使用?
用運算式屬性名稱為它加上別名 — 一個以 # 開頭並對應到真實名稱的佔位符。例如,在你的運算式中引用 #name,並傳入 ExpressionAttributeNames 為 { "#name": "name" }。本工具會為你輸入的每個保留字名稱產生該對應表,隨時可貼進你的請求中。
保留字清單區分大小寫嗎?
不區分。DynamoDB 的保留字清單不區分大小寫,因此 Name、name 與 NAME 都會被視為保留字 NAME。這個檢查器會不分大小寫地比對,與 DynamoDB 完全一致。
我必須為每個屬性名稱都加上別名嗎?
只有保留字需要別名,但許多團隊習慣為每個名稱都加上別名,這樣就永遠不會遇到這個錯誤,而且運算式讀起來也一致。為非保留字加上別名一律是安全的。本工具會明確標示出你的哪些名稱是保留字,讓你自行決定。