web/Spring

dynamoDbEnhancedClient range query condition 사용 시 The provided starting key does not match the range key predicate 에러 발생

반응형

이전글에서 QueryConditional에서 range로 requestDateTime의 값을 sortkey로 구간 조건으로 조회를 했었다. 근데 dynamodb 특성상 페이징을 하기 위해서는 exclusiveStartKey값을 이용해서 마지막 이후 부터 값을 읽도록 쿼리를 수행해야한다.

 

하지만 작성한 쿼리로 로직을 수행하던중 The provided starting key does not match the range key 에러가 발생했다. 삽질을 계속 하던 중 query condition에서 사용했던 sortkey range구간을 벗어나는 값을 넣었을 경우에 발생했다. 

 

만약 range query condition을 사용할 경우 range구간을 벗어나는 값을 exclusiveStartKey값으로 넣지 않도록 조심해야한다.

 

찾아본 비슷한 사례 

https://github.com/aws/aws-sdk-ruby/issues/2456

 

Erroneous DynamoDB SDK Validation Exception on a Query with a start key and a key condition with 'greater than or equals to' ·

Confirm by changing [ ] to [x] below to ensure that it's a bug: I've gone though Developer Guide for v3 and API reference I've checked AWS Forums and StackOverflow for answers I've ...

github.com

https://note.kiriukun.com/entry/20200530-the-provided-starting-key-does-not-match-the-range-key-predicate-in-dynamodb

 

AWS DynamoDBのqueryで「The provided starting key does not match the range key predicate」エラー

KeyConditionExpression でソートキーを範囲指定 (>= など) してる時に、ExclusiveStartKey で指定した開始位置が、範囲指定のスタート位置より外側である場合に発生する。 ↓こういうの。そういえば以

note.kiriukun.com

 

반응형