getShardIterator method
Future<GetShardIteratorOutput>
getShardIterator({
- required String shardId,
- required ShardIteratorType shardIteratorType,
- required String streamArn,
- String? sequenceNumber,
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 ResourceNotFoundException. May throw InternalServerError. 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 {
ArgumentError.checkNotNull(shardId, 'shardId');
_s.validateStringLength(
'shardId',
shardId,
28,
65,
isRequired: true,
);
ArgumentError.checkNotNull(shardIteratorType, 'shardIteratorType');
ArgumentError.checkNotNull(streamArn, 'streamArn');
_s.validateStringLength(
'streamArn',
streamArn,
37,
1024,
isRequired: true,
);
_s.validateStringLength(
'sequenceNumber',
sequenceNumber,
21,
40,
);
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.toValue(),
'StreamArn': streamArn,
if (sequenceNumber != null) 'SequenceNumber': sequenceNumber,
},
);
return GetShardIteratorOutput.fromJson(jsonResponse.body);
}