Adding support for AT_SEQUENCE_NUMBER and AFTER_SEQUENCE_NUMBER

Adding support on DynamoDB Streams for AT_SEQUENCE_NUMBER
 and AFTER_SEQUENCE_NUMBER ShardIteratorType

Change SequenceNumber type to string instead of int to match documentation
This commit is contained in:
Daniel Guerrero 2019-07-29 21:13:58 -05:00
commit 7091be8eae
4 changed files with 64 additions and 3 deletions

View file

@ -39,7 +39,7 @@ class ShardIterator(BaseModel):
def get(self, limit=1000):
items = self.stream_shard.get(self.sequence_number, limit)
try:
last_sequence_number = max(i['dynamodb']['SequenceNumber'] for i in items)
last_sequence_number = max(int(i['dynamodb']['SequenceNumber']) for i in items)
new_shard_iterator = ShardIterator(self.streams_backend,
self.stream_shard,
'AFTER_SEQUENCE_NUMBER',

View file

@ -23,8 +23,13 @@ class DynamoDBStreamsHandler(BaseResponse):
arn = self._get_param('StreamArn')
shard_id = self._get_param('ShardId')
shard_iterator_type = self._get_param('ShardIteratorType')
sequence_number = self._get_param('SequenceNumber')
#according to documentation sequence_number param should be string
if isinstance(sequence_number, str):
sequence_number = int(sequence_number)
return self.backend.get_shard_iterator(arn, shard_id,
shard_iterator_type)
shard_iterator_type, sequence_number)
def get_records(self):
arn = self._get_param('ShardIterator')