All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.amazonaws.services.dynamodb.AmazonDynamoDBClient Maven / Gradle / Ivy

/*
 * Copyright 2010-2014 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 com.amazonaws.services.dynamodb;

import java.util.ArrayList;
import java.util.List;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import com.amazonaws.AmazonClientException;
import com.amazonaws.AmazonServiceException;
import com.amazonaws.AmazonWebServiceClient;
import com.amazonaws.AmazonWebServiceRequest;
import com.amazonaws.AmazonWebServiceResponse;
import com.amazonaws.ClientConfiguration;
import com.amazonaws.Request;
import com.amazonaws.Response;
import com.amazonaws.ResponseMetadata;
import com.amazonaws.auth.AWS4Signer;
import com.amazonaws.auth.AWSCredentials;
import com.amazonaws.auth.AWSCredentialsProvider;
import com.amazonaws.auth.DefaultAWSCredentialsProviderChain;
import com.amazonaws.handlers.HandlerChainFactory;
import com.amazonaws.http.ExecutionContext;
import com.amazonaws.http.HttpResponseHandler;
import com.amazonaws.http.JsonErrorResponseHandler;
import com.amazonaws.http.JsonResponseHandler;
import com.amazonaws.internal.StaticCredentialsProvider;
import com.amazonaws.metrics.RequestMetricCollector;
import com.amazonaws.regions.Region;
import com.amazonaws.services.dynamodb.model.BatchGetItemRequest;
import com.amazonaws.services.dynamodb.model.BatchGetItemResult;
import com.amazonaws.services.dynamodb.model.BatchWriteItemRequest;
import com.amazonaws.services.dynamodb.model.BatchWriteItemResult;
import com.amazonaws.services.dynamodb.model.ConditionalCheckFailedException;
import com.amazonaws.services.dynamodb.model.CreateTableRequest;
import com.amazonaws.services.dynamodb.model.CreateTableResult;
import com.amazonaws.services.dynamodb.model.DeleteItemRequest;
import com.amazonaws.services.dynamodb.model.DeleteItemResult;
import com.amazonaws.services.dynamodb.model.DeleteTableRequest;
import com.amazonaws.services.dynamodb.model.DeleteTableResult;
import com.amazonaws.services.dynamodb.model.DescribeTableRequest;
import com.amazonaws.services.dynamodb.model.DescribeTableResult;
import com.amazonaws.services.dynamodb.model.GetItemRequest;
import com.amazonaws.services.dynamodb.model.GetItemResult;
import com.amazonaws.services.dynamodb.model.InternalServerErrorException;
import com.amazonaws.services.dynamodb.model.LimitExceededException;
import com.amazonaws.services.dynamodb.model.ListTablesRequest;
import com.amazonaws.services.dynamodb.model.ListTablesResult;
import com.amazonaws.services.dynamodb.model.ProvisionedThroughputExceededException;
import com.amazonaws.services.dynamodb.model.PutItemRequest;
import com.amazonaws.services.dynamodb.model.PutItemResult;
import com.amazonaws.services.dynamodb.model.QueryRequest;
import com.amazonaws.services.dynamodb.model.QueryResult;
import com.amazonaws.services.dynamodb.model.ResourceInUseException;
import com.amazonaws.services.dynamodb.model.ResourceNotFoundException;
import com.amazonaws.services.dynamodb.model.ScanRequest;
import com.amazonaws.services.dynamodb.model.ScanResult;
import com.amazonaws.services.dynamodb.model.UpdateItemRequest;
import com.amazonaws.services.dynamodb.model.UpdateItemResult;
import com.amazonaws.services.dynamodb.model.UpdateTableRequest;
import com.amazonaws.services.dynamodb.model.UpdateTableResult;
import com.amazonaws.services.dynamodb.model.transform.BatchGetItemRequestMarshaller;
import com.amazonaws.services.dynamodb.model.transform.BatchGetItemResultJsonUnmarshaller;
import com.amazonaws.services.dynamodb.model.transform.BatchWriteItemRequestMarshaller;
import com.amazonaws.services.dynamodb.model.transform.BatchWriteItemResultJsonUnmarshaller;
import com.amazonaws.services.dynamodb.model.transform.ConditionalCheckFailedExceptionUnmarshaller;
import com.amazonaws.services.dynamodb.model.transform.CreateTableRequestMarshaller;
import com.amazonaws.services.dynamodb.model.transform.CreateTableResultJsonUnmarshaller;
import com.amazonaws.services.dynamodb.model.transform.DeleteItemRequestMarshaller;
import com.amazonaws.services.dynamodb.model.transform.DeleteItemResultJsonUnmarshaller;
import com.amazonaws.services.dynamodb.model.transform.DeleteTableRequestMarshaller;
import com.amazonaws.services.dynamodb.model.transform.DeleteTableResultJsonUnmarshaller;
import com.amazonaws.services.dynamodb.model.transform.DescribeTableRequestMarshaller;
import com.amazonaws.services.dynamodb.model.transform.DescribeTableResultJsonUnmarshaller;
import com.amazonaws.services.dynamodb.model.transform.GetItemRequestMarshaller;
import com.amazonaws.services.dynamodb.model.transform.GetItemResultJsonUnmarshaller;
import com.amazonaws.services.dynamodb.model.transform.InternalServerErrorExceptionUnmarshaller;
import com.amazonaws.services.dynamodb.model.transform.LimitExceededExceptionUnmarshaller;
import com.amazonaws.services.dynamodb.model.transform.ListTablesRequestMarshaller;
import com.amazonaws.services.dynamodb.model.transform.ListTablesResultJsonUnmarshaller;
import com.amazonaws.services.dynamodb.model.transform.ProvisionedThroughputExceededExceptionUnmarshaller;
import com.amazonaws.services.dynamodb.model.transform.PutItemRequestMarshaller;
import com.amazonaws.services.dynamodb.model.transform.PutItemResultJsonUnmarshaller;
import com.amazonaws.services.dynamodb.model.transform.QueryRequestMarshaller;
import com.amazonaws.services.dynamodb.model.transform.QueryResultJsonUnmarshaller;
import com.amazonaws.services.dynamodb.model.transform.ResourceInUseExceptionUnmarshaller;
import com.amazonaws.services.dynamodb.model.transform.ResourceNotFoundExceptionUnmarshaller;
import com.amazonaws.services.dynamodb.model.transform.ScanRequestMarshaller;
import com.amazonaws.services.dynamodb.model.transform.ScanResultJsonUnmarshaller;
import com.amazonaws.services.dynamodb.model.transform.UpdateItemRequestMarshaller;
import com.amazonaws.services.dynamodb.model.transform.UpdateItemResultJsonUnmarshaller;
import com.amazonaws.services.dynamodb.model.transform.UpdateTableRequestMarshaller;
import com.amazonaws.services.dynamodb.model.transform.UpdateTableResultJsonUnmarshaller;
import com.amazonaws.transform.JsonErrorUnmarshaller;
import com.amazonaws.transform.JsonUnmarshallerContext;
import com.amazonaws.transform.Marshaller;
import com.amazonaws.transform.Unmarshaller;
import com.amazonaws.util.AWSRequestMetrics;
import com.amazonaws.util.AWSRequestMetrics.Field;


/**
 * Client for accessing AmazonDynamoDB.  All service calls made
 * using this client are blocking, and will not return until the service call
 * completes.
 * 

*

* Amazon DynamoDB is a fast, highly scalable, highly available, cost-effective non-relational database service. *

*

* Amazon DynamoDB removes traditional scalability limitations on data storage while maintaining low latency and predictable performance. *

* @deprecated Use {@link com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient} instead. */ @Deprecated public class AmazonDynamoDBClient extends AmazonWebServiceClient implements AmazonDynamoDB { /** Provider for AWS credentials. */ private AWSCredentialsProvider awsCredentialsProvider; private static final Log log = LogFactory.getLog(AmazonDynamoDB.class); /** * List of exception unmarshallers for all AmazonDynamoDB exceptions. */ protected List exceptionUnmarshallers; /** AWS signer for authenticating requests. */ private AWS4Signer signer; /** * Constructs a new client to invoke service methods on * AmazonDynamoDB. A credentials provider chain will be used * that searches for credentials in this order: *
    *
  • Environment Variables - AWS_ACCESS_KEY_ID and AWS_SECRET_KEY
  • *
  • Java System Properties - aws.accessKeyId and aws.secretKey
  • *
  • Instance profile credentials delivered through the Amazon EC2 metadata service
  • *
* *

* All service calls made using this new client object are blocking, and will not * return until the service call completes. * * @see DefaultAWSCredentialsProviderChain */ public AmazonDynamoDBClient() { this(new DefaultAWSCredentialsProviderChain(), new ClientConfiguration()); } /** * Constructs a new client to invoke service methods on * AmazonDynamoDB. A credentials provider chain will be used * that searches for credentials in this order: *

    *
  • Environment Variables - AWS_ACCESS_KEY_ID and AWS_SECRET_KEY
  • *
  • Java System Properties - aws.accessKeyId and aws.secretKey
  • *
  • Instance profile credentials delivered through the Amazon EC2 metadata service
  • *
* *

* All service calls made using this new client object are blocking, and will not * return until the service call completes. * * @param clientConfiguration The client configuration options controlling how this * client connects to AmazonDynamoDB * (ex: proxy settings, retry counts, etc.). * * @see DefaultAWSCredentialsProviderChain */ public AmazonDynamoDBClient(ClientConfiguration clientConfiguration) { this(new DefaultAWSCredentialsProviderChain(), clientConfiguration); } /** * Constructs a new client to invoke service methods on * AmazonDynamoDB using the specified AWS account credentials. * *

* All service calls made using this new client object are blocking, and will not * return until the service call completes. * * @param awsCredentials The AWS credentials (access key ID and secret key) to use * when authenticating with AWS services. */ public AmazonDynamoDBClient(AWSCredentials awsCredentials) { this(awsCredentials, new ClientConfiguration()); } /** * Constructs a new client to invoke service methods on * AmazonDynamoDB using the specified AWS account credentials * and client configuration options. * *

* All service calls made using this new client object are blocking, and will not * return until the service call completes. * * @param awsCredentials The AWS credentials (access key ID and secret key) to use * when authenticating with AWS services. * @param clientConfiguration The client configuration options controlling how this * client connects to AmazonDynamoDB * (ex: proxy settings, retry counts, etc.). */ public AmazonDynamoDBClient(AWSCredentials awsCredentials, ClientConfiguration clientConfiguration) { this(awsCredentials, clientConfiguration, null); } /** * Constructs a new client to invoke service methods on AmazonDynamoDB using * the specified AWS account credentials, client configuration options and * request metric collector. * *

* All service calls made using this new client object are blocking, and * will not return until the service call completes. * * @param awsCredentials * The AWS credentials (access key ID and secret key) to use when * authenticating with AWS services. * @param clientConfiguration * The client configuration options controlling how this client * connects to AmazonDynamoDB (ex: proxy settings, retry counts, * etc.). * @param requestMetricCollector * optional request metric collector to be used at the http * client level; can be null. */ public AmazonDynamoDBClient(AWSCredentials awsCredentials, ClientConfiguration clientConfiguration, RequestMetricCollector requestMetricCollector) { super(adjustClientConfiguration(clientConfiguration), requestMetricCollector); this.awsCredentialsProvider = new StaticCredentialsProvider( awsCredentials); init(); } /** * Constructs a new client to invoke service methods on * AmazonDynamoDB using the specified AWS account credentials provider. * *

* All service calls made using this new client object are blocking, and will not * return until the service call completes. * * @param awsCredentialsProvider * The AWS credentials provider which will provide credentials * to authenticate requests with AWS services. */ public AmazonDynamoDBClient(AWSCredentialsProvider awsCredentialsProvider) { this(awsCredentialsProvider, new ClientConfiguration()); } /** * Constructs a new client to invoke service methods on * AmazonDynamoDB using the specified AWS account credentials * provider and client configuration options. * *

* All service calls made using this new client object are blocking, and will not * return until the service call completes. * * @param awsCredentialsProvider * The AWS credentials provider which will provide credentials * to authenticate requests with AWS services. * @param clientConfiguration The client configuration options controlling how this * client connects to AmazonDynamoDB * (ex: proxy settings, retry counts, etc.). */ public AmazonDynamoDBClient(AWSCredentialsProvider awsCredentialsProvider, ClientConfiguration clientConfiguration) { this(awsCredentialsProvider, clientConfiguration, null); } /** * Constructs a new client to invoke service methods on * AmazonDynamoDB using the specified AWS account credentials * provider and client configuration options. * *

* All service calls made using this new client object are blocking, and will not * return until the service call completes. * * @param awsCredentialsProvider * The AWS credentials provider which will provide credentials * to authenticate requests with AWS services. * @param clientConfiguration The client configuration options controlling how this * client connects to AmazonDynamoDB * (ex: proxy settings, retry counts, etc.). * @param requestMetricCollector * optional request metric collector to be used at the http * client level; can be null. */ public AmazonDynamoDBClient(AWSCredentialsProvider awsCredentialsProvider, ClientConfiguration clientConfiguration, RequestMetricCollector requestMetricCollector) { super(adjustClientConfiguration(clientConfiguration), requestMetricCollector); this.awsCredentialsProvider = awsCredentialsProvider; init(); } private void init() { exceptionUnmarshallers = new ArrayList(); exceptionUnmarshallers.add(new LimitExceededExceptionUnmarshaller()); exceptionUnmarshallers.add(new InternalServerErrorExceptionUnmarshaller()); exceptionUnmarshallers.add(new ProvisionedThroughputExceededExceptionUnmarshaller()); exceptionUnmarshallers.add(new ResourceInUseExceptionUnmarshaller()); exceptionUnmarshallers.add(new ConditionalCheckFailedExceptionUnmarshaller()); exceptionUnmarshallers.add(new ResourceNotFoundExceptionUnmarshaller()); exceptionUnmarshallers.add(new JsonErrorUnmarshaller()); setEndpoint("dynamodb.us-east-1.amazonaws.com/"); signer = new AWS4Signer(); signer.setServiceName("dynamodb"); HandlerChainFactory chainFactory = new HandlerChainFactory(); requestHandler2s.addAll(chainFactory.newRequestHandlerChain( "/com/amazonaws/services/dynamodb/request.handlers")); } private static ClientConfiguration adjustClientConfiguration(ClientConfiguration orig) { ClientConfiguration config = orig; if (config.getRetryPolicy() == com.amazonaws.retry.PredefinedRetryPolicies.DEFAULT) { config = new ClientConfiguration(orig); config.setRetryPolicy( com.amazonaws.retry.PredefinedRetryPolicies.DYNAMODB_DEFAULT); } return config; } /** *

* Retrieves a paginated list of table names created by the AWS Account * of the caller in the AWS Region (e.g. us-east-1 ). *

* * @param listTablesRequest Container for the necessary parameters to * execute the ListTables service method on AmazonDynamoDB. * * @return The response from the ListTables service method, as returned * by AmazonDynamoDB. * * @throws InternalServerErrorException * * @throws AmazonClientException * If any internal errors are encountered inside the client while * attempting to make the request or handle the response. For example * if a network connection is not available. * @throws AmazonServiceException * If an error response is returned by AmazonDynamoDB indicating * either a problem with the data in the request, or a server side issue. */ public ListTablesResult listTables(ListTablesRequest listTablesRequest) throws AmazonServiceException, AmazonClientException { ExecutionContext executionContext = createExecutionContext(listTablesRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); Request request = marshall(listTablesRequest, new ListTablesRequestMarshaller(), executionContext.getAwsRequestMetrics()); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); Unmarshaller unmarshaller = new ListTablesResultJsonUnmarshaller(); JsonResponseHandler responseHandler = new JsonResponseHandler(unmarshaller); return invoke(request, responseHandler, executionContext); } /** *

* Gets the values of one or more items and its attributes by primary key * (composite primary key, only). *

*

* Narrow the scope of the query using comparison operators on the * RangeKeyValue of the composite key. Use the * ScanIndexForward parameter to get results in forward or * reverse order by range key. *

* * @param queryRequest Container for the necessary parameters to execute * the Query service method on AmazonDynamoDB. * * @return The response from the Query service method, as returned by * AmazonDynamoDB. * * @throws ProvisionedThroughputExceededException * @throws InternalServerErrorException * @throws ResourceNotFoundException * * @throws AmazonClientException * If any internal errors are encountered inside the client while * attempting to make the request or handle the response. For example * if a network connection is not available. * @throws AmazonServiceException * If an error response is returned by AmazonDynamoDB indicating * either a problem with the data in the request, or a server side issue. */ public QueryResult query(QueryRequest queryRequest) throws AmazonServiceException, AmazonClientException { ExecutionContext executionContext = createExecutionContext(queryRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); Request request = marshall(queryRequest, new QueryRequestMarshaller(), executionContext.getAwsRequestMetrics()); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); Unmarshaller unmarshaller = new QueryResultJsonUnmarshaller(); JsonResponseHandler responseHandler = new JsonResponseHandler(unmarshaller); return invoke(request, responseHandler, executionContext); } /** *

* Allows to execute a batch of Put and/or Delete Requests for many * tables in a single call. A total of 25 requests are allowed. *

*

* There are no transaction guarantees provided by this API. It does not * allow conditional puts nor does it support return values. *

* * @param batchWriteItemRequest Container for the necessary parameters to * execute the BatchWriteItem service method on AmazonDynamoDB. * * @return The response from the BatchWriteItem service method, as * returned by AmazonDynamoDB. * * @throws LimitExceededException * @throws ProvisionedThroughputExceededException * @throws InternalServerErrorException * @throws ResourceNotFoundException * * @throws AmazonClientException * If any internal errors are encountered inside the client while * attempting to make the request or handle the response. For example * if a network connection is not available. * @throws AmazonServiceException * If an error response is returned by AmazonDynamoDB indicating * either a problem with the data in the request, or a server side issue. */ public BatchWriteItemResult batchWriteItem(BatchWriteItemRequest batchWriteItemRequest) throws AmazonServiceException, AmazonClientException { ExecutionContext executionContext = createExecutionContext(batchWriteItemRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); Request request = marshall( batchWriteItemRequest, new BatchWriteItemRequestMarshaller(), executionContext.getAwsRequestMetrics()); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); Unmarshaller unmarshaller = new BatchWriteItemResultJsonUnmarshaller(); JsonResponseHandler responseHandler = new JsonResponseHandler(unmarshaller); return invoke(request, responseHandler, executionContext); } /** *

* Edits an existing item's attributes. *

*

* You can perform a conditional update (insert a new attribute * name-value pair if it doesn't exist, or replace an existing name-value * pair if it has certain expected attribute values). *

* * @param updateItemRequest Container for the necessary parameters to * execute the UpdateItem service method on AmazonDynamoDB. * * @return The response from the UpdateItem service method, as returned * by AmazonDynamoDB. * * @throws LimitExceededException * @throws ProvisionedThroughputExceededException * @throws ConditionalCheckFailedException * @throws InternalServerErrorException * @throws ResourceNotFoundException * * @throws AmazonClientException * If any internal errors are encountered inside the client while * attempting to make the request or handle the response. For example * if a network connection is not available. * @throws AmazonServiceException * If an error response is returned by AmazonDynamoDB indicating * either a problem with the data in the request, or a server side issue. */ public UpdateItemResult updateItem(UpdateItemRequest updateItemRequest) throws AmazonServiceException, AmazonClientException { ExecutionContext executionContext = createExecutionContext(updateItemRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); Request request = marshall(updateItemRequest, new UpdateItemRequestMarshaller(), executionContext.getAwsRequestMetrics()); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); Unmarshaller unmarshaller = new UpdateItemResultJsonUnmarshaller(); JsonResponseHandler responseHandler = new JsonResponseHandler(unmarshaller); return invoke(request, responseHandler, executionContext); } /** *

* Creates a new item, or replaces an old item with a new item (including * all the attributes). *

*

* If an item already exists in the specified table with the same primary * key, the new item completely replaces the existing item. You can * perform a conditional put (insert a new item if one with the specified * primary key doesn't exist), or replace an existing item if it has * certain attribute values. *

* * @param putItemRequest Container for the necessary parameters to * execute the PutItem service method on AmazonDynamoDB. * * @return The response from the PutItem service method, as returned by * AmazonDynamoDB. * * @throws LimitExceededException * @throws ProvisionedThroughputExceededException * @throws ConditionalCheckFailedException * @throws InternalServerErrorException * @throws ResourceNotFoundException * * @throws AmazonClientException * If any internal errors are encountered inside the client while * attempting to make the request or handle the response. For example * if a network connection is not available. * @throws AmazonServiceException * If an error response is returned by AmazonDynamoDB indicating * either a problem with the data in the request, or a server side issue. */ public PutItemResult putItem(PutItemRequest putItemRequest) throws AmazonServiceException, AmazonClientException { ExecutionContext executionContext = createExecutionContext(putItemRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); Request request = marshall(putItemRequest, new PutItemRequestMarshaller(), executionContext.getAwsRequestMetrics()); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); Unmarshaller unmarshaller = new PutItemResultJsonUnmarshaller(); JsonResponseHandler responseHandler = new JsonResponseHandler(unmarshaller); return invoke(request, responseHandler, executionContext); } /** *

* Retrieves information about the table, including the current status of * the table, the primary key schema and when the table was created. *

*

* If the table does not exist, Amazon DynamoDB returns a * ResourceNotFoundException . *

* * @param describeTableRequest Container for the necessary parameters to * execute the DescribeTable service method on AmazonDynamoDB. * * @return The response from the DescribeTable service method, as * returned by AmazonDynamoDB. * * @throws InternalServerErrorException * @throws ResourceNotFoundException * * @throws AmazonClientException * If any internal errors are encountered inside the client while * attempting to make the request or handle the response. For example * if a network connection is not available. * @throws AmazonServiceException * If an error response is returned by AmazonDynamoDB indicating * either a problem with the data in the request, or a server side issue. */ public DescribeTableResult describeTable(DescribeTableRequest describeTableRequest) throws AmazonServiceException, AmazonClientException { ExecutionContext executionContext = createExecutionContext(describeTableRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); Request request = marshall(describeTableRequest, new DescribeTableRequestMarshaller(), executionContext.getAwsRequestMetrics()); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); Unmarshaller unmarshaller = new DescribeTableResultJsonUnmarshaller(); JsonResponseHandler responseHandler = new JsonResponseHandler(unmarshaller); return invoke(request, responseHandler, executionContext); } /** *

* Retrieves one or more items and its attributes by performing a full * scan of a table. *

*

* Provide a ScanFilter to get more specific results. *

* * @param scanRequest Container for the necessary parameters to execute * the Scan service method on AmazonDynamoDB. * * @return The response from the Scan service method, as returned by * AmazonDynamoDB. * * @throws ProvisionedThroughputExceededException * @throws InternalServerErrorException * @throws ResourceNotFoundException * * @throws AmazonClientException * If any internal errors are encountered inside the client while * attempting to make the request or handle the response. For example * if a network connection is not available. * @throws AmazonServiceException * If an error response is returned by AmazonDynamoDB indicating * either a problem with the data in the request, or a server side issue. */ public ScanResult scan(ScanRequest scanRequest) throws AmazonServiceException, AmazonClientException { ExecutionContext executionContext = createExecutionContext(scanRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); Request request = marshall(scanRequest, new ScanRequestMarshaller(), executionContext.getAwsRequestMetrics()); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); Unmarshaller unmarshaller = new ScanResultJsonUnmarshaller(); JsonResponseHandler responseHandler = new JsonResponseHandler(unmarshaller); return invoke(request, responseHandler, executionContext); } /** *

* Adds a new table to your account. *

*

* The table name must be unique among those associated with the AWS * Account issuing the request, and the AWS Region that receives the * request (e.g. us-east-1 ). *

*

* The CreateTable operation triggers an asynchronous * workflow to begin creating the table. Amazon DynamoDB immediately * returns the state of the table ( CREATING ) until the * table is in the ACTIVE state. Once the table is in the * ACTIVE state, you can perform data plane operations. *

* * @param createTableRequest Container for the necessary parameters to * execute the CreateTable service method on AmazonDynamoDB. * * @return The response from the CreateTable service method, as returned * by AmazonDynamoDB. * * @throws ResourceInUseException * @throws LimitExceededException * @throws InternalServerErrorException * * @throws AmazonClientException * If any internal errors are encountered inside the client while * attempting to make the request or handle the response. For example * if a network connection is not available. * @throws AmazonServiceException * If an error response is returned by AmazonDynamoDB indicating * either a problem with the data in the request, or a server side issue. */ public CreateTableResult createTable(CreateTableRequest createTableRequest) throws AmazonServiceException, AmazonClientException { ExecutionContext executionContext = createExecutionContext(createTableRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); Request request = marshall(createTableRequest, new CreateTableRequestMarshaller(), executionContext.getAwsRequestMetrics()); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); Unmarshaller unmarshaller = new CreateTableResultJsonUnmarshaller(); JsonResponseHandler responseHandler = new JsonResponseHandler(unmarshaller); return invoke(request, responseHandler, executionContext); } /** *

* Updates the provisioned throughput for the given table. *

*

* Setting the throughput for a table helps you manage performance and is * part of the Provisioned Throughput feature of Amazon DynamoDB. *

* * @param updateTableRequest Container for the necessary parameters to * execute the UpdateTable service method on AmazonDynamoDB. * * @return The response from the UpdateTable service method, as returned * by AmazonDynamoDB. * * @throws ResourceInUseException * @throws LimitExceededException * @throws InternalServerErrorException * @throws ResourceNotFoundException * * @throws AmazonClientException * If any internal errors are encountered inside the client while * attempting to make the request or handle the response. For example * if a network connection is not available. * @throws AmazonServiceException * If an error response is returned by AmazonDynamoDB indicating * either a problem with the data in the request, or a server side issue. */ public UpdateTableResult updateTable(UpdateTableRequest updateTableRequest) throws AmazonServiceException, AmazonClientException { ExecutionContext executionContext = createExecutionContext(updateTableRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); Request request = marshall(updateTableRequest, new UpdateTableRequestMarshaller(), executionContext.getAwsRequestMetrics()); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); Unmarshaller unmarshaller = new UpdateTableResultJsonUnmarshaller(); JsonResponseHandler responseHandler = new JsonResponseHandler(unmarshaller); return invoke(request, responseHandler, executionContext); } /** *

* Deletes a table and all of its items. *

*

* If the table is in the ACTIVE state, you can delete it. * If a table is in CREATING or UPDATING states * then Amazon DynamoDB returns a ResourceInUseException . * If the specified table does not exist, Amazon DynamoDB returns a * ResourceNotFoundException . *

* * @param deleteTableRequest Container for the necessary parameters to * execute the DeleteTable service method on AmazonDynamoDB. * * @return The response from the DeleteTable service method, as returned * by AmazonDynamoDB. * * @throws ResourceInUseException * @throws LimitExceededException * @throws InternalServerErrorException * @throws ResourceNotFoundException * * @throws AmazonClientException * If any internal errors are encountered inside the client while * attempting to make the request or handle the response. For example * if a network connection is not available. * @throws AmazonServiceException * If an error response is returned by AmazonDynamoDB indicating * either a problem with the data in the request, or a server side issue. */ public DeleteTableResult deleteTable(DeleteTableRequest deleteTableRequest) throws AmazonServiceException, AmazonClientException { ExecutionContext executionContext = createExecutionContext(deleteTableRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); Request request = marshall(deleteTableRequest, new DeleteTableRequestMarshaller(), executionContext.getAwsRequestMetrics()); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); Unmarshaller unmarshaller = new DeleteTableResultJsonUnmarshaller(); JsonResponseHandler responseHandler = new JsonResponseHandler(unmarshaller); return invoke(request, responseHandler, executionContext); } /** *

* Deletes a single item in a table by primary key. *

*

* You can perform a conditional delete operation that deletes the item * if it exists, or if it has an expected attribute value. *

* * @param deleteItemRequest Container for the necessary parameters to * execute the DeleteItem service method on AmazonDynamoDB. * * @return The response from the DeleteItem service method, as returned * by AmazonDynamoDB. * * @throws LimitExceededException * @throws ProvisionedThroughputExceededException * @throws ConditionalCheckFailedException * @throws InternalServerErrorException * @throws ResourceNotFoundException * * @throws AmazonClientException * If any internal errors are encountered inside the client while * attempting to make the request or handle the response. For example * if a network connection is not available. * @throws AmazonServiceException * If an error response is returned by AmazonDynamoDB indicating * either a problem with the data in the request, or a server side issue. */ public DeleteItemResult deleteItem(DeleteItemRequest deleteItemRequest) throws AmazonServiceException, AmazonClientException { ExecutionContext executionContext = createExecutionContext(deleteItemRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); Request request = marshall(deleteItemRequest, new DeleteItemRequestMarshaller(), executionContext.getAwsRequestMetrics()); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); Unmarshaller unmarshaller = new DeleteItemResultJsonUnmarshaller(); JsonResponseHandler responseHandler = new JsonResponseHandler(unmarshaller); return invoke(request, responseHandler, executionContext); } /** *

* Retrieves a set of Attributes for an item that matches the primary * key. *

*

* The GetItem operation provides an eventually-consistent * read by default. If eventually-consistent reads are not acceptable for * your application, use ConsistentRead . Although this * operation might take longer than a standard read, it always returns * the last updated value. *

* * @param getItemRequest Container for the necessary parameters to * execute the GetItem service method on AmazonDynamoDB. * * @return The response from the GetItem service method, as returned by * AmazonDynamoDB. * * @throws ProvisionedThroughputExceededException * @throws InternalServerErrorException * @throws ResourceNotFoundException * * @throws AmazonClientException * If any internal errors are encountered inside the client while * attempting to make the request or handle the response. For example * if a network connection is not available. * @throws AmazonServiceException * If an error response is returned by AmazonDynamoDB indicating * either a problem with the data in the request, or a server side issue. */ public GetItemResult getItem(GetItemRequest getItemRequest) throws AmazonServiceException, AmazonClientException { ExecutionContext executionContext = createExecutionContext(getItemRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); Request request = marshall(getItemRequest, new GetItemRequestMarshaller(), executionContext.getAwsRequestMetrics()); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); Unmarshaller unmarshaller = new GetItemResultJsonUnmarshaller(); JsonResponseHandler responseHandler = new JsonResponseHandler(unmarshaller); return invoke(request, responseHandler, executionContext); } /** *

* Retrieves the attributes for multiple items from multiple tables using * their primary keys. *

*

* The maximum number of item attributes that can be retrieved for a * single operation is 100. Also, the number of items retrieved is * constrained by a 1 MB the size limit. If the response size limit is * exceeded or a partial result is returned due to an internal processing * failure, Amazon DynamoDB returns an UnprocessedKeys value * so you can retry the operation starting with the next item to get. *

*

* Amazon DynamoDB automatically adjusts the number of items returned per * page to enforce this limit. For example, even if you ask to retrieve * 100 items, but each individual item is 50k in size, the system returns * 20 items and an appropriate UnprocessedKeys value so you * can get the next page of results. If necessary, your application needs * its own logic to assemble the pages of results into one set. *

* * @param batchGetItemRequest Container for the necessary parameters to * execute the BatchGetItem service method on AmazonDynamoDB. * * @return The response from the BatchGetItem service method, as returned * by AmazonDynamoDB. * * @throws ProvisionedThroughputExceededException * @throws InternalServerErrorException * @throws ResourceNotFoundException * * @throws AmazonClientException * If any internal errors are encountered inside the client while * attempting to make the request or handle the response. For example * if a network connection is not available. * @throws AmazonServiceException * If an error response is returned by AmazonDynamoDB indicating * either a problem with the data in the request, or a server side issue. */ public BatchGetItemResult batchGetItem(BatchGetItemRequest batchGetItemRequest) throws AmazonServiceException, AmazonClientException { ExecutionContext executionContext = createExecutionContext(batchGetItemRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); Request request = marshall(batchGetItemRequest, new BatchGetItemRequestMarshaller(), executionContext.getAwsRequestMetrics()); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); Unmarshaller unmarshaller = new BatchGetItemResultJsonUnmarshaller(); JsonResponseHandler responseHandler = new JsonResponseHandler(unmarshaller); return invoke(request, responseHandler, executionContext); } /** *

* Retrieves a paginated list of table names created by the AWS Account * of the caller in the AWS Region (e.g. us-east-1 ). *

* * @return The response from the ListTables service method, as returned * by AmazonDynamoDB. * * @throws InternalServerErrorException * * @throws AmazonClientException * If any internal errors are encountered inside the client while * attempting to make the request or handle the response. For example * if a network connection is not available. * @throws AmazonServiceException * If an error response is returned by AmazonDynamoDB indicating * either a problem with the data in the request, or a server side issue. */ public ListTablesResult listTables() throws AmazonServiceException, AmazonClientException { return listTables(new ListTablesRequest()); } /** * Overrides the default endpoint for this client ("http://dynamodb.us-east-1.amazonaws.com/") and explicitly provides * an AWS region ID and AWS service name to use when the client calculates a signature * for requests. In almost all cases, this region ID and service name * are automatically determined from the endpoint, and callers should use the simpler * one-argument form of setEndpoint instead of this method. *

* This method is not threadsafe. Endpoints should be configured when the * client is created and before any service requests are made. Changing it * afterwards creates inevitable race conditions for any service requests in * transit. *

* Callers can pass in just the endpoint (ex: "dynamodb.us-east-1.amazonaws.com/") or a full * URL, including the protocol (ex: "http://dynamodb.us-east-1.amazonaws.com/"). If the * protocol is not specified here, the default protocol from this client's * {@link ClientConfiguration} will be used, which by default is HTTPS. *

* For more information on using AWS regions with the AWS SDK for Java, and * a complete list of all available endpoints for all AWS services, see: * * http://developer.amazonwebservices.com/connect/entry.jspa?externalID=3912 * * @param endpoint * The endpoint (ex: "dynamodb.us-east-1.amazonaws.com/") or a full URL, * including the protocol (ex: "http://dynamodb.us-east-1.amazonaws.com/") of * the region specific AWS endpoint this client will communicate * with. * @param serviceName * The name of the AWS service to use when signing requests. * @param regionId * The ID of the region in which this service resides. * * @throws IllegalArgumentException * If any problems are detected with the specified endpoint. * @see AmazonDynamoDB#setRegion(Region) */ public void setEndpoint(String endpoint, String serviceName, String regionId) throws IllegalArgumentException { setEndpoint(endpoint); signer.setServiceName(serviceName); signer.setRegionName(regionId); } @Override protected String getServiceAbbreviation() { return "dynamodb"; } /** * Returns additional metadata for a previously executed successful, request, typically used for * debugging issues where a service isn't acting as expected. This data isn't considered part * of the result data returned by an operation, so it's available through this separate, * diagnostic interface. *

* Response metadata is only cached for a limited period of time, so if you need to access * this extra diagnostic information for an executed request, you should use this method * to retrieve it as soon as possible after executing the request. * * @param request * The originally executed request * * @return The response metadata for the specified request, or null if none * is available. */ public ResponseMetadata getCachedResponseMetadata(AmazonWebServiceRequest request) { return client.getResponseMetadataForRequest(request); } private X invoke(Request request, HttpResponseHandler> responseHandler, ExecutionContext executionContext) throws AmazonClientException { request.setEndpoint(endpoint); request.setTimeOffset(timeOffset); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); AWSCredentials credentials; awsRequestMetrics.startEvent(Field.CredentialsRequestTime); try { credentials = awsCredentialsProvider.getCredentials(); } finally { awsRequestMetrics.endEvent(Field.CredentialsRequestTime); } AmazonWebServiceRequest originalRequest = request.getOriginalRequest(); if (originalRequest != null && originalRequest.getRequestCredentials() != null) { credentials = originalRequest.getRequestCredentials(); } executionContext.setSigner(signer); executionContext.setCredentials(credentials); JsonErrorResponseHandler errorResponseHandler = new JsonErrorResponseHandler(exceptionUnmarshallers); Response result = client.execute(request, responseHandler, errorResponseHandler, executionContext); awsRequestMetrics.log(); return result.getAwsResponse(); } /** * Returns a {@link Request} marshalled from the given AWS request using * the specified marshaller, recording the respective * {@link Field#RequestMarshallTime} predefined metrics. */ private Request marshall( T awsRequest, Marshaller, T> marshaller, AWSRequestMetrics awsRequestMetrics) { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { return marshaller.marshall(awsRequest); } catch (AmazonClientException ex) { throw ex; } catch (Exception ex) { throw new AmazonClientException(ex.getMessage(), ex); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy