getShardIterator method

Future<GetShardIteratorOutput> getShardIterator({
  1. required String shardId,
  2. required ShardIteratorType shardIteratorType,
  3. required String streamArn,
  4. 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);
}