连接AWS的DynamoDB例子(scala版),scala连接dynamoDB的案例:
废话不多说,直接上代码
import com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient import com.amazonaws.services.dynamodbv2.document.DynamoDB import com.amazonaws.services.dynamodbv2.document.Table import com.amazonaws.services.dynamodbv2.model.KeySchemaElement import com.amazonaws.services.dynamodbv2.model.KeyType import com.amazonaws.services.dynamodbv2.model.AttributeDefinition import com.amazonaws.services.dynamodbv2.model.ScalarAttributeType import com.amazonaws.services.dynamodbv2.model.ProvisionedThroughput import com.amazonaws.services.dynamodbv2.document.Item import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMapper import com.amazonaws.auth.BasicAWSCredentials import com.amazonaws.services.dynamodbv2.document.PrimaryKey import com.amazonaws.regions.Regions import java.util.Arrays import com.amazonaws.services.dynamodbv2.document.spec.ScanSpec import com.amazonaws.services.dynamodbv2.document.internal.IteratorSupport import com.amazonaws.services.dynamodbv2.document.ScanOutcomeclass DynamoDBService() {
//产品的秘钥 就是账号和密码 连接本地安装的DynamoDB的时候使用 private val credentials: BasicAWSCredentials = new BasicAWSCredentials("wwwwwwwwwwww", "mmmmmmmmmm")
private val client: AmazonDynamoDBClient = if (true) { //连接本地的DynamoDB new AmazonDynamoDBClient(credentials).withEndpoint(options.dynamoDbEndpoint) } else { //直接连接AWS上的DynamoDB new AmazonDynamoDBClient().withEndpoint(options.dynamoDbEndpoint) } //创建DynamoDB实例 val dynamoDB: DynamoDB = new DynamoDB(client)
val dbMapper: DynamoDBMapper = new DynamoDBMapper(client) //创建一个表 def createTable(tableName: String): Unit = { dynamoDB.createTable(tableName, Arrays.asList(new KeySchemaElement("主键", KeyType.HASH), new KeySchemaElement("排序键", KeyType.RANGE)), Arrays.asList(new AttributeDefinition("主键", ScalarAttributeType.S), new AttributeDefinition("排序键", ScalarAttributeType.N)), new ProvisionedThroughput(10L, 10L)).waitForActive() } //添加一个项目 def addItem(tableName: String, eventString: String, value: Long, dateTime: Long): Unit = { dynamoDB.getTable(tableName).putItem(new Item().withPrimaryKey("主键", eventString, "排序键", dateTime).withLong("value", value)) }
//查询 def selectTableByName(tableName: String): IteratorSupport[Item, ScanOutcome] = { dynamoDB.getTable(tableName).scan(new ScanSpec).iterator() }
}
主要注意的就是下载本地版本的DynamoDB,连接的时候要加秘钥