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 datatypes

DynamoDB は、アイテムの形状を検証している間にリクエストを拒否しました: AttributeValue は存在したが、DynamoDB が格納できるものを何も運んでいませんでした。すべての AttributeValue は 正確に1つ の型付き値(SNBSSNSBSMLNULLBOOL)を含む必要があります。これは HTTP 400、リトライ不可 です。属性を修正するまで同じアイテムは再び失敗します。

これは ExpressionAttributeValues contains invalid value とは異なります: あちらは式内の :placeholder に関するものですが、こちらは アイテムボディ自体 内の属性に関するもの(PutItemBatchWriteItemTransactWriteItems)です。

発生する理由

  • 書き込むオブジェクト内の undefined/null フィールド — マーシャラーが、スキップしたり NULL 型にしたりする代わりに空の AttributeValue を出力する。
  • 空のセットSSNSBS は少なくとも1つのメンバーを持つ必要があります。空のセットはどこでも無効です。
  • キー属性内の空の文字列 — 非キーの文字列属性は "" でよいですが、テーブルまたはインデックスのキー 属性はそうではありません。
  • キー内の空のバイナリ値 — 文字列と同じルール: 空のバイナリは非キー属性(およびセット、リスト、マップの内部)では問題ありませんが、キーでは決してありません。
  • 永続化する Map または List の中に埋もれた ネストされた空のセット — ネストされた空の 文字列とバイナリ値 は許可されますが、ネストされた空の セット は許可されません。

修正方法

  1. 書き込む前に空の/undefined 属性を取り除きます。 実際に値を持つフィールドのみから Item を組み立て、残りは空のラッパーを送るのではなく削除します。
  2. Document Client では、空の値の処理を有効にします。 @aws-sdk/lib-dynamodbremoveUndefinedValues: true マーシャリングオプションは undefined フィールドを削除し、ワイヤーに到達しないようにします。(非キー属性の空の文字列とバイナリ値は DynamoDB によって直接許可されます。)
  3. 空のセットを決して送らないでください — セットにメンバーがないときは属性を完全に省略するか、NULL を格納します。
  4. キー属性に実際の値を与えます — パーティション/ソートキー(テーブルまたはインデックス)は決して空の文字列や空のバイナリになれません。
  5. 問題の属性がトップレベルでない場合は、迷い込んだ空のセットを探して ネストされたマップ/リストを走査します

よくある質問

DynamoDB で "Supplied AttributeValue is empty" は何を意味しますか? アイテム内の属性が、格納された値を含まない AttributeValue を持っています。キー属性内の空の文字列やバイナリ、空のセット、または null/undefined のフィールドです。すべての AttributeValue は正確に1つのサポートされるデータ型を含む必要があるため、DynamoDB は書き込みを拒否します。

DynamoDB が空の値を拒否するのを止めるには? 書き込む前に空と undefined の属性を削除します(または Document Client の removeUndefinedValues オプションを使います)。空のセットを決して送らないでください — 属性を省略するか NULL を格納します。キー属性は常に実際の空でない値を運ぶ必要があります。

関連するエラー

参考資料

最終検証日 2026-07-13、上記にリンクした公式 AWS ドキュメントに照らして確認しました。

Console なしで DynamoDB を扱う

DynamoDB では実行できない本物の SQL(JOINs、GROUP BY、集計)を実行する高速な DynamoDB デスクトップクライアント。ビジュアル編集と、あなた自身の Bedrock キーで動く AI エージェントを備えています。

30日間無料トライアル、クレジットカード不要 — その後は期限のない Free プラン。