ScalaのためのAWSクライアントライブラリ。
- AWS SDK for Java V2 対応
- AWS ClientのソースコードからScalaラッパーを自動生成
- Java SDKで使えるメソッドはすべて使うことができます(ただし、Consumer型の引数を使うメソッドは使えません)
- Javaモデルクラスのエンリッチ
- モデルクラスなどはJavaの既存の型を利用します。これらのモデルクラスをエンリッチすることでScala用メソッド(
AsScala
サフィックス)を追加できます
- モデルクラスなどはJavaの既存の型を利用します。これらのモデルクラスをエンリッチすることでScala用メソッド(
- Scalaの非同期型に対応
- core
scala.concurrent.Future
- monix
monix.eval.Task
monix.reactive.Observable
- cats-effect
cats.effect.IO
- akka-stream
akka.stream.scaladsl.Source
akka.stream.scaladsl.Flow
- core
- Java SE 8
- Scala
- 2.11.x
- 2.12.x
- 2.13.x
build.sbt
に依存関係を追加してください。
val libraryName = "..." // e.g.) dynamodb
val version = "1.1.5"
libraryDependencies += Seq(
"com.github.j5ik2o" %% s"reactive-aws-$libraryName-core" % version,
"com.github.j5ik2o" %% s"reactive-aws-$libraryName-monix" % version, // optional
"com.github.j5ik2o" %% s"reactive-aws-$libraryName-akka" % version, // optional
"com.github.j5ik2o" %% s"reactive-aws-$libraryName-cats" % version, // optional
)
以下はdynamodbの例です。他のライブラリを使う場合もほとんど同じです。
import com.github.j5ik2o.reactive.aws.dynamodb._
import com.github.j5ik2o.reactive.aws.dynamodb.implicits._ // エンリッチのためのインポート
import software.amazon.awssdk.services.dynamodb.model._
import software.amazon.awssdk.services.dynamodb.{ DynamoDbAsyncClient => JavaDynamoDbAsyncClient }
val underlying = JavaDynamoDbAsyncClient
.builder()
// ...
.build()
val client = DynamoDbAsyncClient(underlying) // Javaクライントのインスタンスをコンストラクタに渡す
val putItemRequest = PutItemRequest // Javaの型をそのまま利用可能
.builder()
.tableName(tableName)
.itemAsScala(
Map[String, AttributeValue](
"Id" -> AttributeValue.builder().s("abc").build(),
"Name" -> AttributeValue.builder().s("xyz").build()
)
) // エンリッチされたScala用メソッドが使える
.build()
val putItemResponseFuture = client.putItem(putItemRequest)
以下のコマンドを実行してください(mvnInstall の実行にはMavenが必要です)
$ sbt mvnClean mvnInstall // 初回のみ
$ sbt compile