One or more parameter values were invalid
TL;DR — DynamoDB 接受了請求形狀,但拒絕了其中的特定值:空集合、鍵中的空字串、型別與 schema 不符的值,或在不允許之處的 null。閱讀訊息其餘部分 — 它指名確切的參數 — 並修正該值。
這是什麼意思
ValidationException: One or more parameter values were invalid: <specific reason>這是一個 ValidationException(HTTP 400),其訊息主體精確指出一個破壞規則的值 — AWS 只將訊息記載為「因遇到的特定錯誤而異」。前綴是通用的;重要的部分是接在後面的 — 例如 AttributeValue 對鍵不能含有空字串、集合不能為空,或鍵值的型別與 schema 不符。它原樣不可重試;該值必須改變。
為什麼會發生
訊息尾部拼出的典型原因(確切用語因情況而異):
- 鍵屬性中的空字串或二進位值 — 非鍵字串與二進位值允許為空;表格與索引的鍵不行。
- 空集合 — 零成員的
SS/NS/BS。集合在任何地方都必須非空;空 list 與 map 沒問題。 - 鍵的型別不符(例如
expected: S actual: N)— 值的型別與表格的 key schema 不符。 - 傳給不接受它的屬性的 null 值,或 marshaller 為
undefined欄位發出null。 - 對其型別而言超出範圍的值(參見 number overflow)。
如何修正
- 閱讀完整訊息。 DynamoDB 指名出錯的參數與確切的規則 — 那個字串就是修正方法。
- 給鍵真實值 — 絕不在 partition/sort key 中用空字串或空二進位。
- 捨棄空集合 — 當集合沒有成員時省略該屬性,或改儲存純量/
NULL。 - 讓型別符合 schema — 將數字鍵送成數字、字串鍵送成字串;不要跨越包裝。
- 在寫入前剝除
undefined/null(Document Client 的removeUndefinedValues選項處理常見情況)。
常見問題
"One or more parameter values were invalid" 是什麼意思? 你請求中的特定值破壞了 DynamoDB 規則 — 最常見的是鍵中的空字串、空集合、與 key schema 不符的型別,或不允許的 null。完整訊息指名確切的參數與原因。
為什麼空字串只偶爾失敗? DynamoDB 對非鍵屬性允許空字串,但在鍵屬性中拒絕它們。partition 或 sort key 中的空字串引發「An AttributeValue may not contain an empty string」;相同的值在一般屬性中被接受。
相關錯誤
- Supplied AttributeValue is empty — 完全沒有帶型別值的項目屬性。
- The provided key element does not match the schema — 鍵型別/形狀不符。
- ValidationException (overview)
- 學習:DynamoDB data types
參考資料
- Error handling with DynamoDB — Amazon DynamoDB Developer Guide
- Supported data types and naming rules in Amazon DynamoDB — Amazon DynamoDB Developer Guide
- AttributeValue — Amazon DynamoDB API Reference
最後驗證於 2026-07-13,對照上方連結的 AWS 官方文件。