One or more parameter values were invalid
TL;DR — DynamoDB はリクエストの形状は受け入れましたが、その中の 特定の値 を拒否しました: 空のセット、キー内の空文字列、スキーマと一致しない型の値、または許可されない場所の null です。メッセージの残りを読んでください。正確なパラメータを示します。そしてその値を修正します。
意味
ValidationException: One or more parameter values were invalid: <specific reason>これは ValidationException(HTTP 400)で、そのメッセージ本文がルールを破った1つの値を特定します。AWS はメッセージを「遭遇した特定のエラーによって異なる」とだけドキュメント化しています。プレフィックスは総合的で、重要なのはそれに続く部分です。たとえば、AttributeValue がキーに空文字列を含めない、セットが空であってはならない、またはキー値の型がスキーマと一致しない、などです。そのままでは リトライ不可 です。値を変える必要があります。
発生する理由
メッセージの末尾が説明する典型的な理由(正確な表現はケースによって異なります):
- キー属性内の空の文字列またはバイナリ値 — 非キーの文字列とバイナリ値は空であることが許されますが、テーブルとインデックスのキーは許されません。
- 空のセット — メンバーが 0 の
SS/NS/BS。セットはどこでも空でない必要があります。空のリストとマップは問題ありません。 - キーの型の不一致(例:
expected: S actual: N)— 値の型がテーブルのキースキーマと一致しない。 - それを受け付けない属性に渡された null 値、または
undefinedフィールドにnullを出力するマーシャラー。 - その型に対して 範囲外の値(number overflow を参照)。
修正方法
- 完全なメッセージを読みます。 DynamoDB は問題のあるパラメータと正確なルールを示します。その文字列が修正です。
- キーに実際の値を与えます — パーティション/ソートキーに決して空文字列や空のバイナリを入れないでください。
- 空のセットを落とします — セットにメンバーがないときは属性を省略するか、代わりにスカラー/
NULLを格納します。 - 型をスキーマに一致させます — 数値キーを数値として、文字列キーを文字列として送ります。ラッパーを交差させないでください。
- 書き込む前にアイテムから
undefined/nullを取り除きます(Document Client のremoveUndefinedValuesオプションが一般的なケースを処理します)。
よくある質問
"One or more parameter values were invalid" は何を意味しますか? リクエスト内の特定の値が DynamoDB のルールを破っています。多くはキー内の空文字列、空のセット、キースキーマと一致しない型、または許可されない null です。完全なメッセージが正確なパラメータと理由を示します。
空文字列が時々しか失敗しないのはなぜですか? DynamoDB は非キー属性には空文字列を許可しますが、キー属性では拒否します。パーティションやソートキー内の空文字列は "An AttributeValue may not contain an empty string" を発生させます。通常の属性内の同じ値は受け入れられます。
関連するエラー
- Supplied AttributeValue is empty — 型付きの値がまったくないアイテム属性。
- The provided key element does not match the schema — キーの型/形状の不一致。
- ValidationException (overview)
- Learn: 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 ドキュメントに照らして確認しました。