
software.amazon.awssdk.services.dynamodb.streams.DynamoDbStreamsClient Maven / Gradle / Ivy
/*
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance with
* the License. A copy of the License is located at
*
* http://aws.amazon.com/apache2.0
*
* or in the "license" file accompanying this file. This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
* CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions
* and limitations under the License.
*/
package software.amazon.awssdk.services.dynamodb.streams;
import java.util.function.Consumer;
import software.amazon.awssdk.annotations.Generated;
import software.amazon.awssdk.annotations.SdkPublicApi;
import software.amazon.awssdk.annotations.ThreadSafe;
import software.amazon.awssdk.awscore.AwsClient;
import software.amazon.awssdk.awscore.exception.AwsServiceException;
import software.amazon.awssdk.core.exception.SdkClientException;
import software.amazon.awssdk.regions.ServiceMetadata;
import software.amazon.awssdk.services.dynamodb.model.DescribeStreamRequest;
import software.amazon.awssdk.services.dynamodb.model.DescribeStreamResponse;
import software.amazon.awssdk.services.dynamodb.model.DynamoDbException;
import software.amazon.awssdk.services.dynamodb.model.ExpiredIteratorException;
import software.amazon.awssdk.services.dynamodb.model.GetRecordsRequest;
import software.amazon.awssdk.services.dynamodb.model.GetRecordsResponse;
import software.amazon.awssdk.services.dynamodb.model.GetShardIteratorRequest;
import software.amazon.awssdk.services.dynamodb.model.GetShardIteratorResponse;
import software.amazon.awssdk.services.dynamodb.model.InternalServerErrorException;
import software.amazon.awssdk.services.dynamodb.model.LimitExceededException;
import software.amazon.awssdk.services.dynamodb.model.ListStreamsRequest;
import software.amazon.awssdk.services.dynamodb.model.ListStreamsResponse;
import software.amazon.awssdk.services.dynamodb.model.ResourceNotFoundException;
import software.amazon.awssdk.services.dynamodb.model.TrimmedDataAccessException;
/**
* Service client for accessing Amazon DynamoDB Streams. This can be created using the static {@link #builder()} method.
*
* Amazon DynamoDB
*
* Amazon DynamoDB Streams provides API actions for accessing streams and processing stream records. To learn more about
* application development with Streams, see Capturing Table Activity with
* DynamoDB Streams in the Amazon DynamoDB Developer Guide.
*
*/
@Generated("software.amazon.awssdk:codegen")
@SdkPublicApi
@ThreadSafe
public interface DynamoDbStreamsClient extends AwsClient {
String SERVICE_NAME = "dynamodb";
/**
* Value for looking up the service's metadata from the
* {@link software.amazon.awssdk.regions.ServiceMetadataProvider}.
*/
String SERVICE_METADATA_ID = "streams.dynamodb";
/**
*
* Returns information about a stream, including the current status of the stream, its Amazon Resource Name (ARN),
* the composition of its shards, and its corresponding DynamoDB table.
*
*
*
* You can call DescribeStream
at a maximum rate of 10 times per second.
*
*
*
* Each shard in the stream has a SequenceNumberRange
associated with it. If the
* SequenceNumberRange
has a StartingSequenceNumber
but no
* EndingSequenceNumber
, then the shard is still open (able to receive more stream records). If both
* StartingSequenceNumber
and EndingSequenceNumber
are present, then that shard is closed
* and can no longer receive more data.
*
*
* @param describeStreamRequest
* Represents the input of a DescribeStream
operation.
* @return Result of the DescribeStream operation returned by the service.
* @throws ResourceNotFoundException
* The operation tried to access a nonexistent table or index. The resource might not be specified
* correctly, or its status might not be ACTIVE
.
* @throws InternalServerErrorException
* An error occurred on the server side.
* @throws SdkException
* Base class for all exceptions that can be thrown by the SDK (both service and client). Can be used for
* catch all scenarios.
* @throws SdkClientException
* If any client side error occurs such as an IO related failure, failure to get credentials, etc.
* @throws DynamoDbStreamsException
* Base class for all service exceptions. Unknown exceptions will be thrown as an instance of this type.
* @sample DynamoDbStreamsClient.DescribeStream
* @see AWS API Documentation
*/
default DescribeStreamResponse describeStream(DescribeStreamRequest describeStreamRequest) throws ResourceNotFoundException,
InternalServerErrorException, AwsServiceException, SdkClientException, DynamoDbException {
throw new UnsupportedOperationException();
}
/**
*
* Returns information about a stream, including the current status of the stream, its Amazon Resource Name (ARN),
* the composition of its shards, and its corresponding DynamoDB table.
*
*
*
* You can call DescribeStream
at a maximum rate of 10 times per second.
*
*
*
* Each shard in the stream has a SequenceNumberRange
associated with it. If the
* SequenceNumberRange
has a StartingSequenceNumber
but no
* EndingSequenceNumber
, then the shard is still open (able to receive more stream records). If both
* StartingSequenceNumber
and EndingSequenceNumber
are present, then that shard is closed
* and can no longer receive more data.
*
*
*
* This is a convenience which creates an instance of the {@link DescribeStreamRequest.Builder} avoiding the need to
* create one manually via {@link DescribeStreamRequest#builder()}
*
*
* @param describeStreamRequest
* A {@link Consumer} that will call methods on {@link DescribeStreamInput.Builder} to create a request.
* Represents the input of a DescribeStream
operation.
* @return Result of the DescribeStream operation returned by the service.
* @throws ResourceNotFoundException
* The operation tried to access a nonexistent table or index. The resource might not be specified
* correctly, or its status might not be ACTIVE
.
* @throws InternalServerErrorException
* An error occurred on the server side.
* @throws SdkException
* Base class for all exceptions that can be thrown by the SDK (both service and client). Can be used for
* catch all scenarios.
* @throws SdkClientException
* If any client side error occurs such as an IO related failure, failure to get credentials, etc.
* @throws DynamoDbStreamsException
* Base class for all service exceptions. Unknown exceptions will be thrown as an instance of this type.
* @sample DynamoDbStreamsClient.DescribeStream
* @see AWS API Documentation
*/
default DescribeStreamResponse describeStream(Consumer describeStreamRequest)
throws ResourceNotFoundException, InternalServerErrorException, AwsServiceException, SdkClientException,
DynamoDbException {
return describeStream(DescribeStreamRequest.builder().applyMutation(describeStreamRequest).build());
}
/**
*
* Retrieves the stream records from a given shard.
*
*
* Specify a shard iterator using the ShardIterator
parameter. The shard iterator specifies the
* position in the shard from which you want to start reading stream records sequentially. If there are no stream
* records available in the portion of the shard that the iterator points to, GetRecords
returns an
* empty list. Note that it might take multiple calls to get to a portion of the shard that contains stream records.
*
*
*
* GetRecords
can retrieve a maximum of 1 MB of data or 1000 stream records, whichever comes first.
*
*
*
* @param getRecordsRequest
* Represents the input of a GetRecords
operation.
* @return Result of the GetRecords operation returned by the service.
* @throws ResourceNotFoundException
* The operation tried to access a nonexistent table or index. The resource might not be specified
* correctly, or its status might not be ACTIVE
.
* @throws LimitExceededException
* There is no limit to the number of daily on-demand backups that can be taken.
*
* For most purposes, up to 500 simultaneous table operations are allowed per account. These operations
* include CreateTable
, UpdateTable
, DeleteTable
,
* UpdateTimeToLive
, RestoreTableFromBackup
, and
* RestoreTableToPointInTime
.
*
*
* When you are creating a table with one or more secondary indexes, you can have up to 250 such requests
* running at a time. However, if the table or index specifications are complex, then DynamoDB might
* temporarily reduce the number of concurrent operations.
*
*
* When importing into DynamoDB, up to 50 simultaneous import table operations are allowed per account.
*
*
* There is a soft account quota of 2,500 tables.
*
*
* GetRecords was called with a value of more than 1000 for the limit request parameter.
*
*
* More than 2 processes are reading from the same streams shard at the same time. Exceeding this limit may
* result in request throttling.
* @throws InternalServerErrorException
* An error occurred on the server side.
* @throws ExpiredIteratorException
* The shard iterator has expired and can no longer be used to retrieve stream records. A shard iterator
* expires 15 minutes after it is retrieved using the GetShardIterator
action.
* @throws TrimmedDataAccessException
* The operation attempted to read past the oldest stream record in a 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. You might receive a TrimmedDataAccessException
* if:
*
*
* -
*
* You request a shard iterator with a sequence number older than the trim point (24 hours).
*
*
* -
*
* You obtain a shard iterator, but before you use the iterator in a GetRecords
request, a
* stream record in the shard exceeds the 24 hour period and is trimmed. This causes the iterator to access
* a record that no longer exists.
*
*
* @throws SdkException
* Base class for all exceptions that can be thrown by the SDK (both service and client). Can be used for
* catch all scenarios.
* @throws SdkClientException
* If any client side error occurs such as an IO related failure, failure to get credentials, etc.
* @throws DynamoDbStreamsException
* Base class for all service exceptions. Unknown exceptions will be thrown as an instance of this type.
* @sample DynamoDbStreamsClient.GetRecords
* @see AWS
* API Documentation
*/
default GetRecordsResponse getRecords(GetRecordsRequest getRecordsRequest) throws ResourceNotFoundException,
LimitExceededException, InternalServerErrorException, ExpiredIteratorException, TrimmedDataAccessException,
AwsServiceException, SdkClientException, DynamoDbException {
throw new UnsupportedOperationException();
}
/**
*
* Retrieves the stream records from a given shard.
*
*
* Specify a shard iterator using the ShardIterator
parameter. The shard iterator specifies the
* position in the shard from which you want to start reading stream records sequentially. If there are no stream
* records available in the portion of the shard that the iterator points to, GetRecords
returns an
* empty list. Note that it might take multiple calls to get to a portion of the shard that contains stream records.
*
*
*
* GetRecords
can retrieve a maximum of 1 MB of data or 1000 stream records, whichever comes first.
*
*
*
* This is a convenience which creates an instance of the {@link GetRecordsRequest.Builder} avoiding the need to
* create one manually via {@link GetRecordsRequest#builder()}
*
*
* @param getRecordsRequest
* A {@link Consumer} that will call methods on {@link GetRecordsInput.Builder} to create a request.
* Represents the input of a GetRecords
operation.
* @return Result of the GetRecords operation returned by the service.
* @throws ResourceNotFoundException
* The operation tried to access a nonexistent table or index. The resource might not be specified
* correctly, or its status might not be ACTIVE
.
* @throws LimitExceededException
* There is no limit to the number of daily on-demand backups that can be taken.
*
* For most purposes, up to 500 simultaneous table operations are allowed per account. These operations
* include CreateTable
, UpdateTable
, DeleteTable
,
* UpdateTimeToLive
, RestoreTableFromBackup
, and
* RestoreTableToPointInTime
.
*
*
* When you are creating a table with one or more secondary indexes, you can have up to 250 such requests
* running at a time. However, if the table or index specifications are complex, then DynamoDB might
* temporarily reduce the number of concurrent operations.
*
*
* When importing into DynamoDB, up to 50 simultaneous import table operations are allowed per account.
*
*
* There is a soft account quota of 2,500 tables.
*
*
* GetRecords was called with a value of more than 1000 for the limit request parameter.
*
*
* More than 2 processes are reading from the same streams shard at the same time. Exceeding this limit may
* result in request throttling.
* @throws InternalServerErrorException
* An error occurred on the server side.
* @throws ExpiredIteratorException
* The shard iterator has expired and can no longer be used to retrieve stream records. A shard iterator
* expires 15 minutes after it is retrieved using the GetShardIterator
action.
* @throws TrimmedDataAccessException
* The operation attempted to read past the oldest stream record in a 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. You might receive a TrimmedDataAccessException
* if:
*
*
* -
*
* You request a shard iterator with a sequence number older than the trim point (24 hours).
*
*
* -
*
* You obtain a shard iterator, but before you use the iterator in a GetRecords
request, a
* stream record in the shard exceeds the 24 hour period and is trimmed. This causes the iterator to access
* a record that no longer exists.
*
*
* @throws SdkException
* Base class for all exceptions that can be thrown by the SDK (both service and client). Can be used for
* catch all scenarios.
* @throws SdkClientException
* If any client side error occurs such as an IO related failure, failure to get credentials, etc.
* @throws DynamoDbStreamsException
* Base class for all service exceptions. Unknown exceptions will be thrown as an instance of this type.
* @sample DynamoDbStreamsClient.GetRecords
* @see AWS
* API Documentation
*/
default GetRecordsResponse getRecords(Consumer getRecordsRequest)
throws ResourceNotFoundException, LimitExceededException, InternalServerErrorException, ExpiredIteratorException,
TrimmedDataAccessException, AwsServiceException, SdkClientException, DynamoDbException {
return getRecords(GetRecordsRequest.builder().applyMutation(getRecordsRequest).build());
}
/**
*
* 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.
*
*
*
* A shard iterator expires 15 minutes after it is returned to the requester.
*
*
*
* @param getShardIteratorRequest
* Represents the input of a GetShardIterator
operation.
* @return Result of the GetShardIterator operation returned by the service.
* @throws ResourceNotFoundException
* The operation tried to access a nonexistent table or index. The resource might not be specified
* correctly, or its status might not be ACTIVE
.
* @throws InternalServerErrorException
* An error occurred on the server side.
* @throws TrimmedDataAccessException
* The operation attempted to read past the oldest stream record in a 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. You might receive a TrimmedDataAccessException
* if:
*
*
* -
*
* You request a shard iterator with a sequence number older than the trim point (24 hours).
*
*
* -
*
* You obtain a shard iterator, but before you use the iterator in a GetRecords
request, a
* stream record in the shard exceeds the 24 hour period and is trimmed. This causes the iterator to access
* a record that no longer exists.
*
*
* @throws SdkException
* Base class for all exceptions that can be thrown by the SDK (both service and client). Can be used for
* catch all scenarios.
* @throws SdkClientException
* If any client side error occurs such as an IO related failure, failure to get credentials, etc.
* @throws DynamoDbStreamsException
* Base class for all service exceptions. Unknown exceptions will be thrown as an instance of this type.
* @sample DynamoDbStreamsClient.GetShardIterator
* @see AWS API Documentation
*/
default GetShardIteratorResponse getShardIterator(GetShardIteratorRequest getShardIteratorRequest)
throws ResourceNotFoundException, InternalServerErrorException, TrimmedDataAccessException, AwsServiceException,
SdkClientException, DynamoDbException {
throw new UnsupportedOperationException();
}
/**
*
* 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.
*
*
*
* A shard iterator expires 15 minutes after it is returned to the requester.
*
*
*
* This is a convenience which creates an instance of the {@link GetShardIteratorRequest.Builder} avoiding the need
* to create one manually via {@link GetShardIteratorRequest#builder()}
*
*
* @param getShardIteratorRequest
* A {@link Consumer} that will call methods on {@link GetShardIteratorInput.Builder} to create a request.
* Represents the input of a GetShardIterator
operation.
* @return Result of the GetShardIterator operation returned by the service.
* @throws ResourceNotFoundException
* The operation tried to access a nonexistent table or index. The resource might not be specified
* correctly, or its status might not be ACTIVE
.
* @throws InternalServerErrorException
* An error occurred on the server side.
* @throws TrimmedDataAccessException
* The operation attempted to read past the oldest stream record in a 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. You might receive a TrimmedDataAccessException
* if:
*
*
* -
*
* You request a shard iterator with a sequence number older than the trim point (24 hours).
*
*
* -
*
* You obtain a shard iterator, but before you use the iterator in a GetRecords
request, a
* stream record in the shard exceeds the 24 hour period and is trimmed. This causes the iterator to access
* a record that no longer exists.
*
*
* @throws SdkException
* Base class for all exceptions that can be thrown by the SDK (both service and client). Can be used for
* catch all scenarios.
* @throws SdkClientException
* If any client side error occurs such as an IO related failure, failure to get credentials, etc.
* @throws DynamoDbStreamsException
* Base class for all service exceptions. Unknown exceptions will be thrown as an instance of this type.
* @sample DynamoDbStreamsClient.GetShardIterator
* @see AWS API Documentation
*/
default GetShardIteratorResponse getShardIterator(Consumer getShardIteratorRequest)
throws ResourceNotFoundException, InternalServerErrorException, TrimmedDataAccessException, AwsServiceException,
SdkClientException, DynamoDbException {
return getShardIterator(GetShardIteratorRequest.builder().applyMutation(getShardIteratorRequest).build());
}
/**
*
* Returns an array of stream ARNs associated with the current account and endpoint. If the TableName
* parameter is present, then ListStreams
will return only the streams ARNs for that table.
*
*
*
* You can call ListStreams
at a maximum rate of 5 times per second.
*
*
*
* @param listStreamsRequest
* Represents the input of a ListStreams
operation.
* @return Result of the ListStreams operation returned by the service.
* @throws ResourceNotFoundException
* The operation tried to access a nonexistent table or index. The resource might not be specified
* correctly, or its status might not be ACTIVE
.
* @throws InternalServerErrorException
* An error occurred on the server side.
* @throws SdkException
* Base class for all exceptions that can be thrown by the SDK (both service and client). Can be used for
* catch all scenarios.
* @throws SdkClientException
* If any client side error occurs such as an IO related failure, failure to get credentials, etc.
* @throws DynamoDbStreamsException
* Base class for all service exceptions. Unknown exceptions will be thrown as an instance of this type.
* @sample DynamoDbStreamsClient.ListStreams
* @see AWS
* API Documentation
*/
default ListStreamsResponse listStreams(ListStreamsRequest listStreamsRequest) throws ResourceNotFoundException,
InternalServerErrorException, AwsServiceException, SdkClientException, DynamoDbException {
throw new UnsupportedOperationException();
}
/**
*
* Returns an array of stream ARNs associated with the current account and endpoint. If the TableName
* parameter is present, then ListStreams
will return only the streams ARNs for that table.
*
*
*
* You can call ListStreams
at a maximum rate of 5 times per second.
*
*
*
* This is a convenience which creates an instance of the {@link ListStreamsRequest.Builder} avoiding the need to
* create one manually via {@link ListStreamsRequest#builder()}
*
*
* @param listStreamsRequest
* A {@link Consumer} that will call methods on {@link ListStreamsInput.Builder} to create a request.
* Represents the input of a ListStreams
operation.
* @return Result of the ListStreams operation returned by the service.
* @throws ResourceNotFoundException
* The operation tried to access a nonexistent table or index. The resource might not be specified
* correctly, or its status might not be ACTIVE
.
* @throws InternalServerErrorException
* An error occurred on the server side.
* @throws SdkException
* Base class for all exceptions that can be thrown by the SDK (both service and client). Can be used for
* catch all scenarios.
* @throws SdkClientException
* If any client side error occurs such as an IO related failure, failure to get credentials, etc.
* @throws DynamoDbStreamsException
* Base class for all service exceptions. Unknown exceptions will be thrown as an instance of this type.
* @sample DynamoDbStreamsClient.ListStreams
* @see AWS
* API Documentation
*/
default ListStreamsResponse listStreams(Consumer listStreamsRequest)
throws ResourceNotFoundException, InternalServerErrorException, AwsServiceException, SdkClientException,
DynamoDbException {
return listStreams(ListStreamsRequest.builder().applyMutation(listStreamsRequest).build());
}
/**
*
* Returns an array of stream ARNs associated with the current account and endpoint. If the TableName
* parameter is present, then ListStreams
will return only the streams ARNs for that table.
*
*
*
* You can call ListStreams
at a maximum rate of 5 times per second.
*
*
*
* @return Result of the ListStreams operation returned by the service.
* @throws ResourceNotFoundException
* The operation tried to access a nonexistent table or index. The resource might not be specified
* correctly, or its status might not be ACTIVE
.
* @throws InternalServerErrorException
* An error occurred on the server side.
* @throws SdkException
* Base class for all exceptions that can be thrown by the SDK (both service and client). Can be used for
* catch all scenarios.
* @throws SdkClientException
* If any client side error occurs such as an IO related failure, failure to get credentials, etc.
* @throws DynamoDbStreamsException
* Base class for all service exceptions. Unknown exceptions will be thrown as an instance of this type.
* @sample DynamoDbStreamsClient.ListStreams
* @see #listStreams(ListStreamsRequest)
* @see AWS
* API Documentation
*/
default ListStreamsResponse listStreams() throws ResourceNotFoundException, InternalServerErrorException,
AwsServiceException, SdkClientException, DynamoDbException {
return listStreams(ListStreamsRequest.builder().build());
}
/**
* Create a {@link DynamoDbStreamsClient} with the region loaded from the
* {@link software.amazon.awssdk.regions.providers.DefaultAwsRegionProviderChain} and credentials loaded from the
* {@link software.amazon.awssdk.auth.credentials.DefaultCredentialsProvider}.
*/
static DynamoDbStreamsClient create() {
return builder().build();
}
/**
* Create a builder that can be used to configure and create a {@link DynamoDbStreamsClient}.
*/
static DynamoDbStreamsClientBuilder builder() {
return new DefaultDynamoDbStreamsClientBuilder();
}
static ServiceMetadata serviceMetadata() {
return ServiceMetadata.of(SERVICE_METADATA_ID);
}
@Override
default DynamoDbStreamsServiceClientConfiguration serviceClientConfiguration() {
throw new UnsupportedOperationException();
}
}