생성 중인 GSI를 수정하려고 시도하는 중
TL;DR — 글로벌 보조 인덱스가 구축되는 동안(IndexStatus = CREATING) DynamoDB는 충돌하는 구조 변경을 거부합니다. 초기 리소스 할당 단계에서는 새 인덱스를 수정하거나, 인덱스 또는 테이블의 프로비저닝된 처리량을 변경하거나, 다른 인덱스를 추가 또는 삭제하거나, 테이블을 삭제할 수 없습니다. 채우기가 시작되면 진행 중인 인덱스를 삭제하거나 테이블/GSI 처리량을 다시 변경할 수 있지만 다른 인덱스를 추가하거나 삭제하고 테이블 삭제는 ACTIVE가 될 때까지 차단된 상태로 유지됩니다. GSI를 한 번에 하나씩 변경합니다. UpdateTable당 하나씩 생성하거나 삭제합니다.
무엇을 의미하는가
ValidationException: Attempting to modify a GSI that is being created채워진 테이블에 GSI를 생성하면 백필이 트리거됩니다. DynamoDB는 백그라운드에서 기존 항목을 새 인덱스로 재생합니다. 해당 단계 전체에서 지수의 IndexStatus는 CREATING입니다. 채우기 중에 DynamoDB는 빌드의 일관성을 유지하기 위해 인덱스 또는 테이블에 대한 추가 구조적 변경을 거부합니다. 이는 HTTP 400 ValidationException입니다. 인덱스가 완료될 때까지 재시도가 즉시 실패합니다.
왜 발생하는가
- 중복 인덱스 작업 —
UpdateTable(또는 IaC 적용)은 첫 번째 GSI가 아직 구축 중인 동안 GSI를 수정/삭제하거나 두 번째 GSI를 추가하려고 시도합니다. - CloudFormation/Terraform 일괄 처리 — 도구는 단일 업데이트에서 여러 GSI 변경을 시도합니다. DynamoDB는
UpdateTable당 하나의 GSI 생성 또는 삭제만 허용합니다. - 리소스 할당 중 처리량 변경 — 새 인덱스가 여전히 리소스(
Backfilling: false)를 할당하는 동안에는 해당 인덱스 또는 테이블의 프로비저닝된 처리량을 수정할 수 없습니다. 채우기가 시작되면 이러한 변경 사항이 다시 허용됩니다. - 테이블을 너무 빨리 삭제 — 백필을 경주하는 분해입니다.
어떻게 해결하는가
ACTIVE을 기다립니다.DescribeTable을 폴링하고 각GlobalSecondaryIndexes[].IndexStatus을 확인합니다.ACTIVE일 때만 진행하세요.aws dynamodb describe-table --table-name <Table> \ --query "Table.GlobalSecondaryIndexes[].{Name:IndexName,Status:IndexStatus}"인덱스 설명에는
Backfilling부울(false = 리소스 할당, true = 채우기)도 포함되며OnlineIndexPercentageProgressCloudWatch 지표는 빌드를 추적합니다. 2. 순서 인덱스 변경 —UpdateTable당 1회 생성/삭제; 다른 GSI가 구축되는 동안 새 GSI를 추가하지 마세요. 3. CloudFormation/Terraform에서 GSI 추가 사항을 별도의 배포로 분할하여 다음 변경 전에 각 백필이 완료되도록 합니다. 4. 인덱스가ACTIVE이 될 때까지 다른 인덱스 변경 및 테이블 삭제를 연기하세요. 구제가 필요합니까? 백필이 시작되면 생성 중인 인덱스를 삭제하여 빌드를 취소할 수 있습니다.
DynoTable에서 재시도하기 전에
GSI가 CREATING인 동안 DynoTable에서 테이블을 열고 다른 UpdateTable를 대기열에 추가하기 전에 테이블 세부 정보에서 인덱스 상태를 확인하세요. 탐색할 때 앱이 DescribeTable를 새로 고칩니다. IndexStatus이 ACTIVE로 바뀌면 인덱스가 쿼리 패턴 선택기에 나타나고 시각적 모드나 query builder에서 쿼리할 수 있습니다.
DynoTable에 여전히 CREATING가 표시되는 동안 CloudFormation/Terraform GSI 변경 사항을 한 번에 적용하지 마십시오. 시퀀스 배포; 적용 사이의 실측 상태 패널로 DynoTable을 사용합니다. 백필이 시작된 후 빌드를 취소해야 하는 경우 IaC/CLI에서 해당 인덱스를 삭제한 다음 DynoTable 인덱스 목록에서 사라지는지 확인하세요.
출처
- Managing Global Secondary Indexes (2026-07-13 인증)
- UpdateTable — Amazon DynamoDB API Reference (2026-07-13 인증)
관련 오류
- Local secondary indexes must be specified at table creation — LSI에 해당합니다(LSI는 전혀 추가할 수 없습니다).
- ResourceInUseException — 수정 가능한 상태가 아닌 테이블/인덱스에서 작동합니다.
- Requested resource not found / index not found — 준비되지 않았거나 존재하지 않는 인덱스를 쿼리합니다.
- 학습: GSI vs LSI · GSI internals
참고 자료
- Managing Global Secondary Indexes in DynamoDB — Amazon DynamoDB Developer Guide
- UpdateTable — Amazon DynamoDB API Reference
- Error handling with DynamoDB — Amazon DynamoDB Developer Guide
위에 링크된 공식 AWS 문서를 기준으로 2026년 7월 13일에 마지막으로 확인되었습니다.