Is it possible to run an embedded instance of DynamoDB within a Spring application to be used by integration tests similar to what embedded-redis allows? https://github.com/kstyrc/embedded-redis
A sample blob by AWS seems to indicate this is possible: https://github.com/awslabs/aws-dynamodb-examples/blob/master/src/test/java/com/amazonaws/services/dynamodbv2/local/embedded/DynamoDBEmbeddedTest.java
However, the documentation is scant and when attempting to set up the Embedded DynamoDB in the way shown I get the following error:
AmazonDynamoDB ddb = DynamoDBEmbedded.create().amazonDynamoDB();
Throws:
Caused by: java.lang.NullPointerException
at com.amazonaws.services.dynamodbv2.local.shared.access.sqlite.SQLiteDBAccess.initializeMetadataTables(SQLiteDBAccess.java:389)
at com.amazonaws.services.dynamodbv2.local.shared.access.sqlite.SQLiteDBAccess.<init>(SQLiteDBAccess.java:225)
at com.amazonaws.services.dynamodbv2.local.shared.access.sqlite.SQLiteDBAccess.<init>(SQLiteDBAccess.java:194)
at com.amazonaws.services.dynamodbv2.local.embedded.DynamoDBEmbedded.create(DynamoDBEmbedded.java:45)
at com.amazonaws.services.dynamodbv2.local.embedded.DynamoDBEmbedded.create(DynamoDBEmbedded.java:35)
at com.wdpr.keyring.entitlements.EmbeddedDynamoDBConfig.embeddedDynamoDB(EmbeddedDynamoDBConfig.java:26)
Essentially for the Spring application I would be registering the AmazonDynamoDB
instance created by DynamoDBEmbedded.create().amazonDynamoDB();
as my bean to be used in the TEST application context like so:
@TestConfiguration
public class EmbeddedDynamoDBConfig {
@Bean
AmazonDynamoDB embeddedDynamoDB() {
return DynamoDBEmbedded.create().amazonDynamoDB();
}
}
If this is not possible, what are some other potential solutions?