create-table
Code snippet
package aws.ddb.snippets.lsi;
import aws.ddb.snippets.Constants;
import aws.ddb.snippets.Factory;
import software.amazon.awssdk.services.dynamodb.DynamoDbClient;
import software.amazon.awssdk.services.dynamodb.model.AttributeDefinition;
import software.amazon.awssdk.services.dynamodb.model.BillingMode;
import software.amazon.awssdk.services.dynamodb.model.CreateTableRequest;
import software.amazon.awssdk.services.dynamodb.model.CreateTableResponse;
import software.amazon.awssdk.services.dynamodb.model.KeySchemaElement;
import software.amazon.awssdk.services.dynamodb.model.KeyType;
import software.amazon.awssdk.services.dynamodb.model.LocalSecondaryIndex;
import software.amazon.awssdk.services.dynamodb.model.Projection;
import software.amazon.awssdk.services.dynamodb.model.ProjectionType;
import software.amazon.awssdk.services.dynamodb.model.ScalarAttributeType;
public class CreateLSITable {
public static void main(String[] args) throws Exception {
createTable();
}
private static void createTable() {
final String tableName = Constants.LSI_BY_TIMESTAMP_TABLE_NAME; // replace with your table name
final String lsiName = "timestamp-index";
final CreateTableRequest request = CreateTableRequest.builder()
.tableName(tableName)
.keySchema(
KeySchemaElement.builder().attributeName("hash_key").keyType(KeyType.HASH).build(),
KeySchemaElement.builder().attributeName("sort_key").keyType(KeyType.RANGE).build())
.attributeDefinitions(
AttributeDefinition.builder().attributeName("hash_key").attributeType(ScalarAttributeType.S).build(),
AttributeDefinition.builder().attributeName("sort_key").attributeType(ScalarAttributeType.S).build(),
AttributeDefinition.builder().attributeName("timestamp").attributeType(ScalarAttributeType.S).build())
.localSecondaryIndexes(LocalSecondaryIndex.builder()
.indexName(lsiName)
.keySchema(
KeySchemaElement.builder().attributeName("hash_key").keyType(KeyType.HASH).build(),
KeySchemaElement.builder().attributeName("timestamp").keyType(KeyType.RANGE).build())
.projection(Projection.builder().projectionType(ProjectionType.ALL).build())
.build())
.billingMode(BillingMode.PAY_PER_REQUEST)
.build();
final DynamoDbClient ddb = Factory.getClient();
final CreateTableResponse response = ddb.createTable(request);
System.out.println("Table created: " + response.tableDescription().tableName());
}
}
GT Sandbox Commit:
gt.sandbox.checkout.commit 5ed9efe \
&& cd "${GT_SANDBOX_REPO}/javaSandbox"