hal-0.4.10: A runtime environment for Haskell applications running on AWS Lambda.
LicenseBSD3
Stabilitystable
Safe HaskellNone
LanguageHaskell2010

AWS.Lambda.Events.Kafka

Contents

Description

It is possible to subscribe Lambda functions to Kafka topics. You can subscribe to topics from Amazon Managed Streaming for Kafka (MSK) as well as self-managed Kafka clusters.

Lambda considers Amazon Managed Streaming for Kafka (MSK) to be a different event source type from a self-managed Apache Kafka cluster, but their payloads are very similar. The types in this module are derived from inspecting invocation payloads, and from reading the following links:

Synopsis

Documentation

data KafkaEvent Source #

Represents an event from either Amazon MSK or a self-managed Apache Kafka cluster, as the payloads are very similar.

The ToJSON and FromJSON instances on Record perform base64 conversion for you.

See the AWS documentation for a sample payload.

Constructors

KafkaEvent 

Fields

Instances

Instances details
Eq KafkaEvent Source # 
Instance details

Defined in AWS.Lambda.Events.Kafka

Show KafkaEvent Source # 
Instance details

Defined in AWS.Lambda.Events.Kafka

Generic KafkaEvent Source # 
Instance details

Defined in AWS.Lambda.Events.Kafka

Associated Types

type Rep KafkaEvent :: Type -> Type #

ToJSON KafkaEvent Source # 
Instance details

Defined in AWS.Lambda.Events.Kafka

FromJSON KafkaEvent Source # 
Instance details

Defined in AWS.Lambda.Events.Kafka

type Rep KafkaEvent Source # 
Instance details

Defined in AWS.Lambda.Events.Kafka

