Supplied AttributeValue is empty, must contain exactly one of the supported datatypes
TL;DR — Item(またはキー)内の属性の1つが、中に値のない AttributeValue を持っています。空のセット、キー属性内の空の文字列/バイナリ、null/undefined のフィールド、または S/N/BOOL/… メンバーのないラッパーです。DynamoDB は、すべての AttributeValue が正確に1つのサポートされる型を保持することを要求します。空の属性を削除するか、実際の値を与えてください。
意味
ValidationException: Supplied AttributeValue is empty, must contain exactly one of the supported datatypesDynamoDB は、アイテムの形状を検証している間にリクエストを拒否しました: AttributeValue は存在したが、DynamoDB が格納できるものを何も運んでいませんでした。すべての AttributeValue は 正確に1つ の型付き値(S、N、B、SS、NS、BS、M、L、NULL、BOOL)を含む必要があります。これは HTTP 400、リトライ不可 です。属性を修正するまで同じアイテムは再び失敗します。
これは ExpressionAttributeValues contains invalid value とは異なります: あちらは式内の :placeholder に関するものですが、こちらは アイテムボディ自体 内の属性に関するもの(PutItem、BatchWriteItem、TransactWriteItems)です。
発生する理由
- 書き込むオブジェクト内の
undefined/nullフィールド — マーシャラーが、スキップしたりNULL型にしたりする代わりに空の AttributeValue を出力する。 - 空のセット —
SS、NS、BSは少なくとも1つのメンバーを持つ必要があります。空のセットはどこでも無効です。 - キー属性内の空の文字列 — 非キーの文字列属性は
""でよいですが、テーブルまたはインデックスのキー 属性はそうではありません。 - キー内の空のバイナリ値 — 文字列と同じルール: 空のバイナリは非キー属性(およびセット、リスト、マップの内部)では問題ありませんが、キーでは決してありません。
- 永続化する
MapまたはListの中に埋もれた ネストされた空のセット — ネストされた空の 文字列とバイナリ値 は許可されますが、ネストされた空の セット は許可されません。
修正方法
- 書き込む前に空の/
undefined属性を取り除きます。 実際に値を持つフィールドのみからItemを組み立て、残りは空のラッパーを送るのではなく削除します。 - Document Client では、空の値の処理を有効にします。
@aws-sdk/lib-dynamodbのremoveUndefinedValues: trueマーシャリングオプションはundefinedフィールドを削除し、ワイヤーに到達しないようにします。(非キー属性の空の文字列とバイナリ値は DynamoDB によって直接許可されます。) - 空のセットを決して送らないでください — セットにメンバーがないときは属性を完全に省略するか、
NULLを格納します。 - キー属性に実際の値を与えます — パーティション/ソートキー(テーブルまたはインデックス)は決して空の文字列や空のバイナリになれません。
- 問題の属性がトップレベルでない場合は、迷い込んだ空のセットを探して ネストされたマップ/リストを走査します。
よくある質問
DynamoDB で "Supplied AttributeValue is empty" は何を意味しますか? アイテム内の属性が、格納された値を含まない AttributeValue を持っています。キー属性内の空の文字列やバイナリ、空のセット、または null/undefined のフィールドです。すべての AttributeValue は正確に1つのサポートされるデータ型を含む必要があるため、DynamoDB は書き込みを拒否します。
DynamoDB が空の値を拒否するのを止めるには? 書き込む前に空と undefined の属性を削除します(または Document Client の removeUndefinedValues オプションを使います)。空のセットを決して送らないでください — 属性を省略するか NULL を格納します。キー属性は常に実際の空でない値を運ぶ必要があります。
関連するエラー
- ExpressionAttributeValues contains invalid value — 式のプレースホルダーでの同じ種類の問題。
- ValidationException (overview)
- 学習: DynamoDB のデータ型 · JSON マーシャリング
参考資料
- Supported data types and naming rules in Amazon DynamoDB — Amazon DynamoDB Developer Guide
- AttributeValue — Amazon DynamoDB API Reference
- Error handling with DynamoDB — Amazon DynamoDB Developer Guide
最終検証日 2026-07-13、上記にリンクした公式 AWS ドキュメントに照らして確認しました。