DynamoDB ValidationException
TL;DR — ValidationException 表示 DynamoDB 在_觸及任何資料之前_將請求拒絕為格式不正確。閱讀訊息文字:它會指名出錯的確切參數。什麼都沒寫入,所以修正請求的形狀並重試。
這是什麼意思
ValidationException 是 DynamoDB 對驗證失敗的請求所給的通用用戶端錯誤(HTTP 400)— 錯誤的 expression、包在錯誤型別中的值、與表格 schema 不符的鍵,或超出限制。它不可重試:再次送出相同請求會產生相同的錯誤。
由於它是一族錯誤,修正方法完全取決於訊息字串。最常見的幾種變體各有其專頁:
- Query condition missed key schema element
- The provided key element does not match the schema
- Invalid UpdateExpression 語法
- ExpressionAttributeValues contains invalid value
- Item size has exceeded the maximum allowed size
為什麼會發生
- 一個未包含 partition key、或參照非鍵屬性的 KeyConditionExpression。
- 一個型別與表格定義不符的鍵屬性(例如把數字當作字串送出)。
- 格式不正確的 UpdateExpression / ConditionExpression / FilterExpression — 直接使用了保留字、缺少
#name或:value佔位符。 - 在不允許之處出現空值,或解析為不支援型別的屬性。
- 超出限制 — 項目超過 400 KB、
BatchWriteItem中的項目太多、expression 太長。
如何修正
- 閱讀完整訊息。 DynamoDB 告訴你哪個參數失敗了 — 字串很精確("Invalid UpdateExpression: Attribute name is a reserved keyword; reserved keyword: status")。
- 將它對應到上方的變體並套用該頁的修正。
- 在送出前於本機驗證請求形狀 — 大多數
ValidationException是 expression 中的拼字錯誤或型別包裝錯誤。
常見問題
DynamoDB ValidationException 可以重試嗎? 不行。請求本身格式不正確,因此再次送出會產生相同的錯誤。閱讀訊息文字 — 它會指名出錯的確切參數 — 修正請求的形狀,然後重試。
ValidationException 最常見的原因是什麼? 一個省略 partition key 或參照非鍵屬性的 KeyConditionExpression、一個型別與表格定義不符的鍵屬性、一個使用保留字或缺少佔位符的格式不正確 expression、在不允許之處的空值,或是超出限制,例如項目超過 400 KB。
相關錯誤
- ConditionalCheckFailedException — _條件_失敗(並非格式不正確;寫入有效但被拒絕)。
- ResourceNotFoundException — 表格或索引不存在。
- 學習:Expression names & values · Update expressions
參考資料
- Error handling with DynamoDB — Amazon DynamoDB Developer Guide
- Constraints in Amazon DynamoDB — Amazon DynamoDB Developer Guide
- Reserved words in DynamoDB — Amazon DynamoDB Developer Guide
最後驗證於 2026-07-13,對照上方連結的 AWS 官方文件。