Non-blocking AWS SDK for Scala exposing strongly-typed APIs built on top of http4s, fs2 and cats
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
project Upgraded sbt to 1.1.0 Jan 9, 2018
src Fixed validation of SQS message size (Closes #32) Jun 20, 2018
.gitignore Initial commit Dec 3, 2017
.scalafmt.conf More intuitive type parameters (#18) Jan 10, 2018
.travis.yml Smoke test for KMS Dec 14, 2017
LICENSE Initial commit Dec 3, 2017
README.md Updated README.md Feb 18, 2018
_config.yml Set theme jekyll-theme-cayman Dec 3, 2017
aws4s-small.png Logo Dec 3, 2017
aws4s.png Logo Dec 3, 2017
build.sbt http4s 0.18.0 Feb 2, 2018
version.sbt Setting version to 0.6.3-SNAPSHOT Jun 20, 2018

README.md

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.