거래 요청에는 한 항목에 대한 여러 작업이 포함될 수 없습니다.

TL;DR — 동일한 TransactWriteItems 요청의 두 작업이 동일한 항목(동일한 기본 키)을 대상으로 합니다. DynamoDB는 트랜잭션의 모든 항목이 고유해야 하므로 실행하기 전에 전체 호출을 거부합니다. 중복 작업을 하나로 축소하거나 그 중 하나를 별도의 쓰기로 이동하세요.

무엇을 의미하는가

ValidationException: Transaction request cannot include multiple operations on one item

TransactWriteItems 요청은 모두 커밋되거나 모두 실패하는 최대 100개의 작업(Put, Update, Delete, ConditionCheck)을 그룹화합니다. 해당 API의 엄격한 규칙은 **동일한 항목을 대상으로 하는 두 가지 작업이 없습니다**입니다. DynamoDB는 전체 기본 키로 항목을 식별하며 각 키는 최대 한 번 나타날 수 있습니다. 이는 트랜잭션이 실행되기 전에 포착된 HTTP 400ValidationException`이며, 있는 그대로는 재시도할 수 없습니다.

왜 발생하는가

  • 같은 키에 ConditionCheck + 쓰기 — 동일한 거래에서 항목에 대한 조건을 주장하고 Update/Delete도 주장하려고 했습니다. 대신 조건을 쓰기의 ConditionExpression에 접어 넣으세요.
  • 동일한 키에 두 번 쓰기 — 예: 동일한 항목에 대한 PutUpdate, 종종 키로 중복을 제거하지 않는 루프에서 발생합니다.
  • 중복 키가 포함된 생성된 배치 — ORM 또는 매핑 계층이 동일한 파티션+정렬 키를 두 번 내보냈습니다.
  • 다르다고 생각하는 테이블 전체에서 두 가지 다른 작업의 동일한 키 — 해당 항목은 고유하게 {table, PK, SK}입니다. 동일한 테이블 내의 반복이 이를 트리거합니다.

어떻게 해결하는가

  1. 트랜잭션을 생성하기 전에 기본 키로 중복 제거 — 각 {PK, SK}는 한 번만 나타날 수 있습니다.
  2. ConditionCheck를 쓰기에 병합 보호합니다. 별도의 ConditionCheck 작업을 추가하는 대신 해당 항목 자체의 ConditionExpression에 어설션을 넣습니다.
  3. 두 가지 작업 대신 단일 UpdateExpression(SET/ADD/REMOVE)을 사용하여 두 개의 돌연변이를 하나의 Update로 결합합니다.
  4. 작업이 실제로 하나의 작업으로 표현될 수 없는 경우 피할 수 없는 다단계 논리를 별도의 트랜잭션으로 분할하거나 쓰기합니다.
  5. 기본 키를 TransactItems 배열에 기록하세요. 생성된 배치에서 중복 키를 놓치기 쉽습니다. 전송하기 전에 각 {PK, SK}을 인쇄하세요.

먼저 DynoTable에서 확인

다중 항목 트랜잭션을 구축하기 전에 DynoTable에 대상 키를 나열하십시오. ⌘K로 테이블을 열고 각 기본 키가 작업 목록에서 고유한지 확인하세요. 스테이징(⌘S)을 사용하면 확장하기 전에 단일 항목 트랜잭션을 테스트할 수 있습니다.

Expression Builder을 사용하여 조건 검사를 쓰기로 병합합니다. ⌘P로 프로필을 전환합니다. Connect to AWSInstall를 참조하세요.

출처

관련 오류

참고 자료

위에 링크된 공식 AWS 문서를 기준으로 2026년 7월 13일에 마지막으로 확인되었습니다.

Console 없이 DynamoDB 작업하기

DynamoDB로는 실행할 수 없는 진짜 SQL(JOINs, GROUP BY, 집계)을 실행하는 빠른 DynamoDB 데스크톱 클라이언트. 시각적 편집과 여러분 자신의 Bedrock 키로 동작하는 AI 에이전트를 제공합니다.

30일 무료 체험, 신용카드 불필요 — 이후 기간 제한 없는 무료 요금제.