-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Deploying Haskell code onto AWS Lambda using Serverless -- -- Utilities to help process the events from AWS Lambda when deployed -- with the serverless-haskell plugin. @package serverless-haskell @version 0.0.4 module AWSLambda.Events.Records newtype RecordsEvent a RecordsEvent :: [a] -> RecordsEvent a [_reRecords] :: RecordsEvent a -> [a] reRecords :: forall a_af8r a_aozy. Iso (RecordsEvent a_af8r) (RecordsEvent a_aozy) [a_af8r] [a_aozy] instance GHC.Show.Show a => GHC.Show.Show (AWSLambda.Events.Records.RecordsEvent a) instance GHC.Classes.Eq a => GHC.Classes.Eq (AWSLambda.Events.Records.RecordsEvent a) instance Data.Aeson.Types.FromJSON.FromJSON a => Data.Aeson.Types.FromJSON.FromJSON (AWSLambda.Events.Records.RecordsEvent a) -- | Based on -- https://github.com/aws/aws-lambda-dotnet/tree/master/Libraries/src/Amazon.Lambda.KinesisEvents module AWSLambda.Events.KinesisEvent data KinesisRecord KinesisRecord :: !Record -> !Text -> KinesisRecord [_krRecord] :: KinesisRecord -> !Record [_krKinesisSchemaVersion] :: KinesisRecord -> !Text krRecord :: Lens' KinesisRecord Record krKinesisSchemaVersion :: Lens' KinesisRecord Text data KinesisEventRecord KinesisEventRecord :: !KinesisRecord -> !Text -> !Text -> !Text -> !Text -> !Text -> !Text -> !Region -> KinesisEventRecord [_kerKinesis] :: KinesisEventRecord -> !KinesisRecord [_kerEventSource] :: KinesisEventRecord -> !Text [_kerEventID] :: KinesisEventRecord -> !Text [_kerInvokeIdentityArn] :: KinesisEventRecord -> !Text [_kerEventVersion] :: KinesisEventRecord -> !Text [_kerEventName] :: KinesisEventRecord -> !Text [_kerEventSourceARN] :: KinesisEventRecord -> !Text [_kerAwsRegion] :: KinesisEventRecord -> !Region kerKinesis :: Lens' KinesisEventRecord KinesisRecord kerInvokeIdentityArn :: Lens' KinesisEventRecord Text kerEventVersion :: Lens' KinesisEventRecord Text kerEventSourceARN :: Lens' KinesisEventRecord Text kerEventSource :: Lens' KinesisEventRecord Text kerEventName :: Lens' KinesisEventRecord Text kerEventID :: Lens' KinesisEventRecord Text kerAwsRegion :: Lens' KinesisEventRecord Region type KinesisEvent = RecordsEvent KinesisEventRecord instance Data.Aeson.Types.FromJSON.FromJSON AWSLambda.Events.KinesisEvent.KinesisEventRecord instance GHC.Show.Show AWSLambda.Events.KinesisEvent.KinesisEventRecord instance GHC.Classes.Eq AWSLambda.Events.KinesisEvent.KinesisEventRecord instance GHC.Show.Show AWSLambda.Events.KinesisEvent.KinesisRecord instance GHC.Classes.Eq AWSLambda.Events.KinesisEvent.KinesisRecord instance Data.Aeson.Types.FromJSON.FromJSON AWSLambda.Events.KinesisEvent.KinesisRecord -- | Based on -- https://github.com/aws/aws-lambda-dotnet/tree/master/Libraries/src/Amazon.Lambda.SNSEvents module AWSLambda.Events.SNSEvent data MessageAttribute MessageAttribute :: !Text -> !Text -> MessageAttribute [_maType] :: MessageAttribute -> !Text [_maValue] :: MessageAttribute -> !Text maValue :: Lens' MessageAttribute Text maType :: Lens' MessageAttribute Text data SNSMessage SNSMessage :: !Text -> !(HashMap Text MessageAttribute) -> !Text -> !Text -> !Text -> !Text -> !Text -> !UTCTime -> !Text -> !Text -> !Text -> SNSMessage [_smMessage] :: SNSMessage -> !Text [_smMessageAttributes] :: SNSMessage -> !(HashMap Text MessageAttribute) [_smMessageId] :: SNSMessage -> !Text [_smSignature] :: SNSMessage -> !Text [_smSignatureVersion] :: SNSMessage -> !Text [_smSigningCertUrl] :: SNSMessage -> !Text [_smSubject] :: SNSMessage -> !Text [_smTimestamp] :: SNSMessage -> !UTCTime [_smTopicArn] :: SNSMessage -> !Text [_smType] :: SNSMessage -> !Text [_smUnsubscribeUrl] :: SNSMessage -> !Text smUnsubscribeUrl :: Lens' SNSMessage Text smType :: Lens' SNSMessage Text smTopicArn :: Lens' SNSMessage Text smTimestamp :: Lens' SNSMessage UTCTime smSubject :: Lens' SNSMessage Text smSigningCertUrl :: Lens' SNSMessage Text smSignatureVersion :: Lens' SNSMessage Text smSignature :: Lens' SNSMessage Text smMessageId :: Lens' SNSMessage Text smMessageAttributes :: Lens' SNSMessage (HashMap Text MessageAttribute) smMessage :: Lens' SNSMessage Text data SNSRecord SNSRecord :: !Text -> !Text -> !Text -> !SNSMessage -> SNSRecord [_srEventVersion] :: SNSRecord -> !Text [_srEventSubscriptionArn] :: SNSRecord -> !Text [_srEventSource] :: SNSRecord -> !Text [_srSns] :: SNSRecord -> !SNSMessage srSns :: Lens' SNSRecord SNSMessage srEventVersion :: Lens' SNSRecord Text srEventSubscriptionArn :: Lens' SNSRecord Text srEventSource :: Lens' SNSRecord Text type SNSEvent = RecordsEvent SNSRecord instance Data.Aeson.Types.FromJSON.FromJSON AWSLambda.Events.SNSEvent.SNSRecord instance GHC.Show.Show AWSLambda.Events.SNSEvent.SNSRecord instance GHC.Classes.Eq AWSLambda.Events.SNSEvent.SNSRecord instance Data.Aeson.Types.FromJSON.FromJSON AWSLambda.Events.SNSEvent.SNSMessage instance GHC.Show.Show AWSLambda.Events.SNSEvent.SNSMessage instance GHC.Classes.Eq AWSLambda.Events.SNSEvent.SNSMessage instance Data.Aeson.Types.FromJSON.FromJSON AWSLambda.Events.SNSEvent.MessageAttribute instance GHC.Show.Show AWSLambda.Events.SNSEvent.MessageAttribute instance GHC.Classes.Eq AWSLambda.Events.SNSEvent.MessageAttribute -- | Entry point for AWS Lambda handlers deployed with -- serverless-haskell plugin. module AWSLambda.Handler -- | Process incoming events from serverless-haskell using a -- provided function. -- -- The handler receives the input event given to the AWS Lambda function, -- and its return value is returned from the function. -- -- This is intended to be used as main, for example: -- --
--   import qualified Data.Aeson as Aeson
--   
--   import AWSLambda
--   
--   main = lambdaMain handler
--   
--   handler :: Aeson.Value -> IO [Int]
--   handler evt = do
--     putStrLn "This should go to logs"
--     print evt
--     pure [1, 2, 3]
--   
-- -- The handler function can receive arbitrary JSON values from custom -- invocations, or one of the events from the AWSLambda.Events -- module, such as S3Event: -- --
--   import AWSLambda.Events.S3Event
--   
--   handler :: S3Event -> IO ()
--   handler evt = do
--     print $ records evt
--   
-- -- If the Lambda function needs to process several types of events, use -- Alternative to combine several handlers: -- --
--   import AWSLambda
--   import AWSLambda.Events.S3Event
--   import Data.Aeson
--   import Data.Aeson.Alternative
--   
--   main = lambdaMain $ handlerS3 `alternative` handlerCustom
--   
--   handlerS3 :: S3Event -> IO ()
--   handlerS3 = _
--   
--   handlerCustom :: Value -> IO ()
--   handlerCustom = _
--   
-- -- When run outside the AWS Lambda environment, the input is read as JSON -- from the command line, and the result of the execution is printed, -- also as JSON, to the standard output. lambdaMain :: (FromJSON event, ToJSON res) => (event -> IO res) -> IO () module AWSLambda.Orphans instance Data.Aeson.Types.FromJSON.FromJSON Network.AWS.S3.Internal.BucketName instance Data.Aeson.Types.FromJSON.FromJSON Network.AWS.S3.Internal.ObjectKey instance Data.Aeson.Types.FromJSON.FromJSON Network.AWS.S3.Internal.ETag instance Data.Aeson.Types.FromJSON.FromJSON Network.AWS.S3.Types.Sum.Event -- | Based on -- https://github.com/aws/aws-lambda-dotnet/tree/master/Libraries/src/Amazon.Lambda.S3Events module AWSLambda.Events.S3Event newtype UserIdentityEntity UserIdentityEntity :: Text -> UserIdentityEntity [_uiePrincipalId] :: UserIdentityEntity -> Text uiePrincipalId :: Iso' UserIdentityEntity Text data S3BucketEntity S3BucketEntity :: !Text -> !BucketName -> !UserIdentityEntity -> S3BucketEntity [_sbeArn] :: S3BucketEntity -> !Text [_sbeName] :: S3BucketEntity -> !BucketName [_sbeOwnerIdentity] :: S3BucketEntity -> !UserIdentityEntity sbeOwnerIdentity :: Lens' S3BucketEntity UserIdentityEntity sbeName :: Lens' S3BucketEntity BucketName sbeArn :: Lens' S3BucketEntity Text data S3ObjectEntity S3ObjectEntity :: !(Maybe ETag) -> !ObjectKey -> !(Maybe Integer) -> !Text -> !(Maybe Text) -> S3ObjectEntity [_soeETag] :: S3ObjectEntity -> !(Maybe ETag) [_soeKey] :: S3ObjectEntity -> !ObjectKey [_soeSize] :: S3ObjectEntity -> !(Maybe Integer) [_soeSequencer] :: S3ObjectEntity -> !Text [_soeVersionId] :: S3ObjectEntity -> !(Maybe Text) soeVersionId :: Lens' S3ObjectEntity (Maybe Text) soeSize :: Lens' S3ObjectEntity (Maybe Integer) soeSequencer :: Lens' S3ObjectEntity Text soeKey :: Lens' S3ObjectEntity ObjectKey soeETag :: Lens' S3ObjectEntity (Maybe ETag) newtype RequestParametersEntity RequestParametersEntity :: Text -> RequestParametersEntity [_rpeSourceIPAddress] :: RequestParametersEntity -> Text rpeSourceIPAddress :: Iso' RequestParametersEntity Text data ResponseElementsEntity ResponseElementsEntity :: !Text -> !Text -> ResponseElementsEntity [_reeXAmzId2] :: ResponseElementsEntity -> !Text [_reeXAmzRequestId] :: ResponseElementsEntity -> !Text reeXAmzRequestId :: Lens' ResponseElementsEntity Text reeXAmzId2 :: Lens' ResponseElementsEntity Text data S3Entity S3Entity :: !S3BucketEntity -> !Text -> !S3ObjectEntity -> !Text -> S3Entity [_seBucket] :: S3Entity -> !S3BucketEntity [_seConfigurationId] :: S3Entity -> !Text [_seObject] :: S3Entity -> !S3ObjectEntity [_seS3SchemaVersion] :: S3Entity -> !Text seS3SchemaVersion :: Lens' S3Entity Text seObject :: Lens' S3Entity S3ObjectEntity seConfigurationId :: Lens' S3Entity Text seBucket :: Lens' S3Entity S3BucketEntity data S3EventNotification S3EventNotification :: !Region -> !Event -> !Text -> !UTCTime -> !Text -> !RequestParametersEntity -> !ResponseElementsEntity -> !S3Entity -> !UserIdentityEntity -> S3EventNotification [_senAwsRegion] :: S3EventNotification -> !Region [_senEventName] :: S3EventNotification -> !Event [_senEventSource] :: S3EventNotification -> !Text [_senEventTime] :: S3EventNotification -> !UTCTime [_senEventVersion] :: S3EventNotification -> !Text [_senRequestParameters] :: S3EventNotification -> !RequestParametersEntity [_senResponseElements] :: S3EventNotification -> !ResponseElementsEntity [_senS3] :: S3EventNotification -> !S3Entity [_senUserIdentity] :: S3EventNotification -> !UserIdentityEntity senUserIdentity :: Lens' S3EventNotification UserIdentityEntity senS3 :: Lens' S3EventNotification S3Entity senResponseElements :: Lens' S3EventNotification ResponseElementsEntity senRequestParameters :: Lens' S3EventNotification RequestParametersEntity senEventVersion :: Lens' S3EventNotification Text senEventTime :: Lens' S3EventNotification UTCTime senEventSource :: Lens' S3EventNotification Text senEventName :: Lens' S3EventNotification Event senAwsRegion :: Lens' S3EventNotification Region type S3Event = RecordsEvent S3EventNotification instance GHC.Show.Show AWSLambda.Events.S3Event.S3EventNotification instance GHC.Classes.Eq AWSLambda.Events.S3Event.S3EventNotification instance Data.Aeson.Types.FromJSON.FromJSON AWSLambda.Events.S3Event.S3EventNotification instance Data.Aeson.Types.FromJSON.FromJSON AWSLambda.Events.S3Event.S3Entity instance GHC.Show.Show AWSLambda.Events.S3Event.S3Entity instance GHC.Classes.Eq AWSLambda.Events.S3Event.S3Entity instance GHC.Show.Show AWSLambda.Events.S3Event.ResponseElementsEntity instance GHC.Classes.Eq AWSLambda.Events.S3Event.ResponseElementsEntity instance Data.Aeson.Types.FromJSON.FromJSON AWSLambda.Events.S3Event.ResponseElementsEntity instance Data.Aeson.Types.FromJSON.FromJSON AWSLambda.Events.S3Event.RequestParametersEntity instance GHC.Show.Show AWSLambda.Events.S3Event.RequestParametersEntity instance GHC.Classes.Eq AWSLambda.Events.S3Event.RequestParametersEntity instance Data.Aeson.Types.FromJSON.FromJSON AWSLambda.Events.S3Event.S3ObjectEntity instance GHC.Show.Show AWSLambda.Events.S3Event.S3ObjectEntity instance GHC.Classes.Eq AWSLambda.Events.S3Event.S3ObjectEntity instance Data.Aeson.Types.FromJSON.FromJSON AWSLambda.Events.S3Event.S3BucketEntity instance GHC.Show.Show AWSLambda.Events.S3Event.S3BucketEntity instance GHC.Classes.Eq AWSLambda.Events.S3Event.S3BucketEntity instance Data.Aeson.Types.FromJSON.FromJSON AWSLambda.Events.S3Event.UserIdentityEntity instance GHC.Show.Show AWSLambda.Events.S3Event.UserIdentityEntity instance GHC.Classes.Eq AWSLambda.Events.S3Event.UserIdentityEntity module AWSLambda.Events data DynamoDBEvent data SESEvent data CognitoEvent data CloudFormationEvent data CloudWatchLogsEvent data CloudWatchEventsEvent data CodeCommitEvent data ConfigEvent data AlexaEvent data LexEvent data APIGatewayEvent data IoTButtonEvent data CloudFrontEvent data FirehoseEvent data InvokeEvent data LambdaEvent S3 :: !S3Event -> LambdaEvent DynamoDB :: !DynamoDBEvent -> LambdaEvent KinesisStream :: !KinesisEvent -> LambdaEvent SNS :: !SNSEvent -> LambdaEvent SES :: !SESEvent -> LambdaEvent Cognito :: !CognitoEvent -> LambdaEvent CloudFormation :: !CloudFormationEvent -> LambdaEvent CloudWatchLogs :: !CloudWatchLogsEvent -> LambdaEvent CloudWatchEvents :: !CloudWatchEventsEvent -> LambdaEvent CodeCommit :: !CodeCommitEvent -> LambdaEvent Config :: !ConfigEvent -> LambdaEvent Alexa :: !AlexaEvent -> LambdaEvent Lex :: !LexEvent -> LambdaEvent APIGateway :: !APIGatewayEvent -> LambdaEvent IoTButton :: !IoTButtonEvent -> LambdaEvent CloudFront :: !CloudFrontEvent -> LambdaEvent Firehose :: !FirehoseEvent -> LambdaEvent Invoke :: !InvokeEvent -> LambdaEvent Custom :: !Value -> LambdaEvent _Custom :: Prism' LambdaEvent Value _Invoke :: Prism' LambdaEvent InvokeEvent _Firehose :: Prism' LambdaEvent FirehoseEvent _CloudFront :: Prism' LambdaEvent CloudFrontEvent _IoTButton :: Prism' LambdaEvent IoTButtonEvent _APIGateway :: Prism' LambdaEvent APIGatewayEvent _Lex :: Prism' LambdaEvent LexEvent _Alexa :: Prism' LambdaEvent AlexaEvent _Config :: Prism' LambdaEvent ConfigEvent _CodeCommit :: Prism' LambdaEvent CodeCommitEvent _CloudWatchEvents :: Prism' LambdaEvent CloudWatchEventsEvent _CloudWatchLogs :: Prism' LambdaEvent CloudWatchLogsEvent _CloudFormation :: Prism' LambdaEvent CloudFormationEvent _Cognito :: Prism' LambdaEvent CognitoEvent _SES :: Prism' LambdaEvent SESEvent _SNS :: Prism' LambdaEvent SNSEvent _KinesisStream :: Prism' LambdaEvent KinesisEvent _DynamoDB :: Prism' LambdaEvent DynamoDBEvent _S3 :: Prism' LambdaEvent S3Event instance Data.Aeson.Types.FromJSON.FromJSON AWSLambda.Events.LambdaEvent -- | Tools for running Haskell on AWS Lambda. -- --

