Localstack

Localstack is the primary tool of choice for localized AWS development. It offers a mock that allows users to write integration tests for AWS services without deploying anything to the cloud. This is extremely useful.

There are some specific ways that we need to configure clients to work with Localstack's Docker offering. This library offers tooling to make this configuration easy.

Installation

libraryDependencies += "io.github.etspaceman" %% "kinesis4cats-shared-localstack" % "0.0.32"

Configuration

Configuration is loaded through Ciris

Environment Variable System Property Default Description
LOCALSTACK_PORT localstack.port 4566 Localstack port
LOCALSTACK_PROTOCOL localstack.protocol https Either https or http. Both work on the same host/port
LOCALSTACK_HOST localstack.host localhost Localstack hostname
LOCALSTACK_AWS_REGION localstack.aws.region us-east-1 Default region used for API calls to Localstack
LOCALSTACK_CLOUDWATCH_PORT localstack.cloudwatch.port localstack.port Localstack port for Cloudwatch
LOCALSTACK_CLOUDWATCH_PROTOCOL localstack.cloudwatch.protocol localstack.protocol Localstack protocol for Cloudwatch
LOCALSTACK_CLOUDWATCH_HOST localstack.cloudwatch.host localstack.host Localstack hostname for Cloudwatch
LOCALSTACK_KINESIS_PORT localstack.kinesis.port localstack.port Localstack port for Kinesis
LOCALSTACK_KINESIS_PROTOCOL localstack.kinesis.protocol localstack.protocol Localstack protocol for Kinesis
LOCALSTACK_KINESIS_HOST localstack.kinesis.host localstack.host Localstack hostname for Kinesis
LOCALSTACK_DYNAMO_PORT localstack.dynamo.port localstack.port Localstack port for Dynamo
LOCALSTACK_DYNAMO_PROTOCOL localstack.dynamo.protocol localstack.protocol Localstack protocol for Dynamo
LOCALSTACK_DYNAMO_HOST localstack.dynamo.host localstack.host Localstack hostname for Dynamo

Usage

import cats.effect.IO

import kinesis4cats.localstack.LocalstackConfig

// Load as a Ciris ConfigValue
LocalstackConfig.read()

// Load as an effect
LocalstackConfig.load[IO]()

// Load as a resource
LocalstackConfig.resource[IO]()