getShardIterator method
Returns a shard iterator. A shard iterator provides information about how
to retrieve the stream records from within a shard. Use the shard iterator
in a subsequent GetRecords request to read the stream records
from the shard.
May throw InternalServerError.
May throw ResourceNotFoundException.
May throw TrimmedDataAccessException.
Parameter shardId :
The identifier of the shard. The iterator will be returned for this shard
ID.
Parameter shardIteratorType :
Determines how the shard iterator is used to start reading stream records
from the shard:
-
AT_SEQUENCE_NUMBER- Start reading exactly from the position denoted by a specific sequence number. -
AFTER_SEQUENCE_NUMBER- Start reading right after the position denoted by a specific sequence number. -
TRIM_HORIZON- Start reading at the last (untrimmed) stream record, which is the oldest record in the shard. In DynamoDB Streams, there is a 24 hour limit on data retention. Stream records whose age exceeds this limit are subject to removal (trimming) from the stream. -
LATEST- Start reading just after the most recent stream record in the shard, so that you always read the most recent data in the shard.
Parameter streamArn :
The Amazon Resource Name (ARN) for the stream.
Parameter sequenceNumber :
The sequence number of a stream record in the shard from which to start
reading.
Implementation
Future<GetShardIteratorOutput> getShardIterator({
required String shardId,
required ShardIteratorType shardIteratorType,
required String streamArn,
String? sequenceNumber,
}) async {
final headers = <String, String>{
'Content-Type': 'application/x-amz-json-1.0',
'X-Amz-Target': 'DynamoDBStreams_20120810.GetShardIterator'
};
final jsonResponse = await _protocol.send(
method: 'POST',
requestUri: '/',
exceptionFnMap: _exceptionFns,
// TODO queryParams
headers: headers,
payload: {
'ShardId': shardId,
'ShardIteratorType': shardIteratorType.value,
'StreamArn': streamArn,
if (sequenceNumber != null) 'SequenceNumber': sequenceNumber,
},
);
return GetShardIteratorOutput.fromJson(jsonResponse.body);
}