Configuring the Dispatcher
The dispatcher is a special main function that checks which handler it has to run, and runs it.
This is very easy to do in aws-lambda-haskell-runtime. Just use the runLambdaHaskellRuntime function.
runLambdaHaskellRuntime ::
RuntimeContext handlerType m context request response error =>
DispatcherOptions ->
IO context ->
(forall a. m a -> IO a) ->
HandlersM handlerType m context request response error () ->
IO ()
It may seem like an intimidating type signature, but let's go through each parameter and see what it means.
DispatcherOptionsare the configuration options of the dispatcher function. You can just usedefaultDispatcherOptions.- The
IO contextaction is how you initialize the context object. (forall a. m a -> IO a)is used when you have your handler in a custom monad. It transforms that custom monadic action intoIO. If your handlers run inIO, just useid.HandlersM handlerType m context request response error ()is the action that registers the handlers under a given name.
For the person validator example we set up in the previous section, it will look like this:
import Aws.Lambda
import qualified Lib
main :: IO ()
main =
runLambdaHaskellRuntime
defaultDispatcherOptions
(pure ())
id $ do
-- You could also register multiple handlers
addStandaloneLambdaHandler "handler" Lib.handler
