Skip to content
Non-blocking AWS SDK for Scala exposing strongly-typed APIs built on top of http4s, fs2 and cats
Branch: master
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
.gitignore
.scalafmt.conf
.travis.yml
LICENSE
README.md
_config.yml
aws4s-small.png
aws4s.png
build.sbt
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.

You can’t perform that action at this time.