
software.amazon.awssdk.services.dynamodb.streams.DynamoDbStreamsAsyncClient 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.concurrent.CompletableFuture;
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.services.dynamodb.model.DescribeStreamRequest;
import software.amazon.awssdk.services.dynamodb.model.DescribeStreamResponse;
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.ListStreamsRequest;
import software.amazon.awssdk.services.dynamodb.model.ListStreamsResponse;
/**
* Service client for accessing Amazon DynamoDB Streams asynchronously. 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 DynamoDbStreamsAsyncClient 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 A Java Future containing the result of the DescribeStream operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following
* exceptions.
*
* - 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
.
* - InternalServerErrorException An error occurred on the server side.
* - SdkException Base class for all exceptions that can be thrown by the SDK (both service and client).
* Can be used for catch all scenarios.
* - SdkClientException If any client side error occurs such as an IO related failure, failure to get
* credentials, etc.
* - DynamoDbStreamsException Base class for all service exceptions. Unknown exceptions will be thrown as
* an instance of this type.
*
* @sample DynamoDbStreamsAsyncClient.DescribeStream
* @see AWS API Documentation
*/
default CompletableFuture describeStream(DescribeStreamRequest describeStreamRequest) {
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 software.amazon.awssdk.services.dynamodb.model.DescribeStreamRequest.Builder} to create a request.
* Represents the input of a DescribeStream
operation.
* @return A Java Future containing the result of the DescribeStream operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following
* exceptions.
*
* - 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
.
* - InternalServerErrorException An error occurred on the server side.
* - SdkException Base class for all exceptions that can be thrown by the SDK (both service and client).
* Can be used for catch all scenarios.
* - SdkClientException If any client side error occurs such as an IO related failure, failure to get
* credentials, etc.
* - DynamoDbStreamsException Base class for all service exceptions. Unknown exceptions will be thrown as
* an instance of this type.
*
* @sample DynamoDbStreamsAsyncClient.DescribeStream
* @see AWS API Documentation
*/
default CompletableFuture describeStream(Consumer describeStreamRequest) {
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 A Java Future containing the result of the GetRecords operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following
* exceptions.
*
* - 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
.
* - 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.
* - InternalServerErrorException An error occurred on the server side.
* - 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.
* - 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.
*
*
* - SdkException Base class for all exceptions that can be thrown by the SDK (both service and client).
* Can be used for catch all scenarios.
* - SdkClientException If any client side error occurs such as an IO related failure, failure to get
* credentials, etc.
* - DynamoDbStreamsException Base class for all service exceptions. Unknown exceptions will be thrown as
* an instance of this type.
*
* @sample DynamoDbStreamsAsyncClient.GetRecords
* @see AWS
* API Documentation
*/
default CompletableFuture getRecords(GetRecordsRequest getRecordsRequest) {
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 software.amazon.awssdk.services.dynamodb.model.GetRecordsRequest.Builder} to create a request.
* Represents the input of a GetRecords
operation.
* @return A Java Future containing the result of the GetRecords operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following
* exceptions.
*
* - 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
.
* - 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.
* - InternalServerErrorException An error occurred on the server side.
* - 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.
* - 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.
*
*
* - SdkException Base class for all exceptions that can be thrown by the SDK (both service and client).
* Can be used for catch all scenarios.
* - SdkClientException If any client side error occurs such as an IO related failure, failure to get
* credentials, etc.
* - DynamoDbStreamsException Base class for all service exceptions. Unknown exceptions will be thrown as
* an instance of this type.
*
* @sample DynamoDbStreamsAsyncClient.GetRecords
* @see AWS
* API Documentation
*/
default CompletableFuture getRecords(Consumer getRecordsRequest) {
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 A Java Future containing the result of the GetShardIterator operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following
* exceptions.
*
* - 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
.
* - InternalServerErrorException An error occurred on the server side.
* - 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.
*
*
* - SdkException Base class for all exceptions that can be thrown by the SDK (both service and client).
* Can be used for catch all scenarios.
* - SdkClientException If any client side error occurs such as an IO related failure, failure to get
* credentials, etc.
* - DynamoDbStreamsException Base class for all service exceptions. Unknown exceptions will be thrown as
* an instance of this type.
*
* @sample DynamoDbStreamsAsyncClient.GetShardIterator
* @see AWS API Documentation
*/
default CompletableFuture getShardIterator(GetShardIteratorRequest getShardIteratorRequest) {
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 software.amazon.awssdk.services.dynamodb.model.GetShardIteratorRequest.Builder} to create a
* request. Represents the input of a GetShardIterator
operation.
* @return A Java Future containing the result of the GetShardIterator operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following
* exceptions.
*
* - 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
.
* - InternalServerErrorException An error occurred on the server side.
* - 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.
*
*
* - SdkException Base class for all exceptions that can be thrown by the SDK (both service and client).
* Can be used for catch all scenarios.
* - SdkClientException If any client side error occurs such as an IO related failure, failure to get
* credentials, etc.
* - DynamoDbStreamsException Base class for all service exceptions. Unknown exceptions will be thrown as
* an instance of this type.
*
* @sample DynamoDbStreamsAsyncClient.GetShardIterator
* @see AWS API Documentation
*/
default CompletableFuture getShardIterator(
Consumer getShardIteratorRequest) {
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 A Java Future containing the result of the ListStreams operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following
* exceptions.
*
* - 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
.
* - InternalServerErrorException An error occurred on the server side.
* - SdkException Base class for all exceptions that can be thrown by the SDK (both service and client).
* Can be used for catch all scenarios.
* - SdkClientException If any client side error occurs such as an IO related failure, failure to get
* credentials, etc.
* - DynamoDbStreamsException Base class for all service exceptions. Unknown exceptions will be thrown as
* an instance of this type.
*
* @sample DynamoDbStreamsAsyncClient.ListStreams
* @see AWS
* API Documentation
*/
default CompletableFuture listStreams(ListStreamsRequest listStreamsRequest) {
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 software.amazon.awssdk.services.dynamodb.model.ListStreamsRequest.Builder} to create a request.
* Represents the input of a ListStreams
operation.
* @return A Java Future containing the result of the ListStreams operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following
* exceptions.
*
* - 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
.
* - InternalServerErrorException An error occurred on the server side.
* - SdkException Base class for all exceptions that can be thrown by the SDK (both service and client).
* Can be used for catch all scenarios.
* - SdkClientException If any client side error occurs such as an IO related failure, failure to get
* credentials, etc.
* - DynamoDbStreamsException Base class for all service exceptions. Unknown exceptions will be thrown as
* an instance of this type.
*
* @sample DynamoDbStreamsAsyncClient.ListStreams
* @see AWS
* API Documentation
*/
default CompletableFuture listStreams(Consumer listStreamsRequest) {
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 A Java Future containing the result of the ListStreams operation returned by the service.
* The CompletableFuture returned by this method can be completed exceptionally with the following
* exceptions.
*
* - 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
.
* - InternalServerErrorException An error occurred on the server side.
* - SdkException Base class for all exceptions that can be thrown by the SDK (both service and client).
* Can be used for catch all scenarios.
* - SdkClientException If any client side error occurs such as an IO related failure, failure to get
* credentials, etc.
* - DynamoDbStreamsException Base class for all service exceptions. Unknown exceptions will be thrown as
* an instance of this type.
*
* @sample DynamoDbStreamsAsyncClient.ListStreams
* @see AWS
* API Documentation
*/
default CompletableFuture listStreams() {
return listStreams(ListStreamsRequest.builder().build());
}
@Override
default DynamoDbStreamsServiceClientConfiguration serviceClientConfiguration() {
throw new UnsupportedOperationException();
}
/**
* Create a {@link DynamoDbStreamsAsyncClient} 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 DynamoDbStreamsAsyncClient create() {
return builder().build();
}
/**
* Create a builder that can be used to configure and create a {@link DynamoDbStreamsAsyncClient}.
*/
static DynamoDbStreamsAsyncClientBuilder builder() {
return new DefaultDynamoDbStreamsAsyncClientBuilder();
}
}