Cats friendly


Run your http4s Apps as Google Cloud Functions.

Test Workflow Release Notes Maven Central Apache License 2.0 Scala Steward badge

Get started

Add the following to your build.sbt file:

libraryDependencies += "de.killaitis" %% "http4s-cloud-functions" % Http4sCloudFunctionsVersion

You will probably also have to include the assembly sbt plugin in your project/plugins.sbt to build an uber jar (sbt assembly):

addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "1.1.0")


// Your HTTP App
object MyCloudFunction {
  val httpApp = Router("/" -> HttpRoutes.of[IO] {
    case GET -> Root / "hello" / name =>
      Ok(s"Hello, $name.")

// Google Java Cloud Functions need a class without constructor parameters as an entry point.

class MyCloudFunction extends Http4sCloudFunction(MyCloudFunction.httpApp)


To deploy the Cloud Function jar, it has to be copied/moved in an otherwise empty directory. Then go to this directory and run the following:

gcloud functions deploy my-cloudfunction \
  --entry-point MyCloudFunction \
  --runtime java11 \
  --trigger-http \
  --memory 128MB \
  --allow-unauthenticated \
  --project {your project name} \  
  --region {your region} \