How to get list of tables in dynamoDB using Java – DynamoDB List Tables
5 years ago Lalit Bhagtani 0
In this tutorial, we will learn about how to get a list of tables in dynamoDB using java language.
DynamoDB
Amazon DynamoDB is a fully managed NoSQL database services offered by Amazon as part of its Amazon Web Service (AWS) portfolio. It provides fast and predictable performance with seamless scalability. DynamoDB is a key-value datastore, where each item (row) in a table is a key-value pair.
Project Setup
Create a simple maven project in your favorite IDE and add below mentioned dependency in your pom.xml file.
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk</artifactId>
<version>1.11.524</version>
</dependency>
For latest version of aws library, check this page.
DynamoDB Connection
Create an object of AmazonDynamoDB ( com.amazonaws.services.dynamodbv2.AmazonDynamoDB ) class for sending a client request to dynamoDB. To get instance of this class, we will use AmazonDynamoDBClientBuilder builder class. It requires three important parameters :-
- Region :- It is a region where dynamoDB table will be stored.
- ACCESS_KEY :- It is a access key for using dynamoDB. You can generate this key, using aws management console.
- SECRET_KEY :- It is a secret key of above mentioned access key.
Here is a code example :-
AmazonDynamoDB dynamoDB = AmazonDynamoDBClientBuilder.standard()
.withRegion(Regions.AP_SOUTH_1)
.withCredentials(new AWSStaticCredentialsProvider
(new BasicAWSCredentials("ACCESS_KEY","SECRET_KEY")))
.build();
List Tables
Steps to create and send ListTableRequest to dynamoDB are as follows:-
- Instantiate ListTableRequest object, this object will be used to send the client request to dynamoDB.
- Set an optional limit parameter to limit the maximum number of table names to be returned, if this parameter is not specified then the maximum of 100 ( default value ) table names are returned.
- Get the LastEvaluatedTableName parameter value. It is the name of the last table in the current set of results.
- Set an optional ExclusiveStartTableName parameter to start the set of result from this table. LastEvaluatedTableName value can be used here to get results page wise.
- Invoke the listTables method on AmazonDynamoDB object by passing ListTableRequest object as an argument.
Example
import com.amazonaws.AmazonServiceException; import com.amazonaws.auth.AWSStaticCredentialsProvider; import com.amazonaws.auth.BasicAWSCredentials; import com.amazonaws.regions.Regions; import com.amazonaws.services.dynamodbv2.AmazonDynamoDB; import com.amazonaws.services.dynamodbv2.AmazonDynamoDBClientBuilder; import com.amazonaws.services.dynamodbv2.model.ListTablesRequest; import com.amazonaws.services.dynamodbv2.model.ListTablesResult; public class ListTable { public static void main(String[] args) { /* Create DynamoDB Client Object */ AmazonDynamoDB dynamoDB = AmazonDynamoDBClientBuilder .standard() .withRegion(Regions.AP_SOUTH_1) .withCredentials(new AWSStaticCredentialsProvider( new BasicAWSCredentials("ACCESS_KEY","SECRET_KEY"))) .build(); try { /* Creating ListTableRequest with limit 50 */ ListTablesRequest request = new ListTablesRequest(); request.withLimit(50); ListTablesResult result = null; String lastTable = null; while(true) { if(lastTable == null) { /* Send First List Table Request */ result = dynamoDB.listTables(request); }else { /* Send Subsequent List Table Request */ result = dynamoDB.listTables(request.withExclusiveStartTableName(lastTable)); } result.getTableNames().stream().forEach( e -> System.out.println(e) ); /* Getting name of last evaluated table */ lastTable = result.getLastEvaluatedTableName(); if(lastTable == null) { break; } } } catch (AmazonServiceException e) { System.out.println(e.getErrorMessage()); } } }
References :-
That’s all for how to get a list of tables in dynamoDB using java language. If you liked it, please share your thoughts in comments section and share it with others too.