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

Latest commit

Fetching latest commit…
Cannot retrieve the latest commit at this time.


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 Updated 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


Build Status Maven Central


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


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 = ""
val q = Queue.unsafeFromString(queueUrl)

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

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


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


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

You can’t perform that action at this time.