/* * 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. */ /* * Do not modify this file. This file is generated from the dynamodbstreams-2012-08-10.normal.json service model. */ using System; using System.Runtime.ExceptionServices; using System.Threading; using System.Threading.Tasks; using System.Collections.Generic; using System.Net; using Amazon.DynamoDBv2.Model; using Amazon.DynamoDBv2.Model.Internal.MarshallTransformations; using Amazon.DynamoDBv2.Internal; using Amazon.Runtime; using Amazon.Runtime.Internal; using Amazon.Runtime.Internal.Auth; using Amazon.Runtime.Internal.Transform; namespace Amazon.DynamoDBv2 { /// /// Implementation for accessing DynamoDBStreams /// /// 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. /// /// public partial class AmazonDynamoDBStreamsClient : AmazonServiceClient, IAmazonDynamoDBStreams { private static IServiceMetadata serviceMetadata = new AmazonDynamoDBStreamsMetadata(); #region Constructors /// /// Constructs AmazonDynamoDBStreamsClient with the credentials loaded from the application's /// default configuration, and if unsuccessful from the Instance Profile service on an EC2 instance. /// /// Example App.config with credentials set. /// /// <?xml version="1.0" encoding="utf-8" ?> /// <configuration> /// <appSettings> /// <add key="AWSProfileName" value="AWS Default"/> /// </appSettings> /// </configuration> /// /// /// public AmazonDynamoDBStreamsClient() : base(FallbackCredentialsFactory.GetCredentials(), new AmazonDynamoDBStreamsConfig()) { } /// /// Constructs AmazonDynamoDBStreamsClient with the credentials loaded from the application's /// default configuration, and if unsuccessful from the Instance Profile service on an EC2 instance. /// /// Example App.config with credentials set. /// /// <?xml version="1.0" encoding="utf-8" ?> /// <configuration> /// <appSettings> /// <add key="AWSProfileName" value="AWS Default"/> /// </appSettings> /// </configuration> /// /// /// /// The region to connect. public AmazonDynamoDBStreamsClient(RegionEndpoint region) : base(FallbackCredentialsFactory.GetCredentials(), new AmazonDynamoDBStreamsConfig{RegionEndpoint = region}) { } /// /// Constructs AmazonDynamoDBStreamsClient with the credentials loaded from the application's /// default configuration, and if unsuccessful from the Instance Profile service on an EC2 instance. /// /// Example App.config with credentials set. /// /// <?xml version="1.0" encoding="utf-8" ?> /// <configuration> /// <appSettings> /// <add key="AWSProfileName" value="AWS Default"/> /// </appSettings> /// </configuration> /// /// /// /// The AmazonDynamoDBStreamsClient Configuration Object public AmazonDynamoDBStreamsClient(AmazonDynamoDBStreamsConfig config) : base(FallbackCredentialsFactory.GetCredentials(config), config){} /// /// Constructs AmazonDynamoDBStreamsClient with AWS Credentials /// /// AWS Credentials public AmazonDynamoDBStreamsClient(AWSCredentials credentials) : this(credentials, new AmazonDynamoDBStreamsConfig()) { } /// /// Constructs AmazonDynamoDBStreamsClient with AWS Credentials /// /// AWS Credentials /// The region to connect. public AmazonDynamoDBStreamsClient(AWSCredentials credentials, RegionEndpoint region) : this(credentials, new AmazonDynamoDBStreamsConfig{RegionEndpoint = region}) { } /// /// Constructs AmazonDynamoDBStreamsClient with AWS Credentials and an /// AmazonDynamoDBStreamsClient Configuration object. /// /// AWS Credentials /// The AmazonDynamoDBStreamsClient Configuration Object public AmazonDynamoDBStreamsClient(AWSCredentials credentials, AmazonDynamoDBStreamsConfig clientConfig) : base(credentials, clientConfig) { } /// /// Constructs AmazonDynamoDBStreamsClient with AWS Access Key ID and AWS Secret Key /// /// AWS Access Key ID /// AWS Secret Access Key public AmazonDynamoDBStreamsClient(string awsAccessKeyId, string awsSecretAccessKey) : this(awsAccessKeyId, awsSecretAccessKey, new AmazonDynamoDBStreamsConfig()) { } /// /// Constructs AmazonDynamoDBStreamsClient with AWS Access Key ID and AWS Secret Key /// /// AWS Access Key ID /// AWS Secret Access Key /// The region to connect. public AmazonDynamoDBStreamsClient(string awsAccessKeyId, string awsSecretAccessKey, RegionEndpoint region) : this(awsAccessKeyId, awsSecretAccessKey, new AmazonDynamoDBStreamsConfig() {RegionEndpoint=region}) { } /// /// Constructs AmazonDynamoDBStreamsClient with AWS Access Key ID, AWS Secret Key and an /// AmazonDynamoDBStreamsClient Configuration object. /// /// AWS Access Key ID /// AWS Secret Access Key /// The AmazonDynamoDBStreamsClient Configuration Object public AmazonDynamoDBStreamsClient(string awsAccessKeyId, string awsSecretAccessKey, AmazonDynamoDBStreamsConfig clientConfig) : base(awsAccessKeyId, awsSecretAccessKey, clientConfig) { } /// /// Constructs AmazonDynamoDBStreamsClient with AWS Access Key ID and AWS Secret Key /// /// AWS Access Key ID /// AWS Secret Access Key /// AWS Session Token public AmazonDynamoDBStreamsClient(string awsAccessKeyId, string awsSecretAccessKey, string awsSessionToken) : this(awsAccessKeyId, awsSecretAccessKey, awsSessionToken, new AmazonDynamoDBStreamsConfig()) { } /// /// Constructs AmazonDynamoDBStreamsClient with AWS Access Key ID and AWS Secret Key /// /// AWS Access Key ID /// AWS Secret Access Key /// AWS Session Token /// The region to connect. public AmazonDynamoDBStreamsClient(string awsAccessKeyId, string awsSecretAccessKey, string awsSessionToken, RegionEndpoint region) : this(awsAccessKeyId, awsSecretAccessKey, awsSessionToken, new AmazonDynamoDBStreamsConfig{RegionEndpoint = region}) { } /// /// Constructs AmazonDynamoDBStreamsClient with AWS Access Key ID, AWS Secret Key and an /// AmazonDynamoDBStreamsClient Configuration object. /// /// AWS Access Key ID /// AWS Secret Access Key /// AWS Session Token /// The AmazonDynamoDBStreamsClient Configuration Object public AmazonDynamoDBStreamsClient(string awsAccessKeyId, string awsSecretAccessKey, string awsSessionToken, AmazonDynamoDBStreamsConfig clientConfig) : base(awsAccessKeyId, awsSecretAccessKey, awsSessionToken, clientConfig) { } #endregion #region Overrides /// /// Creates the signer for the service. /// protected override AbstractAWSSigner CreateSigner() { return new AWS4Signer(); } /// /// Customizes the runtime pipeline. /// /// Runtime pipeline for the current client. protected override void CustomizeRuntimePipeline(RuntimePipeline pipeline) { if(this.Config.RetryMode == RequestRetryMode.Legacy) { pipeline.ReplaceHandler(new Amazon.Runtime.Internal.RetryHandler(new Amazon.DynamoDBv2.Internal.DynamoDBRetryPolicy(this.Config))); } pipeline.RemoveHandler(); pipeline.AddHandlerAfter(new AmazonDynamoDBStreamsEndpointResolver()); } /// /// Capture metadata for the service. /// protected override IServiceMetadata ServiceMetadata { get { return serviceMetadata; } } #endregion #region Dispose /// /// Disposes the service client. /// protected override void Dispose(bool disposing) { base.Dispose(disposing); } #endregion #region DescribeStream internal virtual DescribeStreamResponse DescribeStream(DescribeStreamRequest request) { var options = new InvokeOptions(); options.RequestMarshaller = DescribeStreamRequestMarshaller.Instance; options.ResponseUnmarshaller = DescribeStreamResponseUnmarshaller.Instance; return Invoke(request, options); } /// /// 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. /// /// /// The Amazon Resource Name (ARN) for the stream. /// /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. /// /// /// The response from the DescribeStream service method, as returned by DynamoDBStreams. /// /// An error occurred on the server side. /// /// /// The operation tried to access a nonexistent table or index. The resource might not /// be specified correctly, or its status might not be ACTIVE. /// /// REST API Reference for DescribeStream Operation public virtual Task DescribeStreamAsync(string streamArn, System.Threading.CancellationToken cancellationToken = default(CancellationToken)) { var request = new DescribeStreamRequest(); request.StreamArn = streamArn; return DescribeStreamAsync(request, cancellationToken); } /// /// 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. /// /// /// Container for the necessary parameters to execute the DescribeStream service method. /// /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. /// /// /// The response from the DescribeStream service method, as returned by DynamoDBStreams. /// /// An error occurred on the server side. /// /// /// The operation tried to access a nonexistent table or index. The resource might not /// be specified correctly, or its status might not be ACTIVE. /// /// REST API Reference for DescribeStream Operation public virtual Task DescribeStreamAsync(DescribeStreamRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken)) { var options = new InvokeOptions(); options.RequestMarshaller = DescribeStreamRequestMarshaller.Instance; options.ResponseUnmarshaller = DescribeStreamResponseUnmarshaller.Instance; return InvokeAsync(request, options, cancellationToken); } #endregion #region GetRecords internal virtual GetRecordsResponse GetRecords(GetRecordsRequest request) { var options = new InvokeOptions(); options.RequestMarshaller = GetRecordsRequestMarshaller.Instance; options.ResponseUnmarshaller = GetRecordsResponseUnmarshaller.Instance; return Invoke(request, options); } /// /// 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. /// /// /// /// A shard iterator that was retrieved from a previous GetShardIterator operation. This iterator can be used to access the stream records in this shard. /// /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. /// /// /// The response from the GetRecords service method, as returned by DynamoDBStreams. /// /// 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. /// /// /// An error occurred on the server side. /// /// /// 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. /// /// /// /// The operation tried to access a nonexistent table or index. The resource might not /// be specified correctly, or its status might not be ACTIVE. /// /// /// 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. /// ///
///
/// REST API Reference for GetRecords Operation public virtual Task GetRecordsAsync(string shardIterator, System.Threading.CancellationToken cancellationToken = default(CancellationToken)) { var request = new GetRecordsRequest(); request.ShardIterator = shardIterator; return GetRecordsAsync(request, cancellationToken); } /// /// 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. /// /// /// /// Container for the necessary parameters to execute the GetRecords service method. /// /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. /// /// /// The response from the GetRecords service method, as returned by DynamoDBStreams. /// /// 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. /// /// /// An error occurred on the server side. /// /// /// 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. /// /// /// /// The operation tried to access a nonexistent table or index. The resource might not /// be specified correctly, or its status might not be ACTIVE. /// /// /// 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. /// ///
///
/// REST API Reference for GetRecords Operation public virtual Task GetRecordsAsync(GetRecordsRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken)) { var options = new InvokeOptions(); options.RequestMarshaller = GetRecordsRequestMarshaller.Instance; options.ResponseUnmarshaller = GetRecordsResponseUnmarshaller.Instance; return InvokeAsync(request, options, cancellationToken); } #endregion #region GetShardIterator internal virtual GetShardIteratorResponse GetShardIterator(GetShardIteratorRequest request) { var options = new InvokeOptions(); options.RequestMarshaller = GetShardIteratorRequestMarshaller.Instance; options.ResponseUnmarshaller = GetShardIteratorResponseUnmarshaller.Instance; return Invoke(request, options); } /// /// 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. /// /// /// /// Container for the necessary parameters to execute the GetShardIterator service method. /// /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. /// /// /// The response from the GetShardIterator service method, as returned by DynamoDBStreams. /// /// An error occurred on the server side. /// /// /// The operation tried to access a nonexistent table or index. The resource might not /// be specified correctly, or its status might not be ACTIVE. /// /// /// 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. /// ///
///
/// REST API Reference for GetShardIterator Operation public virtual Task GetShardIteratorAsync(GetShardIteratorRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken)) { var options = new InvokeOptions(); options.RequestMarshaller = GetShardIteratorRequestMarshaller.Instance; options.ResponseUnmarshaller = GetShardIteratorResponseUnmarshaller.Instance; return InvokeAsync(request, options, cancellationToken); } #endregion #region ListStreams internal virtual ListStreamsResponse ListStreams() { return ListStreams(new ListStreamsRequest()); } internal virtual ListStreamsResponse ListStreams(ListStreamsRequest request) { var options = new InvokeOptions(); options.RequestMarshaller = ListStreamsRequestMarshaller.Instance; options.ResponseUnmarshaller = ListStreamsResponseUnmarshaller.Instance; return Invoke(request, options); } /// /// 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. /// /// /// /// /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. /// /// /// The response from the ListStreams service method, as returned by DynamoDBStreams. /// /// An error occurred on the server side. /// /// /// The operation tried to access a nonexistent table or index. The resource might not /// be specified correctly, or its status might not be ACTIVE. /// /// REST API Reference for ListStreams Operation public virtual Task ListStreamsAsync(System.Threading.CancellationToken cancellationToken = default(CancellationToken)) { return ListStreamsAsync(new ListStreamsRequest(), cancellationToken); } /// /// 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. /// /// /// /// Container for the necessary parameters to execute the ListStreams service method. /// /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. /// /// /// The response from the ListStreams service method, as returned by DynamoDBStreams. /// /// An error occurred on the server side. /// /// /// The operation tried to access a nonexistent table or index. The resource might not /// be specified correctly, or its status might not be ACTIVE. /// /// REST API Reference for ListStreams Operation public virtual Task ListStreamsAsync(ListStreamsRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken)) { var options = new InvokeOptions(); options.RequestMarshaller = ListStreamsRequestMarshaller.Instance; options.ResponseUnmarshaller = ListStreamsResponseUnmarshaller.Instance; return InvokeAsync(request, options, cancellationToken); } #endregion } }