-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/
-- | A modern and easy-to-use wrapper for Docker-based Lambda implementations
--
-- Please see the README on GitHub at
-- https://github.com/RobertFischer/hs-aws-lambda#readme
@package hs-aws-lambda
@version 0.1.0.4
module AWS.Lambda.RuntimeAPI.Types
-- | Represents the data provided to an invocation of the lambda
data LambdaInvocation payload
LambdaInvocation :: Text -> Word64 -> Text -> Text -> Maybe MobileInvocationMetadata -> payload -> LambdaInvocation payload
-- | The unique ID for this request
[liAwsRequestId] :: LambdaInvocation payload -> Text
-- | The timetsamp of the deadline in Unix time
[liDeadlineMs] :: LambdaInvocation payload -> Word64
-- | This function's ARN
[liInvokedFunctionArn] :: LambdaInvocation payload -> Text
-- | The details about this AWS X-Ray trace
[liTraceId] :: LambdaInvocation payload -> Text
-- | The mobile data if the Lambda was called from the AWS Mobile SDK
[liMobileMetadata] :: LambdaInvocation payload -> Maybe MobileInvocationMetadata
-- | The input to the Lambda
[liPayload] :: LambdaInvocation payload -> payload
-- | The two possible results of a Lambda execution: success or failure
data LambdaResult payload
-- | Denotes success and provides the value to return
LambdaSuccess :: payload -> LambdaResult payload
-- | Denotes failure and provides details
LambdaError :: ErrorInfo -> LambdaResult payload
-- | Denotes that no invocation was provided
LambdaNop :: LambdaResult payload
data LambdaExecutionContext a m b
LambdaExecutionContext :: String -> Manager -> (LambdaInvocation a -> m (LambdaResult b)) -> LambdaExecutionContext a m b
[lecApiPrefix] :: LambdaExecutionContext a m b -> String
[lecHttpManager] :: LambdaExecutionContext a m b -> Manager
[lecHandler] :: LambdaExecutionContext a m b -> LambdaInvocation a -> m (LambdaResult b)
-- | Additional information available only when the Lambda is invoked
-- through the AWS Mobile SDK. This data is currently unstructured, but
-- will be updated to be structured in some future major release.
--
-- (Pull requests very welcome.)
data MobileInvocationMetadata
MobileInvocationMetadata :: Text -> Text -> MobileInvocationMetadata
-- | the client's execution context
[mimClientContext] :: MobileInvocationMetadata -> Text
-- | the client's identity
[mimCognitoIdentity] :: MobileInvocationMetadata -> Text
type ErrorType = Text
type ErrorMessage = Text
type ErrorInfo = (ErrorType, ErrorMessage)
instance Control.DeepSeq.NFData AWS.Lambda.RuntimeAPI.Types.MobileInvocationMetadata
instance GHC.Generics.Generic AWS.Lambda.RuntimeAPI.Types.MobileInvocationMetadata
instance GHC.Classes.Eq AWS.Lambda.RuntimeAPI.Types.MobileInvocationMetadata
instance GHC.Show.Show AWS.Lambda.RuntimeAPI.Types.MobileInvocationMetadata
instance Data.Aeson.Types.FromJSON.FromJSON1 AWS.Lambda.RuntimeAPI.Types.LambdaInvocation
instance Data.Aeson.Types.ToJSON.ToJSON1 AWS.Lambda.RuntimeAPI.Types.LambdaInvocation
instance GHC.Generics.Generic1 AWS.Lambda.RuntimeAPI.Types.LambdaInvocation
instance Data.Aeson.Types.FromJSON.FromJSON payload => Data.Aeson.Types.FromJSON.FromJSON (AWS.Lambda.RuntimeAPI.Types.LambdaInvocation payload)
instance Data.Aeson.Types.ToJSON.ToJSON payload => Data.Aeson.Types.ToJSON.ToJSON (AWS.Lambda.RuntimeAPI.Types.LambdaInvocation payload)
instance GHC.Generics.Generic (AWS.Lambda.RuntimeAPI.Types.LambdaInvocation payload)
instance GHC.Classes.Eq payload => GHC.Classes.Eq (AWS.Lambda.RuntimeAPI.Types.LambdaInvocation payload)
instance GHC.Show.Show payload => GHC.Show.Show (AWS.Lambda.RuntimeAPI.Types.LambdaInvocation payload)
instance Data.Aeson.Types.FromJSON.FromJSON1 AWS.Lambda.RuntimeAPI.Types.LambdaResult
instance Data.Aeson.Types.ToJSON.ToJSON1 AWS.Lambda.RuntimeAPI.Types.LambdaResult
instance GHC.Generics.Generic1 AWS.Lambda.RuntimeAPI.Types.LambdaResult
instance Data.Aeson.Types.FromJSON.FromJSON payload => Data.Aeson.Types.FromJSON.FromJSON (AWS.Lambda.RuntimeAPI.Types.LambdaResult payload)
instance Data.Aeson.Types.ToJSON.ToJSON payload => Data.Aeson.Types.ToJSON.ToJSON (AWS.Lambda.RuntimeAPI.Types.LambdaResult payload)
instance GHC.Generics.Generic (AWS.Lambda.RuntimeAPI.Types.LambdaResult payload)
instance GHC.Classes.Eq payload => GHC.Classes.Eq (AWS.Lambda.RuntimeAPI.Types.LambdaResult payload)
instance GHC.Show.Show payload => GHC.Show.Show (AWS.Lambda.RuntimeAPI.Types.LambdaResult payload)
instance Control.DeepSeq.NFData payload => Control.DeepSeq.NFData (AWS.Lambda.RuntimeAPI.Types.LambdaResult payload)
instance Control.DeepSeq.NFData1 AWS.Lambda.RuntimeAPI.Types.LambdaResult
instance Control.DeepSeq.NFData payload => Control.DeepSeq.NFData (AWS.Lambda.RuntimeAPI.Types.LambdaInvocation payload)
instance Control.DeepSeq.NFData1 AWS.Lambda.RuntimeAPI.Types.LambdaInvocation
instance Data.Aeson.Types.ToJSON.ToJSON AWS.Lambda.RuntimeAPI.Types.MobileInvocationMetadata
instance Data.Aeson.Types.FromJSON.FromJSON AWS.Lambda.RuntimeAPI.Types.MobileInvocationMetadata
module AWS.Lambda.RuntimeAPI
-- | This function is intended to be your main implementation.
-- Given a handler for LambdaInvocation instances, it loops
-- indefinitely (until AWS terminates the process) on the retrieval of
-- invocations. It feeds each of those invocations into the handler that
-- was passed in as an argument. It then posts the result back to AWS and
-- begins the loop again.
runLambda :: (MonadUnliftIO m, MonadFail m, MonadThrow m, FromJSON a, ToJSON b, NFData a, NFData b) => (LambdaInvocation a -> m (LambdaResult b)) -> m ()