{-|
Module : AWSLambda.Handler
Stability : experimental
Portability : POSIX
Tools for running Haskell on AWS Lambda using Serverless.
= Usage
To deploy a Haskell function on AWS Lambda:
* Initialise a Serverless project in the same directory as your Stack-enabled
package and install the @serverless-haskell@ plugin:
> npm init .
> npm install --save serverless serverless-haskell
* Create @serverless.yml@ with the following contents:
> provider:
> name: aws
> runtime: nodejs6.10
>
> functions:
> myfunc:
> handler: mypackage.mypackage-exe
> # Here, mypackage is the Haskell package name and mypackage-exe is the
> # executable name as defined in the Cabal file
>
> plugins:
> - serverless-haskell
* Write your @main@ function using 'AWSLambda.lambdaMain'.
* Use @sls deploy@ to deploy the executable to AWS Lambda. __Note__: @sls deploy
function@ is not supported.
The `serverless-haskell` plugin will build the package using Stack and upload
it to AWS together with a JavaScript wrapper to pass the input and output
from/to AWS Lambda.
You can test the function and see the invocation results with `sls invoke
myfunc`.
= Additional features
Configuration options are passed to the plugin under @haskell@ key in @custom@
section of @serverless.yml@.
* To add flags to @stack build@, specify them as an array under
@stackBuildArgs@:
> custom:
> haskell:
> stackBuildArgs:
> - --pedantic
> - --allow-different-user
* To start the executable with extra arguments, add them to @arguments@ under
the function name:
> custom:
> haskell:
> arguments:
> myfunc:
> - --arg1
> - --arg2
> - arg3
* To include dependent libraries, list them under @extraLibraries@. The
libraries will be uploaded to AWS Lambda along with the executable.
> custom:
> haskell:
> extraLibraries:
> - libpcre.so.3
-}
module AWSLambda
( Handler.lambdaMain
, module AWSLambda.Events
) where
import qualified AWSLambda.Handler as Handler
import AWSLambda.Events