테이블에 지정된 인덱스가 없습니다.
TL;DR — Query/Scan의 IndexName가 해당 테이블(이 클라이언트의 지역 + 계정)에 존재하지 않거나, 철자가 틀리거나, GSI가 여전히 CREATING이고 아직 쿼리할 수 없습니다. DescribeTable로 정확한 인덱스 이름과 상태를 확인한 후 호출을 수정하세요.
무엇을 의미하는가
ValidationException: The table does not have the specified index: <IndexName>
# what the engine actually returns, reproduced against DynamoDB Local:
ValidationException: The table does not have the specified index: no-such-indexDynamoDB에 특정 보조 인덱스를 이름별로 Query 또는 Scan하도록 요청했는데, 이 클라이언트가 보는 대로 테이블에는 사용 가능한 상태에서 해당 이름의 인덱스가 없습니다. 이는 HTTP 400 ValidationException입니다. 클라이언트 측이며 이름/상태가 올바르기 전까지는 재시도할 수 없습니다.
왜 발생하는가
- 오타 또는 잘못된 대소문자 — 인덱스 이름은 대소문자를 구분합니다.
GSI1≠gsi1. - 인덱스는 다른 테이블에 속합니다 — 다른 테이블의 스키마에서
IndexName를 복사했습니다. - GSI는 아직
ACTIVE이 아닙니다 — 새로 생성된 글로벌 보조 인덱스는 상태가CREATING → ACTIVE(먼저 채우기)가 될 때까지 쿼리할 수 없습니다. - 잘못된 지역/계정 — 클라이언트가 테이블(또는 해당 인덱스)이 존재하지 않는 지역(the same lineup issue as a missing table)을 가리킵니다.
- DynamoDB 로컬 드리프트 — 인덱스 이전의 오래된 로컬
shared-local-instance.db입니다. 다시 만들어 보세요.
어떻게 해결하는가
실제 인덱스 이름과 상태를 나열합니다.
aws dynamodb describe-table --table-name <Table> \ --query "Table.GlobalSecondaryIndexes[].{Name:IndexName,Status:IndexStatus}"이름을 그대로
IndexName에 복사합니다. 대소문자를 정확히 일치시킵니다.ACTIVE을 기다립니다. GSI가CREATING인 경우 채우기가 완료된 후에만 쿼리가 작동합니다(DescribeTable는IndexStatus를 표시함).지역 + 계정을
aws sts get-caller-identity로 확인하고 클라이언트의region을 고정하세요.DynamoDB Local에서 로컬 db 파일을 삭제하고 테이블/인덱스 설정을 다시 실행하여 인덱스가 로컬에 존재하도록 합니다.
키 조건이 인덱스 스키마와 일치하는지 확인합니다. 잘못된 속성에 대한 키 조건이 있는 유효한 인덱스 이름은 여전히 실패하지만 다른 오류가 발생합니다. 이름/상태를 먼저 제외하세요.
여러 테이블과 인덱스에서 작업하시나요? DynoTable의 Table 대화 상자에는 각 테이블의 GSI와 상태가 나열되어 있으므로 이름을 추측하는 대신 실제로 존재하는 인덱스(ACTIVE)를 선택할 수 있습니다. 또한 필요한 인덱스가 실제로 존재하지 않을 때는 GSI를 생성하고 삭제할 수도 있습니다.
DynoTable에서 쿼리
⌘K를 사용하여 DynoTable에서 테이블을 열고 Indexes 패널을 확장합니다. 모든 GSI 이름과 IndexStatus은 CLI 호출 없이 나열됩니다. IndexName를 직접 입력하는 대신 쿼리 패널의 드롭다운에서 색인을 선택하세요. DynoTable은 연결된 테이블에 존재하는 인덱스만 제공합니다.
GSI가 여전히 CREATING이면 상태가 ACTIVE로 바뀔 때까지 사이드바에서 테이블 메타데이터를 새로 고칩니다. Query Builder를 사용하여 GSI 쿼리를 작성하고 생성된 IndexName를 SDK 코드에 복사합니다. 인덱스가 한 지역에만 있고 다른 지역에는 없는 경우 ⌘P로 프로필을 전환합니다. 설정: Connect to AWS, Install.
출처
- Managing Global Secondary Indexes in DynamoDB (2026-07-13 인증)
- Query — Amazon DynamoDB API Reference (2026-07-13 인증)
관련 오류
- ResourceNotFoundException — 인덱스뿐만 아니라 전체 테이블을 찾을 수 없습니다.
- Query key condition not supported — 인덱스가 존재하지만 키 조건이 잘못되었습니다.
- 코드 예: Query a GSI in Node.js — IndexName이 올바르게 연결되었습니다.
- 학습: GSI vs LSI · GSIs are eventually consistent · Indexes overview
참고 자료
- Managing Global Secondary Indexes in DynamoDB — Amazon DynamoDB Developer Guide
- Query — Amazon DynamoDB API Reference
- Error handling with DynamoDB — Amazon DynamoDB Developer Guide
위에 링크된 공식 AWS 문서를 기준으로 2026년 7월 13일에 마지막으로 확인되었습니다.