거래 요청에는 한 항목에 대한 여러 작업이 포함될 수 없습니다.
TL;DR — 동일한 TransactWriteItems 요청의 두 작업이 동일한 항목(동일한 기본 키)을 대상으로 합니다. DynamoDB는 트랜잭션의 모든 항목이 고유해야 하므로 실행하기 전에 전체 호출을 거부합니다. 중복 작업을 하나로 축소하거나 그 중 하나를 별도의 쓰기로 이동하세요.
무엇을 의미하는가
ValidationException: Transaction request cannot include multiple operations on one itemTransactWriteItems 요청은 모두 커밋되거나 모두 실패하는 최대 100개의 작업(Put, Update, Delete, ConditionCheck)을 그룹화합니다. 해당 API의 엄격한 규칙은 **동일한 항목을 대상으로 하는 두 가지 작업이 없습니다**입니다. DynamoDB는 전체 기본 키로 항목을 식별하며 각 키는 최대 한 번 나타날 수 있습니다. 이는 트랜잭션이 실행되기 전에 포착된 HTTP 400ValidationException`이며, 있는 그대로는 재시도할 수 없습니다.
왜 발생하는가
- 같은 키에
ConditionCheck+ 쓰기 — 동일한 거래에서 항목에 대한 조건을 주장하고Update/Delete도 주장하려고 했습니다. 대신 조건을 쓰기의ConditionExpression에 접어 넣으세요. - 동일한 키에 두 번 쓰기 — 예: 동일한 항목에 대한
Put및Update, 종종 키로 중복을 제거하지 않는 루프에서 발생합니다. - 중복 키가 포함된 생성된 배치 — ORM 또는 매핑 계층이 동일한 파티션+정렬 키를 두 번 내보냈습니다.
- 다르다고 생각하는 테이블 전체에서 두 가지 다른 작업의 동일한 키 — 해당 항목은 고유하게
{table, PK, SK}입니다. 동일한 테이블 내의 반복이 이를 트리거합니다.
어떻게 해결하는가
- 트랜잭션을 생성하기 전에 기본 키로 중복 제거 — 각
{PK, SK}는 한 번만 나타날 수 있습니다. ConditionCheck를 쓰기에 병합 보호합니다. 별도의ConditionCheck작업을 추가하는 대신 해당 항목 자체의ConditionExpression에 어설션을 넣습니다.- 두 가지 작업 대신 단일
UpdateExpression(SET/ADD/REMOVE)을 사용하여 두 개의 돌연변이를 하나의Update로 결합합니다. - 작업이 실제로 하나의 작업으로 표현될 수 없는 경우 피할 수 없는 다단계 논리를 별도의 트랜잭션으로 분할하거나 쓰기합니다.
- 기본 키를
TransactItems배열에 기록하세요. 생성된 배치에서 중복 키를 놓치기 쉽습니다. 전송하기 전에 각{PK, SK}을 인쇄하세요.
먼저 DynoTable에서 확인
다중 항목 트랜잭션을 구축하기 전에 DynoTable에 대상 키를 나열하십시오. ⌘K로 테이블을 열고 각 기본 키가 작업 목록에서 고유한지 확인하세요. 스테이징(⌘S)을 사용하면 확장하기 전에 단일 항목 트랜잭션을 테스트할 수 있습니다.
Expression Builder을 사용하여 조건 검사를 쓰기로 병합합니다. ⌘P로 프로필을 전환합니다. Connect to AWS 및 Install를 참조하세요.
출처
- TransactWriteItems — Amazon DynamoDB API Reference (2026-07-13 검증)
- Amazon DynamoDB Transactions: How it works (2026-07-13 검증)
관련 오류
- TransactionCanceledException — 트랜잭션이 구문 분석되었지만 조건 또는 충돌로 인해 커밋 시 취소되었습니다.
- Too many items in a TransactWriteItems call — 한 번의 거래에 100개 이상의 작업이 수행됩니다.
- ValidationException (overview)
- 코드 예: TransactWriteItems in Node.js — 조정할 유효한 다중 항목 트랜잭션입니다.
- 학습: DynamoDB transactions
참고 자료
- TransactWriteItems — Amazon DynamoDB API Reference
- Amazon DynamoDB Transactions: How it works — Amazon DynamoDB Developer Guide
- Error handling with DynamoDB — Amazon DynamoDB Developer Guide
위에 링크된 공식 AWS 문서를 기준으로 2026년 7월 13일에 마지막으로 확인되었습니다.