type Rep KafkaEvent = D1 ('MetaData "KafkaEvent" "AWS.Lambda.Events.Kafka" "hal-0.4.10-LWrkeryoXTOAPQgDhWLet9" 'False) (C1 ('MetaCons "KafkaEvent" 'PrefixI 'True) ((S1 ('MetaSel ('Just "eventSource") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 EventSource) :*: S1 ('MetaSel ('Just "eventSourceArn") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Maybe Text))) :*: (S1 ('MetaSel ('Just "bootstrapServers") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (NonEmpty Text)) :*: S1 ('MetaSel ('Just "records") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Map Text [Record])))))

data EventSource Source #

Instances

Instances details
Bounded EventSource Source # 
Instance details

Defined in AWS.Lambda.Events.Kafka

Enum EventSource Source # 
Instance details

Defined in AWS.Lambda.Events.Kafka

Eq EventSource Source # 
Instance details

Defined in AWS.Lambda.Events.Kafka

Ord EventSource Source # 
Instance details

Defined in AWS.Lambda.Events.Kafka

Show EventSource Source # 
Instance details

Defined in AWS.Lambda.Events.Kafka

Generic EventSource Source # 
Instance details

Defined in AWS.Lambda.Events.Kafka

Associated Types

type Rep EventSource :: Type -> Type #

ToJSON EventSource Source # 
Instance details

Defined in AWS.Lambda.Events.Kafka

FromJSON EventSource Source # 
Instance details

Defined in AWS.Lambda.Events.Kafka

type Rep EventSource Source # 
Instance details

Defined in AWS.Lambda.Events.Kafka

type Rep EventSource = D1 ('MetaData "EventSource" "AWS.Lambda.Events.Kafka" "hal-0.4.10-LWrkeryoXTOAPQgDhWLet9" 'False) (C1 ('MetaCons "AwsKafka" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "SelfManagedKafka" 'PrefixI 'False) (U1 :: Type -> Type))

type Record = Record' ByteString Source #

Convenience alias: most of the time you will parse the records straight into some app-specific structure.

data Record' a Source #

Records from a Kafka event. This is Traversable, which means you can do things like parse a JSON-encoded payload:

traverse decodeStrict :: FromJSON a => Record -> Maybe (Record' a)

Constructors

Record 

Fields

Instances

Instances details
Functor Record' Source # 
Instance details

Defined in AWS.Lambda.Events.Kafka

Methods

fmap :: (a -> b) -> Record' a -> Record' b #

(<$) :: a -> Record' b -> Record' a #

Foldable Record' Source # 
Instance details

Defined in AWS.Lambda.Events.Kafka

Methods

fold :: Monoid m => Record' m -> m #

foldMap :: Monoid m => (a -> m) -> Record' a -> m #

foldMap' :: Monoid m => (a -> m) -> Record' a -> m #

foldr :: (a -> b -> b) -> b -> Record' a -> b #

foldr' :: (a -> b -> b) -> b -> Record' a -> b #

foldl :: (b -> a -> b) -> b -> Record' a -> b #

foldl' :: (b -> a -> b) -> b -> Record' a -> b #

foldr1 :: (a -> a -> a) -> Record' a -> a #

foldl1 :: (a -> a -> a) -> Record' a -> a #

toList :: Record' a -> [a] #

null :: Record' a -> Bool #

length :: Record' a -> Int #

elem :: Eq a => a -> Record' a -> Bool #

maximum :: Ord a => Record' a -> a #

minimum :: Ord a => Record' a -> a #

sum :: Num a => Record' a -> a #

product :: Num a => Record' a -> a #

Traversable Record' Source # 
Instance details

Defined in AWS.Lambda.Events.Kafka

Methods

traverse :: Applicative f => (a -> f b) -> Record' a -> f (Record' b) #

sequenceA :: Applicative f => Record' (f a) -> f (Record' a) #

mapM :: Monad m => (a -> m b) -> Record' a -> m (Record' b) #

sequence :: Monad m => Record' (m a) -> m (Record' a) #

Eq a => Eq (Record' a) Source # 
Instance details

Defined in AWS.Lambda.Events.Kafka

Methods

(==) :: Record' a -> Record' a -> Bool #

(/=) :: Record' a -> Record' a -> Bool #

Show a => Show (Record' a) Source # 
Instance details

Defined in AWS.Lambda.Events.Kafka

Methods

showsPrec :: Int -> Record' a -> ShowS #

show :: Record' a -> String #

showList :: [Record' a] -> ShowS #

Generic (Record' a) Source # 
Instance details

Defined in AWS.Lambda.Events.Kafka

Associated Types

type Rep (Record' a) :: Type -> Type #

Methods

from :: Record' a -> Rep (Record' a) x #

to :: Rep (Record' a) x -> Record' a #

ToJSON (Record' ByteString) Source #

Encodes keys and values into base64.

Instance details

Defined in AWS.Lambda.Events.Kafka

FromJSON (Record' ByteString) Source #

Decodes base64-encoded keys and values, where present.

Instance details

Defined in AWS.Lambda.Events.Kafka

type Rep (Record' a) Source # 
Instance details

Defined in AWS.Lambda.Events.Kafka

data Header Source #

AWS serialises record headers to JSON as an array of objects. From their docs:

"headers":[{"headerKey":[104, 101, 97, 100, 101, 114, 86, 97, 108, 117, 101]}]

Note:

>>> map chr [104, 101, 97, 100, 101, 114, 86, 97, 108, 117, 101]
"headerValue"

Constructors

Header !Text !ByteString 

Instances

Instances details
Eq Header Source # 
Instance details

Defined in AWS.Lambda.Events.Kafka

Methods

(==) :: Header -> Header -> Bool #

(/=) :: Header -> Header -> Bool #

Show Header Source # 
Instance details

Defined in AWS.Lambda.Events.Kafka

Generic Header Source # 
Instance details

Defined in AWS.Lambda.Events.Kafka

Associated Types

type Rep Header :: Type -> Type #

Methods

from :: Header -> Rep Header x #

to :: Rep Header x -> Header #

ToJSON Header Source # 
Instance details

Defined in AWS.Lambda.Events.Kafka

FromJSON Header Source # 
Instance details

Defined in AWS.Lambda.Events.Kafka

type Rep Header Source # 
Instance details

Defined in AWS.Lambda.Events.Kafka

type Rep Header = D1 ('MetaData "Header" "AWS.Lambda.Events.Kafka" "hal-0.4.10-LWrkeryoXTOAPQgDhWLet9" 'False) (C1 ('MetaCons "Header" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Text) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 ByteString)))

data Timestamp Source #

Instances

Instances details
Eq Timestamp Source # 
Instance details

Defined in AWS.Lambda.Events.Kafka

Show Timestamp Source # 
Instance details

Defined in AWS.Lambda.Events.Kafka

Generic Timestamp Source # 
Instance details

Defined in AWS.Lambda.Events.Kafka

Associated Types

type Rep Timestamp :: Type -> Type #

type Rep Timestamp Source # 
Instance details

Defined in AWS.Lambda.Events.Kafka

type Rep Timestamp = D1 ('MetaData "Timestamp" "AWS.Lambda.Events.Kafka" "hal-0.4.10-LWrkeryoXTOAPQgDhWLet9" 'False) (C1 ('MetaCons "NoTimestampType" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "CreateTime" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 UTCTime)) :+: C1 ('MetaCons "LogAppendTime" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 UTCTime))))

Internal