feral
feral copied to clipboard
Create models for the myriad of AWS Lambda event types
For feral-lambda to be useful for the "zoo" of Lambda types available on AWS, we need to provide models for the various events (aka "triggers") and responses used by each of these lambdas. These will live in the feral-lambda-events
module.
We are currently sourcing them from the Java and JavaScript/TypeScript implementations.
The TypeScript definitions are especially important, because they are the definitive representation of these events as "plain old JavaScript objects" which is isomorphic to their JSON representation. Therefore, our models should match them exactly in name, structure, etc. in order for parsing to work correctly.
For an example of this, see the existing events: https://github.com/typelevel/feral/blob/main/lambda/shared/src/main/scala/feral/lambda/events/
- [ ]
ActiveMQEvent
- [ ]
APIGatewayCustomAuthorizerEvent
- [x]
APIGatewayProxyRequestEvent
https://github.com/typelevel/feral/pull/409 - [x]
APIGatewayProxyResponseEvent
https://github.com/typelevel/feral/pull/409 - [ ]
APIGatewayV2CustomAuthorizerEvent
- [x]
APIGatewayV2HTTPEvent
- [x]
APIGatewayV2HTTPResponse
- [ ]
APIGatewayV2WebSocketEvent
https://github.com/typelevel/feral/pull/476 - [ ]
APIGatewayV2WebSocketResponse
- [ ]
ApplicationLoadBalancerRequestEvent
- [ ]
ApplicationLoadBalancerResponseEvent
- [ ]
AppSyncLambdaAuthorizerEvent
- [ ]
AppSyncLambdaAuthorizerResponse
- [ ]
CloudFormationCustomResourceEvent
- [ ]
CloudFrontEvent
- [ ]
CloudWatchLogsEvent
- [ ]
CodeCommitEvent
- [ ]
CognitoEvent
- [ ]
CognitoUserPoolCreateAuthChallengeEvent
- [ ]
CognitoUserPoolCustomMessageEvent
- [ ]
CognitoUserPoolDefineAuthChallengeEvent
- [ ]
CognitoUserPoolEvent
- [ ]
CognitoUserPoolMigrateUserEvent
- [ ]
CognitoUserPoolPostAuthenticationEvent
- [ ]
CognitoUserPoolPostConfirmationEvent
- [ ]
CognitoUserPoolPreAuthenticationEvent
- [ ]
CognitoUserPoolPreSignUpEvent
- [ ]
CognitoUserPoolPreTokenGenerationEvent
- [ ]
CognitoUserPoolVerifyAuthChallengeResponseEvent
- [ ]
ConfigEvent
- [ ]
ConnectEvent
- [x]
DynamodbEvent
https://github.com/typelevel/feral/pull/68 - [ ]
IoTButtonEvent
- [ ]
KafkaEvent
- [ ]
KinesisAnalyticsFirehoseInputPreprocessingEvent
- [ ]
KinesisAnalyticsInputPreprocessingResponse
- [ ]
KinesisAnalyticsOutputDeliveryEvent
- [ ]
KinesisAnalyticsOutputDeliveryResponse
- [ ]
KinesisAnalyticsStreamsInputPreprocessingEvent
- [x]
KinesisEvent
https://github.com/typelevel/feral/pull/75 - [ ]
KinesisFirehoseEvent
- [ ]
LambdaDestinationEvent
- [ ]
LexEvent
- [ ]
RabbitMQEvent
- [x]
S3BatchEvent
https://github.com/typelevel/feral/pull/231 - [x]
S3BatchResponse
https://github.com/typelevel/feral/pull/231 - [x]
S3Event
https://github.com/typelevel/feral/pull/354 - [ ]
ScheduledEvent
- [ ]
SecretsManagerRotationEvent
- [ ]
SimpleIAMPolicyResponse
- [x]
SNSEvent
https://github.com/typelevel/feral/pull/195 - [x]
SQSEvent
https://github.com/typelevel/feral/pull/58 - [ ] any more?
@armanbilge we talked on discord, for the purposes of project management I'll be looking at the SQS event first.
@bpholt I've again arrived at the opinion that the CloudFormationCustomResourceEvent
should probably join the rest of the events in this module 😅 these are my assumptions:
- Not every event requires its own special lambda (like we have for http4s or CloudFormation). So this justifies the existence of the
feral-lambda-events
module, to host these events. - For consistency/least surprise, if some events are in
feral-lambda-events
, they should all be there :)
I could be wrong about (1). When we figure out how to deploy these things, maybe each type of Lambda will have to be treated differently anyway? I hope not.