ScalaでDynamoDBLocal
会社に行ってちょっと重要なプログラム修正をしようと思ってたけど気づいたらこんな時間。ウソ、面倒臭くなって引きこもり。まぁ休日出勤なんてやらんほうがええはずや。
ということで暇なのでScalaのお勉強でも。題材としてはDynamoDBLocalでDynamoDBの基本的な操作をScalaでやってみようかなーと。ちなみに自分は下記のような状態。
記事最後の参考サイトを読みながらやれば何とかできる感じ。途中よくわからなくなってニコ動でGTA5のおもしろ動画を見ながらたらたらやってたらできた!
自分はJavaが全然わからないので、まずどうやったらJava(Scala)プログラムを実行できるのか分からなかった。あと、sbtって何?って状態。
まぁ結局はクラスメソッドさんの記事の通りのフォルダ構成、フォルダ内容にしてsbtでrunをしたら動いた。…とくに何かビルド設定したわけじゃないし、フォルダ構成とかが大事なのかな?
参考サイト
AWS SDK for Javaを使う#Amazon DynamoDB
AWS SDK for Javaを使う#EC2
DyanmoDB Localを試してみた。〜aws-cli叩くまで~
DynamoDB Localをaws-java-sdkから操作
ソースコード
きったねーのはわかってる。クラスメソッドさんのDynamoDBサンプルでビルドエラーになったところ(KeyScheme近辺)をちょっと変えて、あとDynamoDBLocalようにEndpointの設定をやっている
import com.amazonaws._ import com.amazonaws.auth._ import scala.collection.JavaConversions._ import com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient; import com.amazonaws.services.dynamodbv2.model._; object EC2Main extends App { val accessKey = "accesskey" val secretKey = "secretkey" val credentials = new BasicAWSCredentials(accessKey,secretKey) //クライアント作成 val cli = new AmazonDynamoDBClient(credentials) //val usWest2 = Region.getRegion(Regions.US_WEST_2); //cli.setRegion(usWest2); cli.setEndpoint("http://localhost:18000") //テーブル定義 val tableName = "MyUser" val createTableRequest = new CreateTableRequest() .withTableName(tableName) .withKeySchema( new KeySchemaElement().withAttributeName("id").withKeyType(KeyType.HASH) ) .withAttributeDefinitions( new AttributeDefinition().withAttributeName("id").withAttributeType(ScalarAttributeType.S) ) .withProvisionedThroughput( new ProvisionedThroughput().withReadCapacityUnits(10L).withWriteCapacityUnits(10L) ) val createdTableDescription = cli.createTable(createTableRequest).getTableDescription() println("Created Table: " + createdTableDescription) val describeTableRequest = new DescribeTableRequest().withTableName(tableName) val tableDescription = cli.describeTable(describeTableRequest).getTable() println("Table Description: " + tableDescription) }