DynamoDB ValidationException

TL;DR — ValidationException 表示 DynamoDB 在_觸及任何資料之前_將請求拒絕為格式不正確。閱讀訊息文字:它會指名出錯的確切參數。什麼都沒寫入,所以修正請求的形狀並重試。

這是什麼意思

ValidationException 是 DynamoDB 對驗證失敗的請求所給的通用用戶端錯誤(HTTP 400)— 錯誤的 expression、包在錯誤型別中的值、與表格 schema 不符的鍵,或超出限制。它不可重試:再次送出相同請求會產生相同的錯誤。

由於它是一族錯誤,修正方法完全取決於訊息字串。最常見的幾種變體各有其專頁:

為什麼會發生

  • 一個未包含 partition key、或參照非鍵屬性的 KeyConditionExpression
  • 一個型別與表格定義不符的鍵屬性(例如把數字當作字串送出)。
  • 格式不正確的 UpdateExpression / ConditionExpression / FilterExpression — 直接使用了保留字、缺少 #name:value 佔位符。
  • 在不允許之處出現空值,或解析為不支援型別的屬性。
  • 超出限制 — 項目超過 400 KB、BatchWriteItem 中的項目太多、expression 太長。

如何修正

  1. 閱讀完整訊息。 DynamoDB 告訴你哪個參數失敗了 — 字串很精確("Invalid UpdateExpression: Attribute name is a reserved keyword; reserved keyword: status")。
  2. 將它對應到上方的變體並套用該頁的修正。
  3. 在送出前於本機驗證請求形狀 — 大多數 ValidationException 是 expression 中的拼字錯誤或型別包裝錯誤。

常見問題

DynamoDB ValidationException 可以重試嗎? 不行。請求本身格式不正確,因此再次送出會產生相同的錯誤。閱讀訊息文字 — 它會指名出錯的確切參數 — 修正請求的形狀,然後重試。

ValidationException 最常見的原因是什麼? 一個省略 partition key 或參照非鍵屬性的 KeyConditionExpression、一個型別與表格定義不符的鍵屬性、一個使用保留字或缺少佔位符的格式不正確 expression、在不允許之處的空值,或是超出限制,例如項目超過 400 KB。

相關錯誤

參考資料

最後驗證於 2026-07-13,對照上方連結的 AWS 官方文件。

不必透過主控台就能操作 DynamoDB

一款快速的 DynamoDB 桌面用戶端,可執行 DynamoDB 無法執行的真正 SQL — JOINs、GROUP BY、聚合 — 並支援視覺化編輯與使用你自己的 Bedrock 金鑰的 AI 代理。

30 天免費試用,無需信用卡 — 之後為無時間限制的免費方案。