| CARVIEW |
wai-lambda: Haskell Webapps on AWS Lambda

Turn any wai webapp ( spock, servant, etc) into a handler for AWS Lambda and API Gateway requests.
Works with any Lambda environment (nodejs, python, etc). Find out more in the README.
[Skip to Readme]
Downloads
- wai-lambda-0.1.1.0.tar.gz [browse] (Cabal source package)
- Package description (as included in the package)
Maintainer's Corner
For package maintainers and hackage trustees
Candidates
| Versions [RSS] | 0.1.0.0, 0.1.1.0 |
|---|---|
| Dependencies | aeson, base (<5), binary, bytestring, case-insensitive, deepseq, directory, http-types, iproute, network, temporary, text, unliftio, unordered-containers, vault, wai, wai-lambda [details] |
| License | MIT |
| Copyright | (c) 2019 David Dal Busco and Nicolas Mattia |
| Author | Nicolas Mattia <nicolas@nmattia.com> |
| Maintainer | Nicolas Mattia <nicolas@nmattia.com> |
| Uploaded | by nmattia at 2023-02-05T21:37:47Z |
| Category | Web |
| Home page | https://github.com/deckgo/wai-lambda#readme |
| Bug tracker | https://github.com/deckgo/wai-lambda/issues |
| Source repo | head: git clone https://github.com/deckgo/wai-lambda |
| Distributions | |
| Executables | wai-lambda |
| Downloads | 752 total (9 in the last 30 days) |
| Rating | (no votes yet) [estimated by Bayesian average] |
| Your Rating |
|
| Status | Docs available [build log] Last success reported on 2023-02-05 [all 1 reports] |
Readme for wai-lambda-0.1.1.0
[back to package description]
WAI Lambda - Haskell Webapps on AWS Lambda
This Haskell library turns any wai webapp (spock, servant, etc) into a handler for AWS Lambda and API Gateway requests.
{-# LANGUAGE OverloadedStrings #-}
import Network.Wai
import Network.HTTP.Types
import Network.Wai.Handler.Lambda (run)
app :: Application
app _ respond = do
putStrLn "I've done some IO here"
respond $ responseLBS
status200
[("Content-Type", "text/plain")]
"Hello, Web!"
main :: IO ()
main = run app
This doesn't require any particular Lambda environment. By following the
instructions in the build section the resulting zip file uploaded
to AWS Lambda is typically smaller than 1MB. For basic webapps the request
handling duration (as reported by AWS) is between 1 and 5 milliseconds.
- Install with either Cabal, stack or Nix.
- Build for AWS with Nix and fully static executables.
- Deploy to AWS with Nix and Terraform.
Install
Cabal
Installing with Cabal:
$ cabal install wai-lambda
Stack
If you use stack and wai-lambda is not included in your snapshot, add it to
the extra-deps:
extra-deps:
- wai-lambda-0.1.0.0
or from GitHub:
packages:
- ...
- location:
git: https://github.com/deckgo/wai-lambda.git
commit: <some commit>
extra-dep: true
Nix
You do not have to do anything if you use cabal2nix and a Nix commit that
includes wai-lambda in its Hackage dependencies. If you want to use a
specific commit of wai-lambda we recommend using niv:
$ niv add deckgo/wai-lambda
Then add an override to your Nix packages:
rec
{
sources = import ./nix/sources.nix; # from niv
pkgs = import sources.nixpkgs {};
myHaskellPackages = pkgs.haskellPackages.override
{ overrides = self: super:
{ "wai-lambda" =
super.callCabal2nix "wai-lambda" sources.wai-lambda;
};
};
}
See also the build section for producing AWS Lambda packages with nix.
Build
TODO
For inspiration on how to build fully static executables with Nix, see DeckDeckGo
Deploy
TODO
For inspiration on how to deploy with Terraform and Nix, see DeckDeckGo
License
MIT © David Dal Busco and Nicolas Mattia