DynamoDB "Cannot Specify AttributesToGet When Select Is COUNT" — Select가 COUNT인 경우 프로젝션을 지정할 수 없습니다.
TL;DR — Query/Scan 세트는 Select: COUNT 및 ProjectionExpression(또는 기존 AttributesToGet)입니다. COUNT는 일치하는 항목의 수만 반환하고 항목 자체는 반환하지 않으므로 반환할 속성의 이름을 지정하는 것이 모순됩니다. DynamoDB는 이를 거부합니다. 하나를 선택하십시오: 투영이 없는 Select: COUNT 또는 Select: SPECIFIC_ATTRIBUTES가 있는 투영(ProjectionExpression을 제공할 때 기본값).
무엇을 의미하는가
ValidationException: 1 validation error detected: Cannot specify the AttributesToGet when choosing to get only the Count
# what the engine actually returns, reproduced against DynamoDB Local:
ValidationException: 1 validation error detected: Cannot specify the ProjectionExpression when choosing to get only the Count(이것은 레거시 AttributesToGet 매개변수가 포함된 메시지입니다. ProjectionExpression의 경우 표현은 다르지만 규칙은 동일합니다.) Select는 읽기가 반환하는 내용을 제어합니다. COUNT은 DynamoDB에 집계(Count/ScannedCount)를 요청하고 항목 데이터는 요청하지 않습니다. ProjectionExpression/AttributesToGet은 반품된 품목의 특정 속성을 묻습니다. 이 둘은 상호 배타적입니다. Query API 참조에서는 다음과 같이 설명합니다. "ProjectionExpression 매개변수를 사용하는 경우 Select의 값은 SPECIFIC_ATTRIBUTES만 될 수 있습니다. Select의 다른 값은 오류를 반환합니다." 한 가지 비용 참고 사항: COUNT는 여전히 항목을 실제로 가져오는 것과 동일한 읽기 용량을 소비합니다. 즉, RCU가 아닌 대역폭을 절약합니다.
왜 발생하는가
- 두 매개변수를 동시에 설정 —
ProjectionExpression가 추가되는 동안Select: COUNT는 그대로 유지됩니다(또는 그 반대). - 레거시
AttributesToGet가Select: COUNT과 결합되었습니다. - 호출자가 개수만 원하는 경우에도 항상 프로젝션을 첨부하는 쿼리 빌더입니다.
- 오해
Select—COUNT도 계산한 항목을 돌려줄 것으로 예상합니다.
어떻게 해결하는가
- 그냥 계산만 하시나요? 투영을 삭제합니다.
Select: COUNT를 설정하고ProjectionExpression/AttributesToGet를 제거합니다. - 특정 속성이 필요합니까?
Select: COUNT를 삭제합니다.ProjectionExpression를 제공합니다. DynamoDB는 기본값Select~SPECIFIC_ATTRIBUTES이므로 일반적으로Select을 전혀 설정하지 않습니다. - 계수와 항목이 모두 필요합니까? 항목에 대해(투영 포함) 한 번 호출하고 해당 항목의
Count을 읽거나 별도의Select: COUNT호출을 수행합니다. AttributesToGet보다ProjectionExpression선호 — AWS는AttributesToGet를 레거시 매개변수로 표시하고 대신ProjectionExpression를 권장합니다.
DynoTable에서 열기
DynoTable의 쿼리 패널은 카운트 모드와 프로젝션을 분리합니다. 선택한 속성이 있는 항목을 가져오거나 일치하는 카운트를 읽습니다. 하나의 충돌 요청에서 둘 다 수행할 수는 없습니다. ⌘K가 있는 테이블을 열고 Query를 실행한 후 ProjectionExpression을 붙이지 않고 상태 표시줄에서 결과 개수를 확인합니다.
Query Builder을 사용하여 SDK 코드에 대한 투영 전용 또는 계산 전용 요청을 생성합니다. ⌘P로 프로필을 전환합니다. 설정 → 프로필에서 연결 테스트를 사용하여 구성합니다. Connect to AWS 및 Install를 참조하세요.
출처
- Query — Amazon DynamoDB API Reference (2026-07-13 검증)
- AttributesToGet (legacy) (2026-07-13 검증)
관련 오류
- Cannot use both expression and non-expression parameters — 레거시 및 표현식 매개변수를 혼합합니다.
- Query key condition not supported — 동일한 요청에 대한 잘못된 키 조건입니다.
- 학습: Count, sum & aggregate · Projection expressions
참고 자료
- Query — Amazon DynamoDB API Reference
- Scan — Amazon DynamoDB API Reference
- AttributesToGet (legacy) — Amazon DynamoDB Developer Guide
- Error handling with DynamoDB — Amazon DynamoDB Developer Guide
위에 링크된 공식 AWS 문서를 기준으로 2026년 7월 13일에 마지막으로 확인되었습니다.