aws4s / aws4s   0.6.2

MIT License Website GitHub

Non-blocking AWS SDK for Scala exposing strongly-typed APIs built on top of http4s, fs2 and cats

Scala versions: 2.12

aws4s

Build Status Maven Central

Logo

Non-blocking AWS SDK for Scala exposing strongly-typed APIs built on top of http4s, fs2 and cats

Installation

libraryDependencies ++= Seq(
  "org.aws4s" %% "aws4s" % aws4sVersion,
)

Service Support

  • SQS: (sendMessage, receiveMessage, deleteMessage)
  • S3: (listBuckets, putObject, deleteObject, getObject)
  • KMS: (encrypt, decrypt, createKey, scheduleKeyDeletion)
  • DynamoDB (createTable, deleteTable)

Missing a service or a certain functionality for a service? Create a feature request. PRs are also welcome.

Usage Examples

import cats.effect.IO
import org.aws4s.Credentials
import org.aws4s.sqs.{DelaySeconds, MessageBody, Queue, Sqs}
import org.http4s.client.blaze.Http1Client // You'll need the `http4s-blaze-client` dependency for that

val credentials = () => Credentials("ACCESS_KEY_HERE", "SECRET_KEY_HERE")
val httpClient = Http1Client[IO]()

val sqs = Sqs(httpClient, credentials)

val queueUrl = "https://sqs.eu-central-1.amazonaws.com/FAKE_QUEUE_URL"
val q = Queue.unsafeFromString(queueUrl)

val action: IO[Unit] =
  sqs.sendMessage(q, MessageBody("Yo!"), Some(DelaySeconds(5)))
    .attempt
    .map {
      case Left(err) => System.err.println(err)
      case Right(success) => println(success)
    }

// Run final action to produce effects
println("Sending a message..")
action.unsafeRunSync()

Versioning

Unstable API until 1.0.0, then semantic versioning from there on.

Acknowledgements

Request signing logic is adapted from the code in this project.