先設定 build.gradle:
// build.gradle repositories { maven { // dynamodb local url url 'https://s3-us-west-2.amazonaws.com/dynamodb-local/release' } testCompile ( 'org.junit.jupiter:junit-jupiter-api:5.2.0', 'com.amazonaws:DynamoDBLocal:1.11.119' ) testRuntime ( // junit5 'org.junit.jupiter:junit-jupiter-engine:5.2.0', // dynamodb local 'com.almworks.sqlite4java:libsqlite4java-linux-i386:1.0.392', 'com.almworks.sqlite4java:libsqlite4java-osx:1.0.392' ) } // link native sqlite4java task copyNativeDeps(type: Copy) { from (configurations.testCompile) { include '*.dylib' include '*.so' include '*.dll' } into 'build/libs' } test { useJUnitPlatform() dependsOn copyNativeDeps doFirst { // setup sqlite4java path systemProperty 'java.library.path', 'build/libs' } testLogging { showStandardStreams = true } }
接下來就是測試:
package example; import java.util.ArrayList; import java.util.List; import org.junit.jupiter.api.Test; import com.amazonaws.services.dynamodbv2.AmazonDynamoDB; import com.amazonaws.services.dynamodbv2.document.DynamoDB; import com.amazonaws.services.dynamodbv2.document.Table; import com.amazonaws.services.dynamodbv2.local.embedded.DynamoDBEmbedded; import com.amazonaws.services.dynamodbv2.model.AttributeDefinition; import com.amazonaws.services.dynamodbv2.model.CreateTableRequest; import com.amazonaws.services.dynamodbv2.model.KeySchemaElement; import com.amazonaws.services.dynamodbv2.model.KeyType; import com.amazonaws.services.dynamodbv2.model.ProvisionedThroughput; public class DynamoDBLocalTest { @Test public void createTable() throws Exception { AmazonDynamoDB client = DynamoDBEmbedded.create().amazonDynamoDB(); DynamoDB dynamodb = new DynamoDB(client); String tableName = "Employee"; ListkeySchema = new ArrayList (); keySchema.add(new KeySchemaElement().withAttributeName("Name").withKeyType(KeyType.HASH)); List attributeDefinitions = new ArrayList (); attributeDefinitions.add(new AttributeDefinition().withAttributeName("Name").withAttributeType("S")); CreateTableRequest request = new CreateTableRequest().withTableName(tableName).withKeySchema(keySchema) .withProvisionedThroughput( new ProvisionedThroughput().withReadCapacityUnits(1L).withWriteCapacityUnits(1L)) .withAttributeDefinitions(attributeDefinitions); System.out.println("Issuing CreateTable request for " + tableName); Table table = dynamodb.createTable(request); System.out.println("Waiting for " + tableName + " to be created...this may take a while..."); table.waitForActive(); System.out.println(dynamodb.getTable(tableName).describe()); } }
參考資料:
- AWS文件: 设置 DynamoDB Local
- StackOverflow: Run Dynamodb local as part of a Gradle Java project
- AWS文件: 使用适用于 Java 的 AWS 开发工具包创建示例表和上传数据
系列:
- [Java] AWS Lambda 入門
- [Java] AWS Lambda + DynamoDB
- AWS Lambda + API Gateway
- [Java] JAX-RS on AWS Lambda
- [Java] JUnit with DynamoDBLocal
沒有留言:
張貼留言