Skip to content

Latest commit

 

History

History
92 lines (71 loc) · 3.42 KB

README.ja.md

File metadata and controls

92 lines (71 loc) · 3.42 KB

reactive-aws-clients

ScalaのためのAWSクライアントライブラリ。

CircleCI Maven Central Scaladoc License: MIT

特徴

  • AWS SDK for Java V2 対応
  • AWS ClientのソースコードからScalaラッパーを自動生成
    • Java SDKで使えるメソッドはすべて使うことができます(ただし、Consumer型の引数を使うメソッドは使えません)
  • Javaモデルクラスのエンリッチ
    • モデルクラスなどはJavaの既存の型を利用します。これらのモデルクラスをエンリッチすることでScala用メソッド(AsScalaサフィックス)を追加できます
  • 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

動作環境

  • 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