The provided expression refers to an attribute that does not exist in the item
TL;DR — UpdateExpression または ConditionExpression が、アイテムに存在しない属性を 読み取って います。算術オペランド(score が一度も設定されていないのに SET score = score + :inc)、別属性からのコピー(SET a = b)、またはリストオペランドが欠落した list_append などです。if_not_exists で読み取りをガードするか、アイテム作成時に属性をシードしてください。(親マップが欠落したネストパスへの書き込みは、別の "document path invalid for update" エラーを発生させます。)
意味
ValidationException: The provided expression refers to an attribute
that does not exist in the itemこれは HTTP 400 の ValidationException です。リクエストは正しく解析されましたが、DynamoDB がそれをアイテムに対して評価したとき、式が 読み取る 属性 — +/- のオペランド、SET a = b コピーのソース、または list_append の引数 — がそこになく、オペランドが解決できませんでした。クライアント側の問題でリトライ不可 です。同じアイテム + 式が再現します。
発生する理由
- 未設定の属性に対する算術 —
scoreが一度も初期化されていないとSET score = score + :incがスローします。ドキュメントの増減構文は 既存の 数値属性を操作します。 - 欠落した属性からのコピー — アイテムに
emailがないのにSET backupEmail = email。 - 欠落したリストに対する
list_append—tagsがまだ存在しないのにSET tags = list_append(tags, :more)。 - ネストパスの誤ったプレースホルダーマッピング — リーフだけを置換するのではなく、ドット付きパス全体を1つの
ExpressionAttributeNamesエントリ("#p": "stats.viewCount")にマッピングしている。DynamoDB はリテラルの"stats.viewCount"を単一の属性名として扱い、式が読み取る瞬間にそれは欠落しています。 - 読み取り属性名の タイプミスや誤った大文字小文字 — DynamoDB の属性名は大文字小文字を区別します。
修正方法
if_not_existsで読み取りをガードします — 属性がまだなくても最初の書き込みが動作するように:SET score = if_not_exists(score, :zero) + :inc SET tags = list_append(if_not_exists(tags, :emptyList), :more)- アイテム作成時に属性をシードします — 前もって
score: 0、tags: []を書けば、後の読み取りは常に解決します。 - ネストパスでは リーフだけを置換します — 式ではドットをリテラルに保ちます: 1つの名前にフルパスではなく、
{"#c": "viewCount"}を使ったSET stats.#c = :v。 - パスが有効だと仮定する前に、
GetItemで 属性の存在 / スペル + 大文字小文字を検証します。 - 親マップが欠落したネストされた子を書き込みますか? それは兄弟エラーです。親を作成する2ステップのパターンは the document path provided in the update expression is invalid for update を参照してください。
更新を書きながらアイテムの実際の形状を目の前に置きたいですか?DynoTable デスクトップアプリ はすべての属性(ネストされたマップやリストを含む)を表示するため、欠落した親パスが一目瞭然です。
関連するエラー
- The document path provided in the update expression is invalid for update — 親マップ/リストが欠落しているか誤った型のネストパスへの書き込み。
- Invalid UpdateExpression syntax — 式自体が不正な形式で、このチェックの前に捕捉される。
- Reserved keyword in attribute name — 名前が予約語と衝突する。
- ExpressionAttributeValues invalid
- 学習: Update Expression · 式属性名と値
参考資料
- Using update expressions in DynamoDB — Amazon DynamoDB Developer Guide
- TransactWriteItems — Amazon DynamoDB API Reference
- Expression attribute names (aliases) in DynamoDB — Amazon DynamoDB Developer Guide
最終検証日 2026-07-13、上記にリンクした公式 AWS ドキュメントに照らして確認しました。