Usage

-- -- To deploy a Haskell function on AWS Lambda: -- -- -- --
--   provider:
--     name: aws
--     runtime: nodejs6.10
--   
--   functions:
--     myfunc:
--       handler: mypackage.myfunc
--       # Here, mypackage is the Haskell package name and myfunc is the executable
--       # name as defined in the Cabal file
--   
--   plugins:
--     - serverless-haskell
--   
-- -- -- --

Additional features

-- -- To add flags to stack build, add the following key to -- serverless.yml: -- --
--   custom:
--     haskell:
--       stackBuildArgs:
--         - --pedantic
--         - --allow-different-user
--   
module AWSLambda -- | Process incoming events from serverless-haskell using a -- provided function. -- -- The handler receives the input event given to the AWS Lambda function, -- and its return value is returned from the function. -- -- This is intended to be used as main, for example: -- --
--   import qualified Data.Aeson as Aeson
--   
--   import AWSLambda
--   
--   main = lambdaMain handler
--   
--   handler :: Aeson.Value -> IO [Int]
--   handler evt = do
--     putStrLn "This should go to logs"
--     print evt
--     pure [1, 2, 3]
--   
-- -- The handler function can receive arbitrary JSON values from custom -- invocations, or one of the events from the AWSLambda.Events -- module, such as S3Event: -- --
--   import AWSLambda.Events.S3Event
--   
--   handler :: S3Event -> IO ()
--   handler evt = do
--     print $ records evt
--   
-- -- If the Lambda function needs to process several types of events, use -- Alternative to combine several handlers: -- --
--   import AWSLambda
--   import AWSLambda.Events.S3Event
--   import Data.Aeson
--   import Data.Aeson.Alternative
--   
--   main = lambdaMain $ handlerS3 `alternative` handlerCustom
--   
--   handlerS3 :: S3Event -> IO ()
--   handlerS3 = _
--   
--   handlerCustom :: Value -> IO ()
--   handlerCustom = _
--   
-- -- When run outside the AWS Lambda environment, the input is read as JSON -- from the command line, and the result of the execution is printed, -- also as JSON, to the standard output. lambdaMain :: (FromJSON event, ToJSON res) => (event -> IO res) -> IO () -- | Utilities for decoding JSON into one of the possible types and -- handling the resulting sum type. module Data.Aeson.Alternative -- | One of the two values that has been parsed from JSON data AlternativeJSON a b -- | Handle either of the two types that have been parsed from JSON alternative :: (a -> r) -> (b -> r) -> AlternativeJSON a b -> r instance (GHC.Show.Show b, GHC.Show.Show a) => GHC.Show.Show (Data.Aeson.Alternative.AlternativeJSON a b) instance (GHC.Classes.Ord b, GHC.Classes.Ord a) => GHC.Classes.Ord (Data.Aeson.Alternative.AlternativeJSON a b) instance (GHC.Classes.Eq b, GHC.Classes.Eq a) => GHC.Classes.Eq (Data.Aeson.Alternative.AlternativeJSON a b) instance (Data.Aeson.Types.FromJSON.FromJSON a, Data.Aeson.Types.FromJSON.FromJSON b) => Data.Aeson.Types.FromJSON.FromJSON (Data.Aeson.Alternative.AlternativeJSON a b)