The provided expression refers to an attribute that does not exist in the item
요약 — UpdateExpression이나 ConditionExpression이 항목에 없는 속성을 읽습니다 — 산술 피연산자(score가 설정된 적 없을 때 SET score = score + :inc), 다른 속성에서의 복사(SET a = b), 또는 list 피연산자가 없는 list_append. if_not_exists로 읽기를 보호하거나 항목 생성 시 속성을 시드하세요. (부모 map이 없는 중첩 경로에 쓰는 것은 별개의 "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에 대한
list_append—tags가 아직 없을 때SET tags = list_append(tags, :more). - 중첩 경로에 대한 잘못된 플레이스홀더 매핑 — 잎만 대체하는 대신 점으로 구분된 전체 경로를 하나의
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: []를 써서 나중의 읽기가 항상 해석되도록 하세요. - 중첩 경로에서 잎만 대체하세요 — 표현식에서 점을 리터럴로 유지: 전체 경로를 한 이름에 넣는 대신
{"#c": "viewCount"}와 함께SET stats.#c = :v. - 경로가 유효하다고 가정하기 전에
GetItem으로 속성이 존재하는지 / 철자 + 대소문자를 확인하세요. - 부모 map이 없는 중첩 자식에 쓰나요? 그것은 형제 오류입니다 — 두 단계 부모 생성 패턴은 the document path provided in the update expression is invalid for update를 참조하세요.
업데이트를 작성하는 동안 항목의 실제 형태를 눈앞에 두고 싶나요? DynoTable 데스크톱 앱은 모든 속성(중첩 map과 list 포함)을 보여주므로 누락된 부모 경로가 한눈에 명백합니다.
관련 오류
- The document path provided in the update expression is invalid for update — 부모 map/list가 없거나 잘못된 타입인 중첩 경로에 쓰기.
- Invalid UpdateExpression syntax — 이 검사 전에 잡히는, 형식 자체가 잘못된 표현식.
- Reserved keyword in attribute name — 이름이 예약어와 충돌.
- ExpressionAttributeValues invalid
- 학습: Update expressions · Expression names & values
참고 자료
- Using update expressions in DynamoDB — Amazon DynamoDB Developer Guide
- TransactWriteItems — Amazon DynamoDB API Reference
- Expression attribute names (aliases) in DynamoDB — Amazon DynamoDB Developer Guide
공식 AWS 문서(위 링크)를 기준으로 2026-07-13에 마지막으로 검증되었습니다.