hal-1.1: A runtime environment for Haskell applications running on AWS Lambda.
LicenseBSD3
Stabilitystable
Safe HaskellSafe-Inferred
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
FromJSON KafkaEvent Source # 
Instance details

Defined in AWS.Lambda.Events.Kafka

ToJSON 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 #

Show KafkaEvent Source # 
Instance details

Defined in AWS.Lambda.Events.Kafka

Eq 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-1.1-IwuGgwGQvpsJOoRlidLUAk" '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
FromJSON EventSource Source # 
Instance details

Defined in AWS.Lambda.Events.Kafka

ToJSON EventSource Source # 
Instance details

Defined in AWS.Lambda.Events.Kafka

Bounded EventSource Source # 
Instance details

Defined in AWS.Lambda.Events.Kafka

Enum 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 #

Show 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

type Rep EventSource Source # 
Instance details

Defined in AWS.Lambda.Events.Kafka

type Rep EventSource = D1 ('MetaData "EventSource" "AWS.Lambda.Events.Kafka" "hal-1.1-IwuGgwGQvpsJOoRlidLUAk" '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
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) #

Functor Record' Source # 
Instance details

Defined in AWS.Lambda.Events.Kafka

Methods

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

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

FromJSON (Record' ByteString) Source #

Decodes base64-encoded keys and values, where present.

Instance details

Defined in AWS.Lambda.Events.Kafka

ToJSON (Record' ByteString) Source #

Encodes keys and values into base64.

Instance details

Defined in AWS.Lambda.Events.Kafka

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 #

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 #

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 #

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
FromJSON Header Source # 
Instance details

Defined in AWS.Lambda.Events.Kafka

ToJSON 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 #

Show Header Source # 
Instance details

Defined in AWS.Lambda.Events.Kafka

Eq Header Source # 
Instance details

Defined in AWS.Lambda.Events.Kafka

Methods

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

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

type Rep Header Source # 
Instance details

Defined in AWS.Lambda.Events.Kafka

type Rep Header = D1 ('MetaData "Header" "AWS.Lambda.Events.Kafka" "hal-1.1-IwuGgwGQvpsJOoRlidLUAk" '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
Generic Timestamp Source # 
Instance details

Defined in AWS.Lambda.Events.Kafka

Associated Types

type Rep Timestamp :: Type -> Type #

Show Timestamp Source # 
Instance details

Defined in AWS.Lambda.Events.Kafka

Eq Timestamp Source # 
Instance details

Defined in AWS.Lambda.Events.Kafka

type Rep Timestamp Source # 
Instance details

Defined in AWS.Lambda.Events.Kafka

type Rep Timestamp = D1 ('MetaData "Timestamp" "AWS.Lambda.Events.Kafka" "hal-1.1-IwuGgwGQvpsJOoRlidLUAk" '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